diff options
author | DongHun Kwak <dh0128.kwak@samsung.com> | 2020-01-20 14:35:37 +0900 |
---|---|---|
committer | DongHun Kwak <dh0128.kwak@samsung.com> | 2020-01-20 14:35:37 +0900 |
commit | fee1878d4e1018e70e29327f6e0616a81dd2e960 (patch) | |
tree | 8be463f44dd53ee94b805561cfe36cbd56091934 | |
parent | b721973fc2c04d3d610851033c52e3c94401e2de (diff) | |
download | cups-upstream/2.2.8.tar.gz cups-upstream/2.2.8.tar.bz2 cups-upstream/2.2.8.zip |
Imported Upstream version 2.2.8upstream/2.2.8
69 files changed, 1639 insertions, 1257 deletions
@@ -1,7 +1,40 @@ -CHANGES - 2.2.7 - 2018-03-22 +CHANGES - 2.2.8 - 2018-06-05 ============================ +Changes in CUPS v2.2.8 +---------------------- + +- Additional changes for the scheduler to substitute default values for invalid + job attributes when running in "relaxed conformance" mode (Issue #5229) +- The `ipptool` program no longer checks for duplicate attributes when running + in list or CSV mode (Issue #5278) +- Fixed builds without PAM (Issue #5283) +- Fixed `lpoptions` man page (Issue #5286) +- The `cupsCreateJob`, `cupsPrintFile2`, and `cupsPrintFiles2` APIs did not use + the supplied HTTP connection (Issue #5288) +- Fixed another crash in the scheduler when adding an IPP Everywhere printer + (Issue #5290) +- Added a workaround for certain web browsers that do not support multiple + authentication schemes in a single response header (Issue #5289) +- Fixed policy limits containing the `All` operation (Issue #5296) +- The scheduler was always restarted after idle-exit with systemd (Issue #5297) +- Added a USB quirks rule for the HP LaserJet P1102 (Issue #5310) +- The mailto notifier did not wait for the welcome message (Issue #5312) +- Fixed a parsing bug in the pstops filter (Issue #5321) +- Documentation updates (Issue #5299, Issue #5301, Issue #5306) +- Localization updates (Issue #5317) +- The scheduler allowed environment variables to be specified in the + `cupsd.conf` file (rdar://37836779, rdar://37836995, rdar://37837252, + rdar://37837581) +- Fax queues did not support pause (p) or wait-for-dialtone (w) characters + (rdar://39212256) +- The scheduler did not validate notify-recipient-uri values properly + (rdar://40068936) +- The IPP parser allowed invalid group tags (rdar://40442124) +- Fixed a parsing bug in the new authentication code. + + Changes in CUPS v2.2.7 ---------------------- @@ -1,4 +1,4 @@ -INSTALL - CUPS v2.2.7 - 2018-03-22 +INSTALL - CUPS v2.2.8 - 2018-06-05 ================================== This file describes how to compile and install CUPS from source code. For more @@ -1,4 +1,4 @@ -README - CUPS v2.2.7 - 2018-03-22 +README - CUPS v2.2.8 - 2018-06-05 ================================= Looking for compile instructions? Read the file `INSTALL.md` instead... diff --git a/backend/ipp.c b/backend/ipp.c index 44ce8d2..61e706e 100644 --- a/backend/ipp.c +++ b/backend/ipp.c @@ -2785,7 +2785,7 @@ new_request( char phone[1024], /* Phone number string */ *ptr, /* Pointer into string */ tel_uri[1024]; /* tel: URI */ - static const char * const allowed = "0123456789#*-+.()"; + static const char * const allowed = "0123456789#*-+.()pw"; /* Allowed characters */ destination = ippNew(); @@ -2798,7 +2798,9 @@ new_request( _httpDecodeURI(phone, keyword, sizeof(phone)); for (ptr = phone; *ptr;) { - if (!strchr(allowed, *ptr)) + if (*ptr == ',') + *ptr = 'p'; + else if (!strchr(allowed, *ptr)) _cups_strcpy(ptr, ptr + 1); else ptr ++; diff --git a/backend/org.cups.usb-quirks b/backend/org.cups.usb-quirks index f0ba5c2..1f1feff 100644 --- a/backend/org.cups.usb-quirks +++ b/backend/org.cups.usb-quirks @@ -281,3 +281,6 @@ # Lexmark Optra E310 (Issue #5259) 0x043d 0x000c no-reattach + +# HP LaserJet P1102 (Issue #5310) +0x03F0 0x002A no-reattach @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for CUPS 2.2.7. +# Generated by GNU Autoconf 2.69 for CUPS 2.2.8. # # Report bugs to <https://github.com/apple/cups/issues>. # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='CUPS' PACKAGE_TARNAME='cups' -PACKAGE_VERSION='2.2.7' -PACKAGE_STRING='CUPS 2.2.7' +PACKAGE_VERSION='2.2.8' +PACKAGE_STRING='CUPS 2.2.8' PACKAGE_BUGREPORT='https://github.com/apple/cups/issues' PACKAGE_URL='https://www.cups.org/' @@ -1482,7 +1482,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures CUPS 2.2.7 to adapt to many kinds of systems. +\`configure' configures CUPS 2.2.8 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1547,7 +1547,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of CUPS 2.2.7:";; + short | recursive ) echo "Configuration of CUPS 2.2.8:";; esac cat <<\_ACEOF @@ -1728,7 +1728,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -CUPS configure 2.2.7 +CUPS configure 2.2.8 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2192,7 +2192,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by CUPS $as_me 2.2.7, which was +It was created by CUPS $as_me 2.2.8, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2667,7 +2667,7 @@ fi ac_config_headers="$ac_config_headers config.h" -CUPS_VERSION="2.2.7" +CUPS_VERSION="2.2.8" CUPS_REVISION="" CUPS_BUILD="cups-$CUPS_VERSION" @@ -10901,7 +10901,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by CUPS $as_me 2.2.7, which was +This file was extended by CUPS $as_me 2.2.8, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10964,7 +10964,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -CUPS config.status 2.2.7 +CUPS config.status 2.2.8 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index ed26daa..438e56c 100644 --- a/configure.ac +++ b/configure.ac @@ -15,7 +15,7 @@ dnl We need at least autoconf 2.60... AC_PREREQ(2.60) dnl Package name and version... -AC_INIT([CUPS], [2.2.7], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/]) +AC_INIT([CUPS], [2.2.8], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/]) sinclude(config-scripts/cups-opsys.m4) sinclude(config-scripts/cups-common.m4) diff --git a/cups/auth.c b/cups/auth.c index 4c38c9b..740b079 100644 --- a/cups/auth.c +++ b/cups/auth.c @@ -1,8 +1,8 @@ /* * Authentication functions for CUPS. * - * Copyright 2007-2016 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2007 by Easy Software Products. * * This file contains Kerberos support code, copyright 2006 by * Jelmer Vernooij. @@ -218,7 +218,7 @@ cupsDoAuthentication( if (!cg->lang_default) cg->lang_default = cupsLangDefault(); - if (cups_auth_param(scheme, "username", default_username, sizeof(default_username))) + if (cups_auth_param(schemedata, "username", default_username, sizeof(default_username))) cupsSetUser(default_username); snprintf(prompt, sizeof(prompt), _cupsLangString(cg->lang_default, _("Password for %s on %s? ")), cupsUser(), http->hostname[0] == '/' ? "localhost" : http->hostname); @@ -620,7 +620,7 @@ cups_auth_find(const char *www_authenticate, /* I - Pointer into WWW-Authenticat * See if this is "Scheme" followed by whitespace or the end of the string. */ - if (!strncmp(www_authenticate, scheme, schemelen) && (isspace(www_authenticate[schemelen] & 255) || !www_authenticate[schemelen])) + if (!strncmp(www_authenticate, scheme, schemelen) && (isspace(www_authenticate[schemelen] & 255) || www_authenticate[schemelen] == ',' || !www_authenticate[schemelen])) { /* * Yes, this is the start of the scheme-specific information... @@ -801,7 +801,7 @@ cups_auth_scheme(const char *www_authenticate, /* I - Pointer into WWW-Authentic * Parse the scheme name or param="value" string... */ - for (sptr = scheme, start = www_authenticate, param = 0; *www_authenticate && !isspace(*www_authenticate & 255); www_authenticate ++) + for (sptr = scheme, start = www_authenticate, param = 0; *www_authenticate && *www_authenticate != ',' && !isspace(*www_authenticate & 255); www_authenticate ++) { if (*www_authenticate == '=') param = 1; diff --git a/cups/cups.h b/cups/cups.h index 3f8d91e..92826d7 100644 --- a/cups/cups.h +++ b/cups/cups.h @@ -47,10 +47,10 @@ extern "C" { * Constants... */ -# define CUPS_VERSION 2.0207 +# define CUPS_VERSION 2.0208 # define CUPS_VERSION_MAJOR 2 # define CUPS_VERSION_MINOR 2 -# define CUPS_VERSION_PATCH 7 +# define CUPS_VERSION_PATCH 8 # define CUPS_BC_FD 3 /* Back-channel file descriptor for diff --git a/cups/http-support.c b/cups/http-support.c index cbee9ab..76c1272 100644 --- a/cups/http-support.c +++ b/cups/http-support.c @@ -1,7 +1,7 @@ /* * HTTP support routines for CUPS. * - * Copyright 2007-2017 by Apple Inc. + * Copyright 2007-2018 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -1032,7 +1032,7 @@ httpSeparateURI( *ptr = '\0'; - if (*uri != ':') + if (*uri != ':' || *scheme == '.' || !*scheme) { *scheme = '\0'; return (HTTP_URI_STATUS_BAD_SCHEME); @@ -1,8 +1,8 @@ /* * Internet Printing Protocol functions for CUPS. * - * Copyright 2007-2017 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products, all rights reserved. + * Copyright © 2007-2018 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 @@ -3089,6 +3089,13 @@ ippReadIO(void *src, /* I - Data source */ ipp->state = IPP_STATE_DATA; break; } + else if (tag == IPP_TAG_ZERO || (tag == IPP_TAG_OPERATION && ipp->curtag != IPP_TAG_ZERO)) + { + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid group tag."), 1); + DEBUG_printf(("1ippReadIO: bad tag 0x%02x.", tag)); + _cupsBufferRelease((char *)buffer); + return (IPP_STATE_ERROR); + } else if (tag < IPP_TAG_UNSUPPORTED_VALUE) { /* @@ -4812,21 +4819,6 @@ ippValidateAttribute( ipp_attribute_t *colattr; /* Collection attribute */ regex_t re; /* Regular expression */ ipp_uchar_t *date; /* Current date value */ - static const char * const uri_status_strings[] = - { /* URI status strings */ - "URI too large", - "Bad arguments to function", - "Bad resource in URI", - "Bad port number in URI", - "Bad hostname/address in URI", - "Bad username in URI", - "Bad scheme in URI", - "Bad/empty URI", - "OK", - "Missing scheme in URI", - "Unknown scheme in URI", - "Missing resource in URI" - }; /* @@ -5101,14 +5093,18 @@ ippValidateAttribute( } else if (*ptr & 0x80) break; + else if ((*ptr < ' ' && *ptr != '\n' && *ptr != '\r' && *ptr != '\t') || *ptr == 0x7f) + break; } - if (*ptr) + if (*ptr < ' ' || *ptr == 0x7f) { - ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, - _("\"%s\": Bad text value \"%s\" - bad UTF-8 " - "sequence (RFC 8011 section 5.1.2)."), attr->name, - attr->values[i].string.text); + ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section 8.3)."), attr->name, attr->values[i].string.text); + return (0); + } + else if (*ptr) + { + ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.2)."), attr->name, attr->values[i].string.text); return (0); } @@ -5159,14 +5155,18 @@ ippValidateAttribute( } else if (*ptr & 0x80) break; + else if (*ptr < ' ' || *ptr == 0x7f) + break; } - if (*ptr) + if (*ptr < ' ' || *ptr == 0x7f) { - ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, - _("\"%s\": Bad name value \"%s\" - bad UTF-8 " - "sequence (RFC 8011 section 5.1.3)."), attr->name, - attr->values[i].string.text); + ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section 8.1)."), attr->name, attr->values[i].string.text); + return (0); + } + else if (*ptr) + { + ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.3)."), attr->name, attr->values[i].string.text); return (0); } @@ -5223,12 +5223,7 @@ ippValidateAttribute( if (uri_status < HTTP_URI_STATUS_OK) { - ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, - _("\"%s\": Bad URI value \"%s\" - %s " - "(RFC 8011 section 5.1.6)."), attr->name, - attr->values[i].string.text, - uri_status_strings[uri_status - - HTTP_URI_STATUS_OVERFLOW]); + ipp_set_error(IPP_STATUS_ERROR_BAD_REQUEST, _("\"%s\": Bad URI value \"%s\" - %s (RFC 8011 section 5.1.6)."), attr->name, attr->values[i].string.text, httpURIStatusString(uri_status)); return (0); } diff --git a/cups/testhttp.c b/cups/testhttp.c index 376d71f..fa8356c 100644 --- a/cups/testhttp.c +++ b/cups/testhttp.c @@ -1,8 +1,8 @@ /* * HTTP test program for CUPS. * - * Copyright 2007-2014 by Apple Inc. - * Copyright 1997-2006 by Easy Software Products. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2006 by Easy Software Products. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright @@ -120,6 +120,9 @@ static uri_test_t uri_tests[] = /* URI test data */ { HTTP_URI_STATUS_OK, "ipp://%22%23%2F%3A%3C%3E%3F%40%5B%5C%5D%5E%60%7B%7C%7D/", "ipp", "", "\"#/:<>?@[\\]^`{|}", "/", 631, 0, HTTP_URI_CODING_MOST }, + { HTTP_URI_STATUS_UNKNOWN_SCHEME, "smb://server/Some%20Printer", + "smb", "", "server", "/Some Printer", 0, 0, + HTTP_URI_CODING_ALL }, /* Missing scheme */ { HTTP_URI_STATUS_MISSING_SCHEME, "/path/to/file/index.html", @@ -148,6 +151,9 @@ static uri_test_t uri_tests[] = /* URI test data */ HTTP_URI_CODING_MOST }, /* Bad scheme */ + { HTTP_URI_STATUS_BAD_SCHEME, "://server/ipp", + "", "", "", "", 0, 0, + HTTP_URI_CODING_MOST }, { HTTP_URI_STATUS_BAD_SCHEME, "bad_scheme://server/resource", "", "", "", "", 0, 0, HTTP_URI_CODING_MOST }, @@ -180,6 +186,9 @@ static uri_test_t uri_tests[] = /* URI test data */ HTTP_URI_CODING_MOST }, /* Bad resource */ + { HTTP_URI_STATUS_BAD_RESOURCE, "mailto:\r\nbla", + "mailto", "", "", "", 0, 0, + HTTP_URI_CODING_MOST }, { HTTP_URI_STATUS_BAD_RESOURCE, "http://server/index.html%", "http", "", "server", "", 80, 0, HTTP_URI_CODING_MOST }, diff --git a/cups/tls-darwin.c b/cups/tls-darwin.c index 80cd660..9aa316b 100644 --- a/cups/tls-darwin.c +++ b/cups/tls-darwin.c @@ -1897,7 +1897,9 @@ http_cdsa_copy_server( DEBUG_printf(("4http_cdsa_copy_server: Returning %p.", (void *)certificates)); return (certificates); + #else + (void)common_name; if (!tls_selfsigned) return (NULL); diff --git a/cups/util.c b/cups/util.c index 2f5ebdf..e800449 100644 --- a/cups/util.c +++ b/cups/util.c @@ -1,8 +1,8 @@ /* * Printing utilities for CUPS. * - * Copyright 2007-2017 by Apple Inc. - * Copyright 1997-2006 by Easy Software Products. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2006 by Easy Software Products. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright @@ -28,19 +28,6 @@ /* - * Enumeration data and callback... - */ - -typedef struct _cups_createdata_s -{ - const char *name; /* Destination name */ - cups_dest_t *dest; /* Matching destination */ -} _cups_createdata_t; - -static int cups_create_cb(_cups_createdata_t *data, unsigned flags, cups_dest_t *dest); - - -/* * 'cupsCancelJob()' - Cancel a print job on the default server. * * Pass @code CUPS_JOBID_ALL@ to cancel all jobs or @code CUPS_JOBID_CURRENT@ @@ -174,7 +161,7 @@ cupsCreateJob( { int job_id = 0; /* job-id value */ ipp_status_t status; /* Create-Job status */ - _cups_createdata_t data; /* Enumeration data */ + cups_dest_t *dest; /* Destination */ cups_dinfo_t *info; /* Destination information */ @@ -194,12 +181,7 @@ cupsCreateJob( * Lookup the destination... */ - data.name = name; - data.dest = NULL; - - cupsEnumDests(0, 1000, NULL, 0, 0, (cups_dest_cb_t)cups_create_cb, &data); - - if (!data.dest) + if ((dest = cupsGetNamedDest(http, name, NULL)) == NULL) { DEBUG_puts("1cupsCreateJob: Destination not found."); _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0); @@ -211,18 +193,18 @@ cupsCreateJob( */ DEBUG_puts("1cupsCreateJob: Querying destination info."); - if ((info = cupsCopyDestInfo(http, data.dest)) == NULL) + if ((info = cupsCopyDestInfo(http, dest)) == NULL) { DEBUG_puts("1cupsCreateJob: Query failed."); - cupsFreeDests(1, data.dest); + cupsFreeDests(1, dest); return (0); } - status = cupsCreateDestJob(http, data.dest, info, &job_id, title, num_options, options); + status = cupsCreateDestJob(http, dest, info, &job_id, title, num_options, options); DEBUG_printf(("1cupsCreateJob: cupsCreateDestJob returned %04x (%s)", status, ippErrorString(status))); cupsFreeDestInfo(info); - cupsFreeDests(1, data.dest); + cupsFreeDests(1, dest); /* * Return the job... @@ -974,25 +956,3 @@ cupsStartDocument( return (status); } - -/* - * 'cups_create_cb()' - Find the destination for printing. - */ - -static int /* O - 0 on match */ -cups_create_cb( - _cups_createdata_t *data, /* I - Data from cupsCreateJob call */ - unsigned flags, /* I - Enumeration flags */ - cups_dest_t *dest) /* I - Destination */ -{ - DEBUG_printf(("2cups_create_cb(data=%p(%s), flags=%08x, dest=%p(%s))", (void *)data, data->name, flags, (void *)dest, dest->name)); - - (void)flags; - - if (dest->instance || strcasecmp(data->name, dest->name)) - return (1); - - cupsCopyDest(dest, 0, &data->dest); - - return (0); -} diff --git a/doc/help/cupspm.epub b/doc/help/cupspm.epub Binary files differindex cbffada..a73e5f6 100644 --- a/doc/help/cupspm.epub +++ b/doc/help/cupspm.epub diff --git a/doc/help/man-cupsd.conf.html b/doc/help/man-cupsd.conf.html index fe4902d..9438953 100644 --- a/doc/help/man-cupsd.conf.html +++ b/doc/help/man-cupsd.conf.html @@ -88,10 +88,10 @@ A value of 0 causes the update to happen as soon as possible, typically within a The default value is "30". <dt><a name="ErrorPolicy"></a><b>ErrorPolicy abort-job</b> <dd style="margin-left: 5.0em">Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer. +<dt><b>ErrorPolicy retry-current-job</b> +<dd style="margin-left: 5.0em">Specifies that a failed print job should be retried immediately unless otherwise specified for the printer. <dt><b>ErrorPolicy retry-job</b> <dd style="margin-left: 5.0em">Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer. -<dt><b>ErrorPolicy retry-this-job</b> -<dd style="margin-left: 5.0em">Specifies that a failed print job should be retried immediately unless otherwise specified for the printer. <dt><b>ErrorPolicy stop-printer</b> <dd style="margin-left: 5.0em">Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default. <dt><a name="FilterLimit"></a><b>FilterLimit </b><i>limit</i> @@ -605,7 +605,7 @@ Require authentication for accesses from outside the 10. network: <a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a> CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>) <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2> -Copyright © 2007-2017 by Apple Inc. +Copyright © 2007-2018 by Apple Inc. </body> </html> diff --git a/doc/help/man-ippfind.html b/doc/help/man-ippfind.html index 41445fe..2e2ebb1 100644 --- a/doc/help/man-ippfind.html +++ b/doc/help/man-ippfind.html @@ -70,6 +70,9 @@ The following expressions are supported: The result is true if the URI is accessible, false otherwise. <dt><b>--local</b> <dd style="margin-left: 5.0em">True if the service is local to this computer. +<dt><b>-N </b><i>name</i> +<dd style="margin-left: 5.0em"><dt><b>--literal-name </b><i>name</i> +<dd style="margin-left: 5.0em">True if the service instance name matches the given name. <dt><b>-n </b><i>regex</i> <dd style="margin-left: 5.0em"><dt><b>--name </b><i>regex</i> <dd style="margin-left: 5.0em">True if the service instance name matches the given regular expression. @@ -198,7 +201,7 @@ Similarly, to send a PostScript test page to every PostScript printer, run: <h2 class="title"><a name="SEE_ALSO">See Also</a></h2> <a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(1)</a> <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2> -Copyright © 2013-2015 by Apple Inc. +Copyright © 2013-2018 by Apple Inc. </body> </html> diff --git a/doc/help/man-lpoptions.html b/doc/help/man-lpoptions.html index e4eaf71..e8213c4 100644 --- a/doc/help/man-lpoptions.html +++ b/doc/help/man-lpoptions.html @@ -14,9 +14,6 @@ lpoptions - display or set printer options and defaults [ <b>-E</b> ] [ -<b>-U</b> -<i>username</i> -] [ <b>-h </b><i>server</i>[<b>:</b><i>port</i>] ] <b>-d </b><i>destination</i>[<b>/</b><i>instance</i>] @@ -28,9 +25,6 @@ lpoptions - display or set printer options and defaults [ <b>-E</b> ] [ -<b>-U</b> -<i>username</i> -] [ <b>-h </b><i>server</i>[<b>:</b><i>port</i>] ] [ <b>-p </b><i>destination</i>[<b>/</b><i>instance</i>] @@ -41,9 +35,6 @@ lpoptions - display or set printer options and defaults [ <b>-E</b> ] [ -<b>-U</b> -<i>username</i> -] [ <b>-h </b><i>server</i>[<b>:</b><i>port</i>] ] [ <b>-p </b><i>destination</i>[<b>/</b><i>instance</i>] @@ -55,9 +46,6 @@ lpoptions - display or set printer options and defaults [ <b>-E</b> ] [ -<b>-U</b> -<i>username</i> -] [ <b>-h </b><i>server</i>[<b>:</b><i>port</i>] ] <b>-x </b><i>destination</i>[<b>/</b><i>instance</i>] @@ -78,8 +66,6 @@ Otherwise, the per-user defaults are managed in the <i>~/.cups/lpoptions</i> fil <dl class="man"> <dt><b>-E</b> <dd style="margin-left: 5.0em">Enables encryption when communicating with the CUPS server. -<dt><b>-U </b><i>username</i> -<dd style="margin-left: 5.0em">Uses an alternate username. <dt><b>-d </b><i>destination</i>[<b>/</b><i>instance</i>] <dd style="margin-left: 5.0em">Sets the user default printer to <i>destination</i>. If <i>instance</i> is supplied then that particular instance is used. @@ -119,7 +105,7 @@ The <b>lpoptions</b> command is unique to CUPS. <a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a> CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>) <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2> -Copyright © 2007-2017 by Apple Inc. +Copyright © 2007-2018 by Apple Inc. </body> </html> diff --git a/doc/help/options.html b/doc/help/options.html index 044cdb6..9d612fc 100644 --- a/doc/help/options.html +++ b/doc/help/options.html @@ -546,24 +546,5 @@ lpr -o mirror filename <P>This is typically used when printing on T-shirt transfer media or sometimes on transparencies.</P> -<H3><A NAME="RAW">Raw or Unfiltered Output</A></H3> - -<P>The <CODE>-o raw</CODE> option allows you to send files -directly to a printer without filtering. This is sometimes -required when printing from applications that provide their own -"printer drivers" for your printer:</P> - -<PRE CLASS="command"> -lp -o raw filename -lpr -o raw filename -</PRE> - -<P>The <CODE>-l</CODE> option can also be used with the -<B>lpr</B> command to send files directly to a printer:</P> - -<PRE CLASS="command"> -lpr -l filename -</PRE> - </BODY> </HTML> diff --git a/doc/help/sharing.html b/doc/help/sharing.html index 9763da7..a46f393 100644 --- a/doc/help/sharing.html +++ b/doc/help/sharing.html @@ -99,7 +99,7 @@ each remote queue by hand using the <a href="man-lpadmin.html">lpadmin(8)</a> command:</p> <pre class='command'> -lpadmin -p <em>printer</em> -E -v ipp://<em>server</em>/printers/<em>printer</em> +lpadmin -p <em>printer</em> -E -v ipp://<em>server</em>/printers/<em>printer</em> -m everywhere </pre> <p>The <var>printer</var> name is the name of the printer on the server machine. diff --git a/doc/help/spec-command.html b/doc/help/spec-command.html index ac33ce4..4bda6ae 100644 --- a/doc/help/spec-command.html +++ b/doc/help/spec-command.html @@ -10,7 +10,7 @@ <!-- CUPS command file format specification for CUPS. - Copyright 2007-2011 by Apple Inc. + Copyright 2007-2018 by Apple Inc. Copyright 1997-2006 by Easy Software Products. These coded instructions, statements, and computer programs are the @@ -43,7 +43,7 @@ files by checking the <code>printer-type</code> attribute for the commands separated by spaces, for example:</p> <pre class='command'> -*cupsCommand: "AutoConfigure Clean PrintSelfTestPage ReportLevels ReportStatus" +*cupsCommands: "AutoConfigure Clean PrintSelfTestPage ReportLevels ReportStatus" </pre> <p>If no <code>cupsCommands</code> keyword is provided, the command filter diff --git a/doc/help/spec-ppd.html b/doc/help/spec-ppd.html index 06f5769..1c43640 100644 --- a/doc/help/spec-ppd.html +++ b/doc/help/spec-ppd.html @@ -1758,7 +1758,20 @@ http://www.vendor.com/help" <p class='summary'>*cupsJobPassword: "format"</p> -<p>This keyword defines the format of the job-password IPP attribute, if supported by the printer. Currently the only supported format is "1111" indicating a 4-digit PIN code.</p> +<p>This keyword defines the format of the "job-password" IPP attribute, if supported by the printer. The following format characters are supported:</p> + +<ul> + <li><code>1</code>: US ASCII digits.</li> + <li><code>A</code>: US ASCII letters.</li> + <li><code>C</code>: US ASCII letters, numbers, and punctuation.</li> + <li><code>.</code>: Any US ASCII printable character (0x20 to 0x7e).</li> + <li><code>N</code>: Any Unicode digit character.</li> + <li><code>U</code>: Any Unicode letter character.</li> + <li><code>*</code>: Any Unicode (utf-8) character.</li> +</ul> + +<p>The format characters are repeated to indicate the length of the +password string. For example, "1111" indicated a 4-digit US ASCII PIN code.</p> <p>Example:</p> @@ -2042,7 +2055,7 @@ PPD file extensions was used. Currently it must be the string <h2 class='title'><a name='MACOSX'>macOS Attributes</a></h2> -<h3><span class='info'>macOS 10.3</span><a name='APDialogExtension'>APDialogExtension</a></h3> +<h3><span class='info'>Deprecated</span><a name='APDialogExtension'>APDialogExtension</a></h3> <p class='summary'>*APDialogExtension: "/Library/Printers/vendor/filename.plugin"</p> @@ -2054,9 +2067,13 @@ plug-ins.</p> <blockquote><b>Note:</b> -<p>Starting with macOS 10.5, each plug-in must be compiled "4-way fat" -(32-bit and 64-bit for both PowerPC and Intel) with garbage collection enabled -in order to be usable with all applications.</p> +<p>Since 2010, AirPrint has enabled the printing of full quality photos and +documents from the Mac without requiring driver software. Starting with macOS +10.12, system level security features prevent print dialog plug-ins from being +loaded into applications that have enabled the library validation security +feature. As of macOS 10.14 the <code>APDialogExtension</code> attribute used to +create macOS print drivers is deprecated. All new printer models should support +AirPrint moving forward.</p> </blockquote> diff --git a/filter/pstops.c b/filter/pstops.c index 072356e..65a9db9 100644 --- a/filter/pstops.c +++ b/filter/pstops.c @@ -1,8 +1,8 @@ /* * PostScript filter for CUPS. * - * Copyright 2007-2015 by Apple Inc. - * Copyright 1993-2007 by Easy Software Products. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1993-2007 by Easy Software Products. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright @@ -2235,7 +2235,7 @@ parse_text(const char *start, /* I - Start of text value */ bufptr = buffer; bufend = buffer + bufsize - 1; - while (bufptr < bufend) + while (*start && bufptr < bufend) { if (isspace(*start & 255) && !level) break; diff --git a/filter/spec-ppd.shtml b/filter/spec-ppd.shtml index 3b75430..53494ad 100644 --- a/filter/spec-ppd.shtml +++ b/filter/spec-ppd.shtml @@ -1297,7 +1297,20 @@ http://www.vendor.com/help" <p class='summary'>*cupsJobPassword: "format"</p> -<p>This keyword defines the format of the job-password IPP attribute, if supported by the printer. Currently the only supported format is "1111" indicating a 4-digit PIN code.</p> +<p>This keyword defines the format of the "job-password" IPP attribute, if supported by the printer. The following format characters are supported:</p> + +<ul> + <li><code>1</code>: US ASCII digits.</li> + <li><code>A</code>: US ASCII letters.</li> + <li><code>C</code>: US ASCII letters, numbers, and punctuation.</li> + <li><code>.</code>: Any US ASCII printable character (0x20 to 0x7e).</li> + <li><code>N</code>: Any Unicode digit character.</li> + <li><code>U</code>: Any Unicode letter character.</li> + <li><code>*</code>: Any Unicode (utf-8) character.</li> +</ul> + +<p>The format characters are repeated to indicate the length of the +password string. For example, "1111" indicated a 4-digit US ASCII PIN code.</p> <p>Example:</p> @@ -1581,7 +1594,7 @@ PPD file extensions was used. Currently it must be the string <h2 class='title'><a name='MACOSX'>macOS Attributes</a></h2> -<h3><span class='info'>macOS 10.3</span><a name='APDialogExtension'>APDialogExtension</a></h3> +<h3><span class='info'>Deprecated</span><a name='APDialogExtension'>APDialogExtension</a></h3> <p class='summary'>*APDialogExtension: "/Library/Printers/vendor/filename.plugin"</p> @@ -1593,9 +1606,13 @@ plug-ins.</p> <blockquote><b>Note:</b> -<p>Starting with macOS 10.5, each plug-in must be compiled "4-way fat" -(32-bit and 64-bit for both PowerPC and Intel) with garbage collection enabled -in order to be usable with all applications.</p> +<p>Since 2010, AirPrint has enabled the printing of full quality photos and +documents from the Mac without requiring driver software. Starting with macOS +10.12, system level security features prevent print dialog plug-ins from being +loaded into applications that have enabled the library validation security +feature. As of macOS 10.14 the <code>APDialogExtension</code> attribute used to +create macOS print drivers is deprecated. All new printer models should support +AirPrint moving forward.</p> </blockquote> diff --git a/locale/cups.pot b/locale/cups.pot index f14d536..9bfe18c 100644 --- a/locale/cups.pot +++ b/locale/cups.pot @@ -26,9 +26,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: CUPS 2.2.7\n" +"Project-Id-Version: CUPS 2.2.8\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -968,11 +968,11 @@ msgstr "" msgid " Warning: obsolete DSC version %.1f in file." msgstr "" -#: test/ippfind.c:2794 +#: test/ippfind.c:2845 msgid " ! expression Unary NOT of expression." msgstr "" -#: test/ippfind.c:2793 +#: test/ippfind.c:2844 msgid " ( expressions ) Group expressions." msgstr "" @@ -1004,17 +1004,17 @@ msgstr "" msgid " --crlf End lines with CR + LF (Windows)." msgstr "" -#: test/ippfind.c:2775 +#: test/ippfind.c:2826 msgid " --domain regex Match domain to regular expression." msgstr "" -#: test/ippfind.c:2776 +#: test/ippfind.c:2827 msgid "" " --exec utility [argument ...] ;\n" " Execute program if true." msgstr "" -#: test/ippfind.c:2796 +#: test/ippfind.c:2847 msgid " --false Always false." msgstr "" @@ -1022,11 +1022,11 @@ msgstr "" msgid " --help Show help." msgstr "" -#: test/ippfind.c:2758 +#: test/ippfind.c:2809 msgid " --help Show this help." msgstr "" -#: test/ippfind.c:2778 +#: test/ippfind.c:2829 msgid " --host regex Match hostname to regular expression." msgstr "" @@ -1038,43 +1038,43 @@ msgstr "" msgid " --list-filters List filters that will be used." msgstr "" -#: test/ippfind.c:2780 +#: test/ippfind.c:2831 msgid " --local True if service is local." msgstr "" -#: test/ippfind.c:2779 +#: test/ippfind.c:2830 msgid " --ls List attributes." msgstr "" -#: test/ippfind.c:2781 +#: test/ippfind.c:2832 msgid " --name regex Match service name to regular expression." msgstr "" -#: test/ippfind.c:2795 +#: test/ippfind.c:2846 msgid " --not expression Unary NOT of expression." msgstr "" -#: test/ippfind.c:2782 +#: test/ippfind.c:2833 msgid " --path regex Match resource path to regular expression." msgstr "" -#: test/ippfind.c:2783 +#: test/ippfind.c:2834 msgid " --port number[-number] Match port to number or range." msgstr "" -#: test/ippfind.c:2784 +#: test/ippfind.c:2835 msgid " --print Print URI if true." msgstr "" -#: test/ippfind.c:2785 +#: test/ippfind.c:2836 msgid " --print-name Print service name if true." msgstr "" -#: test/ippfind.c:2786 +#: test/ippfind.c:2837 msgid " --quiet Quietly report match via exit code." msgstr "" -#: test/ippfind.c:2787 +#: test/ippfind.c:2838 msgid " --remote True if service is remote." msgstr "" @@ -1084,23 +1084,23 @@ msgid "" " Stop tests after a failed INCLUDE." msgstr "" -#: test/ippfind.c:2797 +#: test/ippfind.c:2848 msgid " --true Always true." msgstr "" -#: test/ippfind.c:2788 +#: test/ippfind.c:2839 msgid " --txt key True if the TXT record contains the key." msgstr "" -#: test/ippfind.c:2789 +#: test/ippfind.c:2840 msgid " --txt-* regex Match TXT record key to regular expression." msgstr "" -#: test/ippfind.c:2790 +#: test/ippfind.c:2841 msgid " --uri regex Match URI to regular expression." msgstr "" -#: test/ippfind.c:2759 +#: test/ippfind.c:2810 msgid " --version Show program version." msgstr "" @@ -1108,11 +1108,11 @@ msgstr "" msgid " --version Show version." msgstr "" -#: test/ippfind.c:2752 test/ipptool.c:5068 +#: test/ippfind.c:2803 test/ipptool.c:5068 msgid " -4 Connect using IPv4." msgstr "" -#: test/ippfind.c:2753 test/ipptool.c:5069 +#: test/ippfind.c:2804 test/ipptool.c:5069 msgid " -6 Connect using IPv6." msgstr "" @@ -1168,7 +1168,7 @@ msgstr "" msgid " -P filename.ppd Set PPD file." msgstr "" -#: test/ippfind.c:2762 +#: test/ippfind.c:2813 msgid " -P number[-number] Match port to number or range." msgstr "" @@ -1180,7 +1180,7 @@ msgstr "" msgid " -S Test with encryption using HTTPS." msgstr "" -#: test/ippfind.c:2754 +#: test/ippfind.c:2805 msgid " -T seconds Set the browse timeout in seconds." msgstr "" @@ -1192,7 +1192,7 @@ msgstr "" msgid " -U username Specify username." msgstr "" -#: test/ippfind.c:2756 test/ipptool.c:5078 +#: test/ippfind.c:2807 test/ipptool.c:5078 msgid " -V version Set default IPP version." msgstr "" @@ -1236,7 +1236,7 @@ msgstr "" msgid " -d printer Use the named printer." msgstr "" -#: test/ippfind.c:2763 +#: test/ippfind.c:2814 msgid " -d regex Match domain to regular expression." msgstr "" @@ -1260,7 +1260,7 @@ msgstr "" msgid " -h Validate HTTP response headers." msgstr "" -#: test/ippfind.c:2764 +#: test/ippfind.c:2815 msgid " -h regex Match hostname to regular expression." msgstr "" @@ -1280,7 +1280,7 @@ msgstr "" msgid " -j job-id[,N] Filter file N from the specified job (default is file 1)." msgstr "" -#: test/ippfind.c:2765 +#: test/ippfind.c:2816 msgid " -l List attributes." msgstr "" @@ -1312,7 +1312,7 @@ msgstr "" msgid " -n count Repeat the last file the given number of times." msgstr "" -#: test/ippfind.c:2766 +#: test/ippfind.c:2817 msgid " -n regex Match service name to regular expression." msgstr "" @@ -1328,7 +1328,7 @@ msgstr "" msgid " -o name=value Set option(s)." msgstr "" -#: test/ippfind.c:2767 +#: test/ippfind.c:2818 msgid " -p Print URI if true." msgstr "" @@ -1336,7 +1336,7 @@ msgstr "" msgid " -p filename.ppd Set PPD file." msgstr "" -#: test/ippfind.c:2768 +#: test/ippfind.c:2819 msgid " -q Quietly report match via exit code." msgstr "" @@ -1344,7 +1344,7 @@ msgstr "" msgid " -q Run silently." msgstr "" -#: test/ippfind.c:2769 +#: test/ippfind.c:2820 msgid " -r True if service is remote." msgstr "" @@ -1352,7 +1352,7 @@ msgstr "" msgid " -r Use 'relaxed' open mode." msgstr "" -#: test/ippfind.c:2770 +#: test/ippfind.c:2821 msgid " -s Print service name if true." msgstr "" @@ -1372,7 +1372,7 @@ msgstr "" msgid " -t Test the configuration file." msgstr "" -#: test/ippfind.c:2771 +#: test/ippfind.c:2822 msgid " -t key True if the TXT record contains the key." msgstr "" @@ -1384,7 +1384,7 @@ msgstr "" msgid " -u Remove the PPD file when finished." msgstr "" -#: test/ippfind.c:2772 +#: test/ippfind.c:2823 msgid " -u regex Match URI to regular expression." msgstr "" @@ -1397,7 +1397,7 @@ msgstr "" msgid " -vv Be very verbose." msgstr "" -#: test/ippfind.c:2773 +#: test/ippfind.c:2824 msgid "" " -x utility [argument ...] ;\n" " Execute program if true." @@ -1407,89 +1407,89 @@ msgstr "" msgid " -z Compress PPD files using GNU zip." msgstr "" -#: test/ippfind.c:2816 +#: test/ippfind.c:2867 msgid " IPPFIND_SERVICE_DOMAIN Domain name" msgstr "" -#: test/ippfind.c:2817 +#: test/ippfind.c:2868 msgid "" " IPPFIND_SERVICE_HOSTNAME\n" " Fully-qualified domain name" msgstr "" -#: test/ippfind.c:2819 +#: test/ippfind.c:2870 msgid " IPPFIND_SERVICE_NAME Service instance name" msgstr "" -#: test/ippfind.c:2820 +#: test/ippfind.c:2871 msgid " IPPFIND_SERVICE_PORT Port number" msgstr "" -#: test/ippfind.c:2821 +#: test/ippfind.c:2872 msgid " IPPFIND_SERVICE_REGTYPE DNS-SD registration type" msgstr "" -#: test/ippfind.c:2822 +#: test/ippfind.c:2873 msgid " IPPFIND_SERVICE_SCHEME URI scheme" msgstr "" -#: test/ippfind.c:2823 +#: test/ippfind.c:2874 msgid " IPPFIND_SERVICE_URI URI" msgstr "" -#: test/ippfind.c:2824 +#: test/ippfind.c:2875 msgid " IPPFIND_TXT_* Value of TXT record key" msgstr "" -#: test/ippfind.c:2799 +#: test/ippfind.c:2850 msgid "" " expression --and expression\n" " Logical AND." msgstr "" -#: test/ippfind.c:2801 +#: test/ippfind.c:2852 msgid "" " expression --or expression\n" " Logical OR." msgstr "" -#: test/ippfind.c:2798 +#: test/ippfind.c:2849 msgid " expression expression Logical AND." msgstr "" -#: test/ippfind.c:2806 +#: test/ippfind.c:2857 msgid " {service_domain} Domain name" msgstr "" -#: test/ippfind.c:2807 +#: test/ippfind.c:2858 msgid " {service_hostname} Fully-qualified domain name" msgstr "" -#: test/ippfind.c:2808 +#: test/ippfind.c:2859 msgid " {service_name} Service instance name" msgstr "" -#: test/ippfind.c:2809 +#: test/ippfind.c:2860 msgid " {service_port} Port number" msgstr "" -#: test/ippfind.c:2810 +#: test/ippfind.c:2861 msgid " {service_regtype} DNS-SD registration type" msgstr "" -#: test/ippfind.c:2811 +#: test/ippfind.c:2862 msgid " {service_scheme} URI scheme" msgstr "" -#: test/ippfind.c:2812 +#: test/ippfind.c:2863 msgid " {service_uri} URI" msgstr "" -#: test/ippfind.c:2813 +#: test/ippfind.c:2864 msgid " {txt_*} Value of TXT record key" msgstr "" -#: test/ippfind.c:2805 +#: test/ippfind.c:2856 msgid " {} URI" msgstr "" @@ -1555,87 +1555,87 @@ msgstr "" msgid " PASS" msgstr "" -#: cups/ipp.c:5227 +#: cups/ipp.c:5226 #, c-format msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 8011 section 5.1.6)." msgstr "" -#: cups/ipp.c:5238 +#: cups/ipp.c:5233 #, c-format msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 8011 section 5.1.6)." msgstr "" -#: cups/ipp.c:4858 +#: cups/ipp.c:4850 #, c-format msgid "\"%s\": Bad attribute name - bad length %d (RFC 8011 section 5.1.4)." msgstr "" -#: cups/ipp.c:4850 +#: cups/ipp.c:4842 #, c-format msgid "\"%s\": Bad attribute name - invalid character (RFC 8011 section 5.1.4)." msgstr "" -#: cups/ipp.c:4876 +#: cups/ipp.c:4868 #, c-format msgid "\"%s\": Bad boolen value %d (RFC 8011 section 5.1.21)." msgstr "" -#: cups/ipp.c:5290 +#: cups/ipp.c:5285 #, c-format msgid "\"%s\": Bad charset value \"%s\" - bad characters (RFC 8011 section 5.1.8)." msgstr "" -#: cups/ipp.c:5299 +#: cups/ipp.c:5294 #, c-format msgid "\"%s\": Bad charset value \"%s\" - bad length %d (RFC 8011 section 5.1.8)." msgstr "" -#: cups/ipp.c:4976 +#: cups/ipp.c:4968 #, c-format msgid "\"%s\": Bad dateTime UTC hours %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4984 +#: cups/ipp.c:4976 #, c-format msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4968 +#: cups/ipp.c:4960 #, c-format msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4928 +#: cups/ipp.c:4920 #, c-format msgid "\"%s\": Bad dateTime day %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4960 +#: cups/ipp.c:4952 #, c-format msgid "\"%s\": Bad dateTime deciseconds %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4936 +#: cups/ipp.c:4928 #, c-format msgid "\"%s\": Bad dateTime hours %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4944 +#: cups/ipp.c:4936 #, c-format msgid "\"%s\": Bad dateTime minutes %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4920 +#: cups/ipp.c:4912 #, c-format msgid "\"%s\": Bad dateTime month %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4952 +#: cups/ipp.c:4944 #, c-format msgid "\"%s\": Bad dateTime seconds %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4890 +#: cups/ipp.c:4882 #, c-format msgid "\"%s\": Bad enum value %d - out of range (RFC 8011 section 5.1.5)." msgstr "" @@ -1650,81 +1650,99 @@ msgstr "" msgid "\"%s\": Bad keyword value \"%s\" - invalid character (RFC 8011 section 5.1.4)." msgstr "" -#: cups/ipp.c:5399 +#: cups/ipp.c:5394 #, c-format msgid "\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 8011 section 5.1.10)." msgstr "" -#: cups/ipp.c:5409 +#: cups/ipp.c:5404 #, c-format msgid "\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 8011 section 5.1.10)." msgstr "" -#: cups/ipp.c:5167 +#: cups/ipp.c:5169 #, c-format msgid "\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.3)." msgstr "" +#: cups/ipp.c:5164 +#, c-format +msgid "\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section 8.1)." +msgstr "" + #: cups/ipp.c:5176 #, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" -#: cups/ipp.c:5345 +#: cups/ipp.c:5340 #, c-format msgid "\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 8011 section 5.1.9)." msgstr "" -#: cups/ipp.c:5355 +#: cups/ipp.c:5350 #, c-format msgid "\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 8011 section 5.1.9)." msgstr "" -#: cups/ipp.c:4904 +#: cups/ipp.c:4896 #, c-format msgid "\"%s\": Bad octetString value - bad length %d (RFC 8011 section 5.1.20)." msgstr "" -#: cups/ipp.c:5047 +#: cups/ipp.c:5039 #, c-format msgid "\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 8011 section 5.1.14)." msgstr "" -#: cups/ipp.c:5028 +#: cups/ipp.c:5020 #, c-format msgid "\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 8011 section 5.1.16)." msgstr "" -#: cups/ipp.c:4997 +#: cups/ipp.c:4989 #, c-format msgid "\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 8011 section 5.1.16)." msgstr "" -#: cups/ipp.c:5012 +#: cups/ipp.c:5004 #, c-format msgid "\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC 8011 section 5.1.16)." msgstr "" -#: cups/ipp.c:5109 +#: cups/ipp.c:5107 #, c-format msgid "\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.2)." msgstr "" -#: cups/ipp.c:5118 +#: cups/ipp.c:5102 +#, c-format +msgid "\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section 8.3)." +msgstr "" + +#: cups/ipp.c:5114 #, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" -#: cups/ipp.c:5261 +#: cups/ipp.c:5256 #, c-format msgid "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 8011 section 5.1.7)." msgstr "" -#: cups/ipp.c:5270 +#: cups/ipp.c:5265 #, c-format msgid "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +#: scheduler/ipp.c:377 +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +#: scheduler/ipp.c:383 scheduler/ipp.c:398 +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #: berkeley/lpq.c:542 #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" @@ -1770,7 +1788,7 @@ msgstr "" msgid "%s accepting requests since %s" msgstr "" -#: scheduler/ipp.c:10336 +#: scheduler/ipp.c:10357 #, c-format msgid "%s cannot be changed." msgstr "" @@ -1806,7 +1824,7 @@ msgstr "" msgid "%s not accepting requests since %s -" msgstr "" -#: scheduler/ipp.c:640 +#: scheduler/ipp.c:620 #, c-format msgid "%s not supported." msgstr "" @@ -1845,7 +1863,7 @@ msgstr "" msgid "%s: Bad printer URI \"%s\"." msgstr "" -#: test/ippfind.c:775 test/ipptool.c:372 +#: test/ippfind.c:801 test/ipptool.c:372 #, c-format msgid "%s: Bad version %s for \"-V\"." msgstr "" @@ -2075,12 +2093,12 @@ msgstr "" msgid "%s: Missing filename for \"-P\"." msgstr "" -#: test/ippfind.c:747 test/ipptool.c:340 +#: test/ippfind.c:773 test/ipptool.c:340 #, c-format msgid "%s: Missing timeout for \"-T\"." msgstr "" -#: test/ippfind.c:760 test/ipptool.c:354 +#: test/ippfind.c:786 test/ipptool.c:354 #, c-format msgid "%s: Missing version for \"-V\"." msgstr "" @@ -2179,12 +2197,12 @@ msgstr "" msgid "%s: Unknown option \"%c\"." msgstr "" -#: test/ippfind.c:646 +#: test/ippfind.c:660 #, c-format msgid "%s: Unknown option \"%s\"." msgstr "" -#: test/ippfind.c:926 +#: test/ippfind.c:952 #, c-format msgid "%s: Unknown option \"-%c\"." msgstr "" @@ -3067,12 +3085,12 @@ msgstr "" msgid "A Samba username is required to export printer drivers" msgstr "" -#: scheduler/ipp.c:2327 +#: scheduler/ipp.c:2298 #, c-format msgid "A class named \"%s\" already exists." msgstr "" -#: scheduler/ipp.c:938 +#: scheduler/ipp.c:902 #, c-format msgid "A printer named \"%s\" already exists." msgstr "" @@ -3290,22 +3308,22 @@ msgstr "" msgid "Archival Photo Paper" msgstr "" -#: scheduler/ipp.c:1033 +#: scheduler/ipp.c:997 #, c-format msgid "Attempt to set %s printer-state to bad value %d." msgstr "" -#: scheduler/ipp.c:5464 scheduler/ipp.c:5490 +#: scheduler/ipp.c:5463 scheduler/ipp.c:5489 #, c-format msgid "Attribute \"%s\" is in the wrong group." msgstr "" -#: scheduler/ipp.c:5466 scheduler/ipp.c:5492 +#: scheduler/ipp.c:5465 scheduler/ipp.c:5491 #, c-format msgid "Attribute \"%s\" is the wrong value type." msgstr "" -#: scheduler/ipp.c:258 +#: scheduler/ipp.c:239 #, c-format msgid "Attribute groups are out of order (%x < %x)." msgstr "" @@ -3366,7 +3384,12 @@ msgstr "" msgid "Back Print Film" msgstr "" -#: scheduler/ipp.c:11283 +#: scheduler/ipp.c:10366 +#, c-format +msgid "Bad '%s' value." +msgstr "" + +#: scheduler/ipp.c:11314 #, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "" @@ -3400,7 +3423,7 @@ msgstr "" msgid "Bad PPD cache file." msgstr "" -#: scheduler/ipp.c:2702 +#: scheduler/ipp.c:2673 msgid "Bad PPD file." msgstr "" @@ -3420,7 +3443,7 @@ msgstr "" msgid "Bad arguments to function" msgstr "" -#: scheduler/ipp.c:1418 +#: scheduler/ipp.c:1382 #, c-format msgid "Bad copies value %d." msgstr "" @@ -3429,22 +3452,22 @@ msgstr "" msgid "Bad custom parameter" msgstr "" -#: cups/http-support.c:1604 scheduler/ipp.c:2407 +#: cups/http-support.c:1604 scheduler/ipp.c:2378 #, c-format msgid "Bad device-uri \"%s\"." msgstr "" -#: scheduler/ipp.c:2452 +#: scheduler/ipp.c:2423 #, c-format msgid "Bad device-uri scheme \"%s\"." msgstr "" -#: scheduler/ipp.c:8491 scheduler/ipp.c:8509 scheduler/ipp.c:9737 +#: scheduler/ipp.c:8512 scheduler/ipp.c:8530 scheduler/ipp.c:9758 #, c-format msgid "Bad document-format \"%s\"." msgstr "" -#: scheduler/ipp.c:9755 +#: scheduler/ipp.c:9776 #, c-format msgid "Bad document-format-default \"%s\"." msgstr "" @@ -3457,51 +3480,56 @@ msgstr "" msgid "Bad hostname/address in URI" msgstr "" -#: scheduler/ipp.c:1593 +#: scheduler/ipp.c:1564 #, c-format msgid "Bad job-name value: %s" msgstr "" -#: scheduler/ipp.c:1586 +#: scheduler/ipp.c:1550 msgid "Bad job-name value: Wrong type or count." msgstr "" -#: scheduler/ipp.c:10351 +#: scheduler/ipp.c:10404 msgid "Bad job-priority value." msgstr "" -#: scheduler/ipp.c:1448 +#: scheduler/ipp.c:1412 #, c-format msgid "Bad job-sheets value \"%s\"." msgstr "" -#: scheduler/ipp.c:1432 +#: scheduler/ipp.c:1396 msgid "Bad job-sheets value type." msgstr "" -#: scheduler/ipp.c:10381 +#: scheduler/ipp.c:10434 msgid "Bad job-state value." msgstr "" -#: scheduler/ipp.c:3043 scheduler/ipp.c:3505 scheduler/ipp.c:6276 -#: scheduler/ipp.c:6423 scheduler/ipp.c:7920 scheduler/ipp.c:8189 -#: scheduler/ipp.c:9055 scheduler/ipp.c:9279 scheduler/ipp.c:9631 -#: scheduler/ipp.c:10244 +#: scheduler/ipp.c:3014 scheduler/ipp.c:3476 scheduler/ipp.c:6294 +#: scheduler/ipp.c:6441 scheduler/ipp.c:7938 scheduler/ipp.c:8210 +#: scheduler/ipp.c:9076 scheduler/ipp.c:9300 scheduler/ipp.c:9652 +#: scheduler/ipp.c:10265 #, c-format msgid "Bad job-uri \"%s\"." msgstr "" -#: scheduler/ipp.c:2093 scheduler/ipp.c:5815 +#: scheduler/ipp.c:2064 scheduler/ipp.c:5814 #, c-format msgid "Bad notify-pull-method \"%s\"." msgstr "" -#: scheduler/ipp.c:2057 scheduler/ipp.c:5779 +#: scheduler/ipp.c:2028 scheduler/ipp.c:5778 #, c-format msgid "Bad notify-recipient-uri \"%s\"." msgstr "" -#: scheduler/ipp.c:1464 +#: scheduler/ipp.c:5889 +#, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#: scheduler/ipp.c:1428 #, c-format msgid "Bad number-up value %d." msgstr "" @@ -3511,7 +3539,7 @@ msgstr "" msgid "Bad option + choice on line %d." msgstr "" -#: scheduler/ipp.c:1481 +#: scheduler/ipp.c:1445 #, c-format msgid "Bad page-ranges values %d-%d." msgstr "" @@ -3520,12 +3548,12 @@ msgstr "" msgid "Bad port number in URI" msgstr "" -#: scheduler/ipp.c:2498 +#: scheduler/ipp.c:2469 #, c-format msgid "Bad port-monitor \"%s\"." msgstr "" -#: scheduler/ipp.c:2579 +#: scheduler/ipp.c:2550 #, c-format msgid "Bad printer-state value %d." msgstr "" @@ -3534,21 +3562,16 @@ msgstr "" msgid "Bad printer-uri." msgstr "" -#: scheduler/ipp.c:226 +#: scheduler/ipp.c:213 #, c-format msgid "Bad request ID %d." msgstr "" -#: scheduler/ipp.c:211 +#: scheduler/ipp.c:203 #, c-format msgid "Bad request version number %d.%d." msgstr "" -#: scheduler/ipp.c:1604 -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - #: cups/http-support.c:1467 msgid "Bad resource in URI" msgstr "" @@ -3658,11 +3681,11 @@ msgstr "" msgid "Canceling print job." msgstr "" -#: scheduler/ipp.c:1009 scheduler/ipp.c:2554 +#: scheduler/ipp.c:973 scheduler/ipp.c:2525 msgid "Cannot change printer-is-shared for remote queues." msgstr "" -#: scheduler/ipp.c:2541 +#: scheduler/ipp.c:2512 msgid "Cannot share a remote Kerberized printer." msgstr "" @@ -3691,7 +3714,7 @@ msgstr "" msgid "Change Settings" msgstr "" -#: scheduler/ipp.c:2105 scheduler/ipp.c:5827 +#: scheduler/ipp.c:2076 scheduler/ipp.c:5826 #, c-format msgid "Character set \"%s\" not supported." msgstr "" @@ -3704,7 +3727,7 @@ msgstr "" msgid "Clean Print Heads" msgstr "" -#: scheduler/ipp.c:3957 +#: scheduler/ipp.c:3928 msgid "Close-Job doesn't support the job-uri attribute." msgstr "" @@ -3856,7 +3879,7 @@ msgstr "" msgid "DeskJet Series" msgstr "" -#: scheduler/ipp.c:1347 +#: scheduler/ipp.c:1311 #, c-format msgid "Destination \"%s\" is not accepting jobs." msgstr "" @@ -3909,7 +3932,7 @@ msgstr "" msgid "Disc" msgstr "" -#: scheduler/ipp.c:6325 +#: scheduler/ipp.c:6343 #, c-format msgid "Document #%d does not exist in job #%d." msgstr "" @@ -3998,7 +4021,7 @@ msgstr "" msgid "English" msgstr "" -#: scheduler/client.c:2226 +#: scheduler/client.c:2238 msgid "Enter your username and password or the root username and password to access this page. If you are using Kerberos authentication, make sure you have a valid Kerberos ticket." msgstr "" @@ -4218,7 +4241,7 @@ msgstr "" msgid "Envelope You4 Long Edge" msgstr "" -#: test/ippfind.c:2815 +#: test/ippfind.c:2866 msgid "Environment Variables:" msgstr "" @@ -4311,7 +4334,7 @@ msgstr "" msgid "Export Printers to Samba" msgstr "" -#: test/ippfind.c:2761 +#: test/ippfind.c:2812 msgid "Expressions:" msgstr "" @@ -4374,7 +4397,7 @@ msgstr "" msgid "File Folder" msgstr "" -#: scheduler/ipp.c:2428 +#: scheduler/ipp.c:2399 #, c-format msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"." msgstr "" @@ -4489,10 +4512,10 @@ msgstr "" msgid "Glossy Photo Paper" msgstr "" -#: scheduler/ipp.c:3021 scheduler/ipp.c:3431 scheduler/ipp.c:3969 -#: scheduler/ipp.c:6254 scheduler/ipp.c:6401 scheduler/ipp.c:7897 -#: scheduler/ipp.c:9033 scheduler/ipp.c:9257 scheduler/ipp.c:9609 -#: scheduler/ipp.c:10222 +#: scheduler/ipp.c:2992 scheduler/ipp.c:3402 scheduler/ipp.c:3940 +#: scheduler/ipp.c:6272 scheduler/ipp.c:6419 scheduler/ipp.c:7915 +#: scheduler/ipp.c:9054 scheduler/ipp.c:9278 scheduler/ipp.c:9630 +#: scheduler/ipp.c:10243 msgid "Got a printer-uri attribute but no job-id." msgstr "" @@ -4564,35 +4587,35 @@ msgstr "" msgid "High Gloss Photo Paper" msgstr "" -#: cups/ipp.c:3181 cups/ipp.c:3208 cups/ipp.c:3231 +#: cups/ipp.c:3188 cups/ipp.c:3215 cups/ipp.c:3238 msgid "IPP 1setOf attribute with incompatible value tags." msgstr "" -#: cups/ipp.c:3144 +#: cups/ipp.c:3151 msgid "IPP attribute has no name." msgstr "" -#: cups/ipp.c:7017 +#: cups/ipp.c:7012 msgid "IPP attribute is not a member of the message." msgstr "" -#: cups/ipp.c:3590 +#: cups/ipp.c:3597 msgid "IPP begCollection value not 0 bytes." msgstr "" -#: cups/ipp.c:3372 +#: cups/ipp.c:3379 msgid "IPP boolean value not 1 byte." msgstr "" -#: cups/ipp.c:3433 +#: cups/ipp.c:3440 msgid "IPP date value not 11 bytes." msgstr "" -#: cups/ipp.c:3611 +#: cups/ipp.c:3618 msgid "IPP endCollection value not 0 bytes." msgstr "" -#: cups/ipp.c:3347 +#: cups/ipp.c:3354 msgid "IPP enum value not 4 bytes." msgstr "" @@ -4600,59 +4623,59 @@ msgstr "" msgid "IPP extension tag larger than 0x7FFFFFFF." msgstr "" -#: cups/ipp.c:3344 +#: cups/ipp.c:3351 msgid "IPP integer value not 4 bytes." msgstr "" -#: cups/ipp.c:3543 +#: cups/ipp.c:3550 msgid "IPP language length overflows value." msgstr "" -#: cups/ipp.c:3552 +#: cups/ipp.c:3559 msgid "IPP language length too large." msgstr "" -#: cups/ipp.c:3258 +#: cups/ipp.c:3265 msgid "IPP member name is not empty." msgstr "" -#: cups/ipp.c:3637 +#: cups/ipp.c:3644 msgid "IPP memberName value is empty." msgstr "" -#: cups/ipp.c:3629 +#: cups/ipp.c:3636 msgid "IPP memberName with no attribute." msgstr "" -#: cups/ipp.c:3127 +#: cups/ipp.c:3134 msgid "IPP name larger than 32767 bytes." msgstr "" -#: cups/ipp.c:3510 +#: cups/ipp.c:3517 msgid "IPP nameWithLanguage value less than minimum 4 bytes." msgstr "" -#: cups/ipp.c:3667 +#: cups/ipp.c:3674 msgid "IPP octetString length too large." msgstr "" -#: cups/ipp.c:3478 +#: cups/ipp.c:3485 msgid "IPP rangeOfInteger value not 8 bytes." msgstr "" -#: cups/ipp.c:3451 +#: cups/ipp.c:3458 msgid "IPP resolution value not 9 bytes." msgstr "" -#: cups/ipp.c:3570 +#: cups/ipp.c:3577 msgid "IPP string length overflows value." msgstr "" -#: cups/ipp.c:3506 +#: cups/ipp.c:3513 msgid "IPP textWithLanguage value less than minimum 4 bytes." msgstr "" -#: cups/ipp.c:3330 +#: cups/ipp.c:3337 msgid "IPP value larger than 32767 bytes." msgstr "" @@ -4736,6 +4759,10 @@ msgstr "" msgid "Internet Printing Protocol" msgstr "" +#: cups/ipp.c:3094 +msgid "Invalid group tag." +msgstr "" + #: cups/pwg-media.c:291 cups/pwg-media.c:310 msgid "Invalid media name arguments." msgstr "" @@ -4744,7 +4771,7 @@ msgstr "" msgid "Invalid media size." msgstr "" -#: scheduler/ipp.c:2748 scheduler/ipp.c:7068 +#: scheduler/ipp.c:2719 scheduler/ipp.c:7086 msgid "Invalid ppd-name value." msgstr "" @@ -4813,52 +4840,52 @@ msgstr "" msgid "JIS B9" msgstr "" -#: scheduler/ipp.c:9329 +#: scheduler/ipp.c:9350 #, c-format msgid "Job #%d cannot be restarted - no files." msgstr "" -#: scheduler/ipp.c:3061 scheduler/ipp.c:3295 scheduler/ipp.c:3354 -#: scheduler/ipp.c:3533 scheduler/ipp.c:3979 scheduler/ipp.c:5913 -#: scheduler/ipp.c:6294 scheduler/ipp.c:6441 scheduler/ipp.c:6778 -#: scheduler/ipp.c:7738 scheduler/ipp.c:7760 scheduler/ipp.c:7938 -#: scheduler/ipp.c:8163 scheduler/ipp.c:8206 scheduler/ipp.c:9073 -#: scheduler/ipp.c:9297 scheduler/ipp.c:9649 scheduler/ipp.c:10262 +#: scheduler/ipp.c:3032 scheduler/ipp.c:3266 scheduler/ipp.c:3325 +#: scheduler/ipp.c:3504 scheduler/ipp.c:3950 scheduler/ipp.c:5931 +#: scheduler/ipp.c:6312 scheduler/ipp.c:6459 scheduler/ipp.c:6796 +#: scheduler/ipp.c:7756 scheduler/ipp.c:7778 scheduler/ipp.c:7956 +#: scheduler/ipp.c:8184 scheduler/ipp.c:8227 scheduler/ipp.c:9094 +#: scheduler/ipp.c:9318 scheduler/ipp.c:9670 scheduler/ipp.c:10283 #, c-format msgid "Job #%d does not exist." msgstr "" -#: scheduler/ipp.c:3565 +#: scheduler/ipp.c:3536 #, c-format msgid "Job #%d is already aborted - can't cancel." msgstr "" -#: scheduler/ipp.c:3559 +#: scheduler/ipp.c:3530 #, c-format msgid "Job #%d is already canceled - can't cancel." msgstr "" -#: scheduler/ipp.c:3571 +#: scheduler/ipp.c:3542 #, c-format msgid "Job #%d is already completed - can't cancel." msgstr "" -#: scheduler/ipp.c:7964 scheduler/ipp.c:8248 scheduler/ipp.c:10277 +#: scheduler/ipp.c:7982 scheduler/ipp.c:8269 scheduler/ipp.c:10298 #, c-format msgid "Job #%d is finished and cannot be altered." msgstr "" -#: scheduler/ipp.c:9311 +#: scheduler/ipp.c:9332 #, c-format msgid "Job #%d is not complete." msgstr "" -#: scheduler/ipp.c:3076 +#: scheduler/ipp.c:3047 #, c-format msgid "Job #%d is not held for authentication." msgstr "" -#: scheduler/ipp.c:9087 +#: scheduler/ipp.c:9108 #, c-format msgid "Job #%d is not held." msgstr "" @@ -4879,7 +4906,7 @@ msgstr "" msgid "Job Stopped" msgstr "" -#: scheduler/ipp.c:10359 +#: scheduler/ipp.c:10412 msgid "Job is completed and cannot be changed." msgstr "" @@ -4887,11 +4914,11 @@ msgstr "" msgid "Job operation failed" msgstr "" -#: scheduler/ipp.c:10395 scheduler/ipp.c:10412 scheduler/ipp.c:10423 +#: scheduler/ipp.c:10448 scheduler/ipp.c:10465 scheduler/ipp.c:10476 msgid "Job state cannot be changed." msgstr "" -#: scheduler/ipp.c:9177 +#: scheduler/ipp.c:9198 msgid "Job subscriptions cannot be renewed." msgstr "" @@ -4927,7 +4954,7 @@ msgstr "" msgid "Laminating Foil" msgstr "" -#: scheduler/ipp.c:2114 scheduler/ipp.c:5836 +#: scheduler/ipp.c:2085 scheduler/ipp.c:5835 #, c-format msgid "Language \"%s\" not supported." msgstr "" @@ -5000,7 +5027,7 @@ msgstr "" msgid "Load paper." msgstr "" -#: scheduler/ipp.c:5545 +#: scheduler/ipp.c:5544 msgid "Local printer created." msgstr "" @@ -5160,7 +5187,7 @@ msgstr "" msgid "Missing asterisk in column 1" msgstr "" -#: scheduler/ipp.c:6317 +#: scheduler/ipp.c:6335 msgid "Missing document-number attribute." msgstr "" @@ -5175,7 +5202,7 @@ msgstr "" msgid "Missing form variable" msgstr "" -#: scheduler/ipp.c:9703 +#: scheduler/ipp.c:9724 msgid "Missing last-document attribute in request." msgstr "" @@ -5187,7 +5214,7 @@ msgstr "" msgid "Missing media-size in media-col." msgstr "" -#: scheduler/ipp.c:6918 +#: scheduler/ipp.c:6936 msgid "Missing notify-subscription-ids attribute." msgstr "" @@ -5195,16 +5222,16 @@ msgstr "" msgid "Missing option keyword" msgstr "" -#: scheduler/ipp.c:3202 scheduler/ipp.c:3227 +#: scheduler/ipp.c:3173 scheduler/ipp.c:3198 msgid "Missing requesting-user-name attribute." msgstr "" -#: scheduler/ipp.c:5462 scheduler/ipp.c:5488 +#: scheduler/ipp.c:5461 scheduler/ipp.c:5487 #, c-format msgid "Missing required attribute \"%s\"." msgstr "" -#: scheduler/ipp.c:407 +#: scheduler/ipp.c:359 msgid "Missing required attributes." msgstr "" @@ -5242,7 +5269,7 @@ msgid "" " device-id = %s" msgstr "" -#: test/ippfind.c:2792 +#: test/ippfind.c:2843 msgid "Modifiers:" msgstr "" @@ -5314,7 +5341,7 @@ msgstr "" msgid "Name OID uses indefinite length" msgstr "" -#: scheduler/ipp.c:1102 +#: scheduler/ipp.c:1066 msgid "Nested classes are not allowed." msgstr "" @@ -5362,16 +5389,16 @@ msgstr "" msgid "No active connection." msgstr "" -#: scheduler/ipp.c:3482 +#: scheduler/ipp.c:3453 #, c-format msgid "No active jobs on %s." msgstr "" -#: scheduler/ipp.c:235 +#: scheduler/ipp.c:219 msgid "No attributes in request." msgstr "" -#: scheduler/ipp.c:3103 +#: scheduler/ipp.c:3074 msgid "No authentication information provided." msgstr "" @@ -5383,11 +5410,11 @@ msgstr "" msgid "No community name" msgstr "" -#: scheduler/ipp.c:6117 +#: scheduler/ipp.c:6135 msgid "No default printer." msgstr "" -#: cgi-bin/ipp-var.c:422 scheduler/ipp.c:7498 +#: cgi-bin/ipp-var.c:422 scheduler/ipp.c:7516 msgid "No destinations added." msgstr "" @@ -5403,7 +5430,7 @@ msgstr "" msgid "No error-status" msgstr "" -#: scheduler/ipp.c:8453 scheduler/ipp.c:9717 +#: scheduler/ipp.c:8474 scheduler/ipp.c:9738 msgid "No file in print request." msgstr "" @@ -5432,7 +5459,7 @@ msgstr "" msgid "No printer-uri found for class" msgstr "" -#: scheduler/ipp.c:6524 +#: scheduler/ipp.c:6542 msgid "No printer-uri in request." msgstr "" @@ -5456,11 +5483,11 @@ msgstr "" msgid "No stored credentials, not valid for name." msgstr "" -#: scheduler/ipp.c:5721 +#: scheduler/ipp.c:5720 msgid "No subscription attributes in request." msgstr "" -#: scheduler/ipp.c:7837 +#: scheduler/ipp.c:7855 msgid "No subscriptions found." msgstr "" @@ -5509,7 +5536,7 @@ msgstr "" msgid "Not Supported" msgstr "" -#: scheduler/ipp.c:1556 scheduler/ipp.c:10978 +#: scheduler/ipp.c:1520 scheduler/ipp.c:11009 msgid "Not allowed to print." msgstr "" @@ -5541,7 +5568,7 @@ msgstr "" msgid "Online Help" msgstr "" -#: scheduler/ipp.c:5441 +#: scheduler/ipp.c:5440 msgid "Only local users can create a local printer." msgstr "" @@ -5577,7 +5604,7 @@ msgstr "" #: scheduler/cupsfilter.c:1480 scheduler/main.c:2101 systemv/cupsaddsmb.c:276 #: systemv/cupsctl.c:196 systemv/cupstestdsc.c:421 systemv/cupstestppd.c:3859 -#: test/ippfind.c:2751 test/ipptool.c:5063 ppdc/ppdc.cxx:430 +#: test/ippfind.c:2802 test/ipptool.c:5063 ppdc/ppdc.cxx:430 #: ppdc/ppdhtml.cxx:177 ppdc/ppdi.cxx:123 ppdc/ppdmerge.cxx:361 #: ppdc/ppdpo.cxx:247 msgid "Options:" @@ -5897,7 +5924,7 @@ msgstr "" msgid "Print job was not accepted." msgstr "" -#: scheduler/ipp.c:5507 +#: scheduler/ipp.c:5506 #, c-format msgid "Printer \"%s\" already exists." msgstr "" @@ -5964,7 +5991,7 @@ msgstr "" msgid "Quarto" msgstr "" -#: scheduler/ipp.c:1551 scheduler/ipp.c:10973 +#: scheduler/ipp.c:1515 scheduler/ipp.c:11004 msgid "Quota limit reached." msgstr "" @@ -6123,7 +6150,7 @@ msgstr "" msgid "See Other" msgstr "" -#: scheduler/ipp.c:7122 scheduler/ipp.c:7141 +#: scheduler/ipp.c:7140 scheduler/ipp.c:7159 msgid "See remote printer." msgstr "" @@ -6360,13 +6387,13 @@ msgstr "" msgid "Statement" msgstr "" -#: scheduler/ipp.c:3628 scheduler/ipp.c:6934 scheduler/ipp.c:7644 -#: scheduler/ipp.c:9165 +#: scheduler/ipp.c:3599 scheduler/ipp.c:6952 scheduler/ipp.c:7662 +#: scheduler/ipp.c:9186 #, c-format msgid "Subscription #%d does not exist." msgstr "" -#: test/ippfind.c:2804 +#: test/ippfind.c:2855 msgid "Substitutions:" msgstr "" @@ -6414,33 +6441,33 @@ msgstr "" msgid "Tear-Off Adjust Position" msgstr "" -#: scheduler/ipp.c:1387 +#: scheduler/ipp.c:1351 #, c-format msgid "The \"%s\" attribute is required for print jobs." msgstr "" -#: scheduler/ipp.c:6595 scheduler/ipp.c:6675 scheduler/ipp.c:6688 -#: scheduler/ipp.c:6700 scheduler/ipp.c:6715 +#: scheduler/ipp.c:6613 scheduler/ipp.c:6693 scheduler/ipp.c:6706 +#: scheduler/ipp.c:6718 scheduler/ipp.c:6733 #, c-format msgid "The %s attribute cannot be provided with job-ids." msgstr "" -#: scheduler/ipp.c:1366 +#: scheduler/ipp.c:1330 #, c-format msgid "The '%s' Job Status attribute cannot be supplied in a job creation request." msgstr "" -#: scheduler/ipp.c:5269 +#: scheduler/ipp.c:5240 #, c-format msgid "The '%s' operation attribute cannot be supplied in a Create-Job request." msgstr "" -#: scheduler/ipp.c:7164 +#: scheduler/ipp.c:7182 #, c-format msgid "The PPD file \"%s\" could not be found." msgstr "" -#: scheduler/ipp.c:7153 +#: scheduler/ipp.c:7171 #, c-format msgid "The PPD file \"%s\" could not be opened: %s" msgstr "" @@ -6470,11 +6497,11 @@ msgstr "" msgid "The fuser's temperature is low." msgstr "" -#: scheduler/ipp.c:2141 +#: scheduler/ipp.c:2112 msgid "The notify-lease-duration attribute cannot be used with job subscriptions." msgstr "" -#: scheduler/ipp.c:2124 scheduler/ipp.c:5846 +#: scheduler/ipp.c:2095 scheduler/ipp.c:5845 #, c-format msgid "The notify-user-data value is too large (%d > 63 octets)." msgstr "" @@ -6550,18 +6577,18 @@ msgstr "" msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)." msgstr "" -#: scheduler/ipp.c:810 scheduler/ipp.c:1093 scheduler/ipp.c:3267 -#: scheduler/ipp.c:3448 scheduler/ipp.c:5252 scheduler/ipp.c:5680 -#: scheduler/ipp.c:5995 scheduler/ipp.c:6561 scheduler/ipp.c:7368 -#: scheduler/ipp.c:7424 scheduler/ipp.c:7750 scheduler/ipp.c:8022 -#: scheduler/ipp.c:8111 scheduler/ipp.c:8144 scheduler/ipp.c:8468 -#: scheduler/ipp.c:8875 scheduler/ipp.c:8957 scheduler/ipp.c:10131 -#: scheduler/ipp.c:10583 scheduler/ipp.c:10936 scheduler/ipp.c:11018 -#: scheduler/ipp.c:11393 +#: scheduler/ipp.c:774 scheduler/ipp.c:1057 scheduler/ipp.c:3238 +#: scheduler/ipp.c:3419 scheduler/ipp.c:5223 scheduler/ipp.c:5679 +#: scheduler/ipp.c:6013 scheduler/ipp.c:6579 scheduler/ipp.c:7386 +#: scheduler/ipp.c:7442 scheduler/ipp.c:7768 scheduler/ipp.c:8043 +#: scheduler/ipp.c:8132 scheduler/ipp.c:8165 scheduler/ipp.c:8489 +#: scheduler/ipp.c:8896 scheduler/ipp.c:8978 scheduler/ipp.c:10152 +#: scheduler/ipp.c:10614 scheduler/ipp.c:10967 scheduler/ipp.c:11049 +#: scheduler/ipp.c:11378 msgid "The printer or class does not exist." msgstr "" -#: scheduler/ipp.c:1305 +#: scheduler/ipp.c:1269 msgid "The printer or class is not shared." msgstr "" @@ -6585,20 +6612,20 @@ msgstr "" msgid "The printer's waste bin is full." msgstr "" -#: scheduler/ipp.c:916 scheduler/ipp.c:2305 +#: scheduler/ipp.c:880 scheduler/ipp.c:2276 #, c-format msgid "The printer-uri \"%s\" contains invalid characters." msgstr "" -#: scheduler/ipp.c:3244 +#: scheduler/ipp.c:3215 msgid "The printer-uri attribute is required." msgstr "" -#: scheduler/ipp.c:900 +#: scheduler/ipp.c:864 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"." msgstr "" -#: scheduler/ipp.c:2289 +#: scheduler/ipp.c:2260 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"." msgstr "" @@ -6606,16 +6633,16 @@ msgstr "" msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)." msgstr "" -#: scheduler/client.c:2249 +#: scheduler/client.c:2261 msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it." msgstr "" -#: scheduler/ipp.c:6659 +#: scheduler/ipp.c:6677 #, c-format msgid "The which-jobs value \"%s\" is not supported." msgstr "" -#: scheduler/ipp.c:5924 +#: scheduler/ipp.c:5942 msgid "There are too many subscriptions." msgstr "" @@ -6628,16 +6655,16 @@ msgstr "" msgid "Thermal Transfer Media" msgstr "" -#: scheduler/ipp.c:1545 +#: scheduler/ipp.c:1509 msgid "Too many active jobs." msgstr "" -#: scheduler/ipp.c:1439 +#: scheduler/ipp.c:1403 #, c-format msgid "Too many job-sheets values (%d > 2)." msgstr "" -#: scheduler/ipp.c:2616 +#: scheduler/ipp.c:2587 #, c-format msgid "Too many printer-state-reasons values (%d > %d)." msgstr "" @@ -6835,7 +6862,7 @@ msgstr "" msgid "Unable to add document to print job." msgstr "" -#: scheduler/ipp.c:1613 +#: scheduler/ipp.c:1584 #, c-format msgid "Unable to add job for destination \"%s\"." msgstr "" @@ -6844,7 +6871,7 @@ msgstr "" msgid "Unable to add printer" msgstr "" -#: scheduler/ipp.c:1223 +#: scheduler/ipp.c:1187 msgid "Unable to allocate memory for file types." msgstr "" @@ -6876,12 +6903,12 @@ msgstr "" msgid "Unable to change server settings" msgstr "" -#: cups/ipp.c:5389 +#: cups/ipp.c:5384 #, c-format msgid "Unable to compile mimeMediaType regular expression: %s." msgstr "" -#: cups/ipp.c:5335 +#: cups/ipp.c:5330 #, c-format msgid "Unable to compile naturalLanguage regular expression: %s." msgstr "" @@ -6914,12 +6941,12 @@ msgstr "" msgid "Unable to copy CUPS printer driver files (%d)." msgstr "" -#: scheduler/ipp.c:2719 +#: scheduler/ipp.c:2690 #, c-format msgid "Unable to copy PPD file - %s" msgstr "" -#: scheduler/ipp.c:2764 +#: scheduler/ipp.c:2735 msgid "Unable to copy PPD file." msgstr "" @@ -6937,11 +6964,11 @@ msgstr "" msgid "Unable to create credentials from array." msgstr "" -#: cups/ppd-util.c:553 cups/util.c:500 +#: cups/ppd-util.c:553 cups/util.c:482 msgid "Unable to create printer-uri" msgstr "" -#: scheduler/ipp.c:5517 +#: scheduler/ipp.c:5516 msgid "Unable to create printer." msgstr "" @@ -7013,7 +7040,7 @@ msgstr "" msgid "Unable to find server credentials." msgstr "" -#: backend/ipp.c:3336 +#: backend/ipp.c:3338 msgid "Unable to get backend exit status." msgstr "" @@ -7097,7 +7124,7 @@ msgstr "" msgid "Unable to open device file" msgstr "" -#: scheduler/ipp.c:6338 +#: scheduler/ipp.c:6356 #, c-format msgid "Unable to open document #%d in job #%d." msgstr "" @@ -7126,7 +7153,7 @@ msgstr "" msgid "Unable to read print data." msgstr "" -#: scheduler/ipp.c:8627 scheduler/ipp.c:9870 +#: scheduler/ipp.c:8648 scheduler/ipp.c:9891 msgid "Unable to rename job document file." msgstr "" @@ -7164,7 +7191,7 @@ msgstr "" msgid "Unable to set server default" msgstr "" -#: backend/ipp.c:3195 backend/ipp.c:3272 backend/ipp.c:3280 +#: backend/ipp.c:3197 backend/ipp.c:3274 backend/ipp.c:3282 msgid "Unable to start backend process." msgstr "" @@ -7240,12 +7267,12 @@ msgstr "" msgid "Unknown print mode: \"%s\"." msgstr "" -#: scheduler/ipp.c:10805 +#: scheduler/ipp.c:10836 #, c-format msgid "Unknown printer-error-policy \"%s\"." msgstr "" -#: scheduler/ipp.c:10788 +#: scheduler/ipp.c:10819 #, c-format msgid "Unknown printer-op-policy \"%s\"." msgstr "" @@ -7271,46 +7298,50 @@ msgstr "" msgid "Unknown version option value: \"%s\"." msgstr "" -#: scheduler/ipp.c:11264 +#: scheduler/ipp.c:11295 #, c-format msgid "Unsupported 'compression' value \"%s\"." msgstr "" -#: scheduler/ipp.c:11294 +#: scheduler/ipp.c:11325 #, c-format msgid "Unsupported 'document-format' value \"%s\"." msgstr "" -#: scheduler/ipp.c:11369 +#: scheduler/ipp.c:7995 scheduler/ipp.c:10378 scheduler/ipp.c:11339 +msgid "Unsupported 'job-hold-until' value." +msgstr "" + +#: scheduler/ipp.c:11355 msgid "Unsupported 'job-name' value." msgstr "" -#: scheduler/ipp.c:348 +#: scheduler/ipp.c:310 #, c-format msgid "Unsupported character set \"%s\"." msgstr "" -#: scheduler/ipp.c:8434 scheduler/ipp.c:9682 +#: scheduler/ipp.c:8455 scheduler/ipp.c:9703 #, c-format msgid "Unsupported compression \"%s\"." msgstr "" -#: scheduler/ipp.c:8570 scheduler/ipp.c:9835 +#: scheduler/ipp.c:8591 scheduler/ipp.c:9856 #, c-format msgid "Unsupported document-format \"%s\"." msgstr "" -#: scheduler/ipp.c:9818 +#: scheduler/ipp.c:9839 #, c-format msgid "Unsupported document-format \"%s/%s\"." msgstr "" -#: scheduler/ipp.c:1405 +#: scheduler/ipp.c:1369 #, c-format msgid "Unsupported format \"%s\"." msgstr "" -#: scheduler/ipp.c:1503 +#: scheduler/ipp.c:1467 msgid "Unsupported margins." msgstr "" @@ -7390,7 +7421,7 @@ msgstr "" msgid "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]" msgstr "" -#: test/ippfind.c:2744 +#: test/ippfind.c:2795 msgid "" "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n" " ippfind [options] name[.regtype[.domain.]] ... [expression]\n" @@ -7494,7 +7525,7 @@ msgstr "" msgid "Yes" msgstr "" -#: scheduler/client.c:2236 +#: scheduler/client.c:2248 #, c-format msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>." msgstr "" @@ -7523,11 +7554,11 @@ msgstr "" msgid "completed" msgstr "" -#: scheduler/ipp.c:6210 +#: scheduler/ipp.c:6228 msgid "cups-deviced failed to execute." msgstr "" -#: scheduler/ipp.c:7096 scheduler/ipp.c:7335 +#: scheduler/ipp.c:7114 scheduler/ipp.c:7353 msgid "cups-driverd failed to execute." msgstr "" @@ -7646,101 +7677,106 @@ msgstr "" msgid "idle" msgstr "" -#: test/ippfind.c:2463 +#: test/ippfind.c:2514 #, c-format msgid "ippfind: Bad regular expression: %s" msgstr "" -#: test/ippfind.c:326 +#: test/ippfind.c:328 msgid "ippfind: Cannot use --and after --or." msgstr "" -#: test/ippfind.c:599 +#: test/ippfind.c:613 #, c-format msgid "ippfind: Expected key name after %s." msgstr "" -#: test/ippfind.c:549 test/ippfind.c:732 +#: test/ippfind.c:563 test/ippfind.c:758 #, c-format msgid "ippfind: Expected port range after %s." msgstr "" -#: test/ippfind.c:359 +#: test/ippfind.c:361 #, c-format msgid "ippfind: Expected program after %s." msgstr "" -#: test/ippfind.c:376 +#: test/ippfind.c:378 #, c-format msgid "ippfind: Expected semi-colon after %s." msgstr "" -#: test/ippfind.c:1963 +#: test/ippfind.c:2014 msgid "ippfind: Missing close brace in substitution." msgstr "" -#: test/ippfind.c:1051 +#: test/ippfind.c:1077 msgid "ippfind: Missing close parenthesis." msgstr "" -#: test/ippfind.c:333 +#: test/ippfind.c:335 msgid "ippfind: Missing expression before \"--and\"." msgstr "" -#: test/ippfind.c:446 +#: test/ippfind.c:460 msgid "ippfind: Missing expression before \"--or\"." msgstr "" -#: test/ippfind.c:869 +#: test/ippfind.c:895 #, c-format msgid "ippfind: Missing key name after %s." msgstr "" -#: test/ippfind.c:1022 +#: test/ippfind.c:429 test/ippfind.c:745 +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + +#: test/ippfind.c:1048 msgid "ippfind: Missing open parenthesis." msgstr "" -#: test/ippfind.c:899 +#: test/ippfind.c:925 #, c-format msgid "ippfind: Missing program after %s." msgstr "" -#: test/ippfind.c:345 test/ippfind.c:399 test/ippfind.c:428 test/ippfind.c:534 -#: test/ippfind.c:616 test/ippfind.c:631 test/ippfind.c:786 test/ippfind.c:801 -#: test/ippfind.c:824 test/ippfind.c:884 +#: test/ippfind.c:347 test/ippfind.c:401 test/ippfind.c:442 test/ippfind.c:548 +#: test/ippfind.c:630 test/ippfind.c:645 test/ippfind.c:812 test/ippfind.c:827 +#: test/ippfind.c:850 test/ippfind.c:910 #, c-format msgid "ippfind: Missing regular expression after %s." msgstr "" -#: test/ippfind.c:917 +#: test/ippfind.c:943 #, c-format msgid "ippfind: Missing semi-colon after %s." msgstr "" -#: test/ippfind.c:1910 test/ippfind.c:1935 +#: test/ippfind.c:1961 test/ippfind.c:1986 msgid "ippfind: Out of memory." msgstr "" -#: test/ippfind.c:995 +#: test/ippfind.c:1021 msgid "ippfind: Too many parenthesis." msgstr "" -#: test/ippfind.c:1264 test/ippfind.c:1400 test/ippfind.c:2555 +#: test/ippfind.c:1320 test/ippfind.c:1448 test/ippfind.c:2606 #, c-format msgid "ippfind: Unable to browse or resolve: %s" msgstr "" -#: test/ippfind.c:2033 test/ippfind.c:2060 +#: test/ippfind.c:2084 test/ippfind.c:2111 #, c-format msgid "ippfind: Unable to execute \"%s\": %s" msgstr "" -#: test/ippfind.c:1141 test/ippfind.c:1149 test/ippfind.c:1160 +#: test/ippfind.c:1167 test/ippfind.c:1175 test/ippfind.c:1186 #, c-format msgid "ippfind: Unable to use Bonjour: %s" msgstr "" -#: test/ippfind.c:1992 +#: test/ippfind.c:2043 #, c-format msgid "ippfind: Unknown variable \"{%s}\"." msgstr "" @@ -7787,7 +7823,7 @@ msgstr "" msgid "ipptool: Unknown option \"-%c\"." msgstr "" -#: scheduler/ipp.c:8100 +#: scheduler/ipp.c:8121 msgid "job-printer-uri attribute missing." msgstr "" @@ -8033,16 +8069,16 @@ msgstr "" msgid "no system default destination" msgstr "" -#: scheduler/ipp.c:5895 +#: scheduler/ipp.c:5913 msgid "notify-events not specified." msgstr "" -#: scheduler/ipp.c:2078 scheduler/ipp.c:5800 +#: scheduler/ipp.c:2049 scheduler/ipp.c:5799 #, c-format msgid "notify-recipient-uri URI \"%s\" is already used." msgstr "" -#: scheduler/ipp.c:2068 scheduler/ipp.c:5790 +#: scheduler/ipp.c:2039 scheduler/ipp.c:5789 #, c-format msgid "notify-recipient-uri URI \"%s\" uses unknown scheme." msgstr "" diff --git a/locale/cups.strings b/locale/cups.strings index 0ba8344..952b10e 100644 --- a/locale/cups.strings +++ b/locale/cups.strings @@ -328,6 +328,7 @@ "\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 8011 section 5.1.10)." = "“%s”: Bad mimeMediaType value “%s” - bad characters (RFC 8011 section 5.1.10)."; "\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 8011 section 5.1.10)." = "“%s”: Bad mimeMediaType value “%s” - bad length %d (RFC 8011 section 5.1.10)."; "\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.3)." = "“%s”: Bad name value “%s” - bad UTF-8 sequence (RFC 8011 section 5.1.3)."; +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section 8.1)." = "“%s”: Bad name value “%s” - bad control character (PWG 5100.14 section 8.1)."; "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." = "“%s”: Bad name value “%s” - bad length %d (RFC 8011 section 5.1.3)."; "\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 8011 section 5.1.9)." = "“%s”: Bad naturalLanguage value “%s” - bad characters (RFC 8011 section 5.1.9)."; "\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 8011 section 5.1.9)." = "“%s”: Bad naturalLanguage value “%s” - bad length %d (RFC 8011 section 5.1.9)."; @@ -337,9 +338,12 @@ "\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 8011 section 5.1.16)." = "“%s”: Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 8011 section 5.1.16)."; "\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC 8011 section 5.1.16)." = "“%s”: Bad resolution value %dx%d%s - feed resolution must be positive (RFC 8011 section 5.1.16)."; "\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.2)." = "“%s”: Bad text value “%s” - bad UTF-8 sequence (RFC 8011 section 5.1.2)."; +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section 8.3)." = "“%s”: Bad text value “%s” - bad control character (PWG 5100.14 section 8.3)."; "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." = "“%s”: Bad text value “%s” - bad length %d (RFC 8011 section 5.1.2)."; "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 8011 section 5.1.7)." = "“%s”: Bad uriScheme value “%s” - bad characters (RFC 8011 section 5.1.7)."; "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." = "“%s”: Bad uriScheme value “%s” - bad length %d (RFC 8011 section 5.1.7)."; +"\"requesting-user-name\" attribute in wrong group." = "“requesting-user-name” attribute in wrong group."; +"\"requesting-user-name\" attribute with wrong syntax." = "“requesting-user-name” attribute with wrong syntax."; "%-7s %-7.7s %-7d %-31.31s %.0f bytes" = "%-7s %-7.7s %-7d %-31.31s %.0f bytes"; "%d x %d mm" = "%d x %d mm"; "%g x %g \"" = "%g x %g ″"; @@ -721,6 +725,7 @@ "B8" = "B8"; "B9" = "B9"; "Back Print Film" = "Back Print Film"; +"Bad '%s' value." = "Bad ‘%s’ value."; "Bad 'document-format' value \"%s\"." = "Bad ‘document-format’ value “%s”."; "Bad NULL dests pointer" = "Bad NULL dests pointer"; "Bad OpenGroup" = "Bad OpenGroup"; @@ -749,6 +754,7 @@ "Bad job-uri \"%s\"." = "Bad job-uri “%s”."; "Bad notify-pull-method \"%s\"." = "Bad notify-pull-method “%s”."; "Bad notify-recipient-uri \"%s\"." = "Bad notify-recipient-uri “%s”."; +"Bad notify-user-data \"%s\"." = "Bad notify-user-data “%s”."; "Bad number-up value %d." = "Bad number-up value %d."; "Bad option + choice on line %d." = "Bad option + choice on line %d."; "Bad page-ranges values %d-%d." = "Bad page-ranges values %d-%d."; @@ -758,7 +764,6 @@ "Bad printer-uri." = "Bad printer-uri."; "Bad request ID %d." = "Bad request ID %d."; "Bad request version number %d.%d." = "Bad request version number %d.%d."; -"Bad requesting-user-name value: %s" = "Bad requesting-user-name value: %s"; "Bad resource in URI" = "Bad resource in URI"; "Bad scheme in URI" = "Bad scheme in URI"; "Bad subscription ID" = "Bad subscription ID"; @@ -1046,6 +1051,7 @@ "Internet Postage 2-Part" = "Internet Postage 2-Part"; "Internet Postage 3-Part" = "Internet Postage 3-Part"; "Internet Printing Protocol" = "Internet Printing Protocol"; +"Invalid group tag." = "Invalid group tag."; "Invalid media name arguments." = "Invalid media name arguments."; "Invalid media size." = "Invalid media size."; "Invalid ppd-name value." = "Invalid ppd-name value."; @@ -1656,6 +1662,7 @@ "Unknown version option value: \"%s\"." = "Unknown version option value: “%s”."; "Unsupported 'compression' value \"%s\"." = "Unsupported ‘compression’ value “%s”."; "Unsupported 'document-format' value \"%s\"." = "Unsupported ‘document-format’ value “%s”."; +"Unsupported 'job-hold-until' value." = "Unsupported ‘job-hold-until’ value."; "Unsupported 'job-name' value." = "Unsupported ‘job-name’ value."; "Unsupported character set \"%s\"." = "Unsupported character set “%s”."; "Unsupported compression \"%s\"." = "Unsupported compression “%s”."; @@ -1748,6 +1755,7 @@ "ippfind: Missing expression before \"--and\"." = "ippfind: Missing expression before “--and”."; "ippfind: Missing expression before \"--or\"." = "ippfind: Missing expression before “--or”."; "ippfind: Missing key name after %s." = "ippfind: Missing key name after %s."; +"ippfind: Missing name after %s." = "ippfind: Missing name after %s."; "ippfind: Missing open parenthesis." = "ippfind: Missing open parenthesis."; "ippfind: Missing program after %s." = "ippfind: Missing program after %s."; "ippfind: Missing regular expression after %s." = "ippfind: Missing regular expression after %s."; diff --git a/locale/cups_ca.po b/locale/cups_ca.po index 1627451..30c3d23 100644 --- a/locale/cups_ca.po +++ b/locale/cups_ca.po @@ -32,7 +32,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 1.4.6\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2012-09-29 11:21+0200\n" "Last-Translator: Àngel Mompó <mecatxis@gmail.com>\n" "Language-Team: Catalan <ca@dodds.net>\n" @@ -1475,6 +1475,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1525,6 +1531,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1538,6 +1550,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bytes" @@ -2801,6 +2819,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "" @@ -2896,6 +2918,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "La notify-recipient-uri «%s» és incorrecta." #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "El valor de number-up %d és incorrecte." @@ -2929,10 +2955,6 @@ msgstr "L'identificador %d de la sol·licitud és incorrecte." msgid "Bad request version number %d.%d." msgstr "El número de versió %d.%d de la sol·licitud és incorrecte." -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "" @@ -3839,6 +3861,9 @@ msgstr "Franqueig per Internet en 3 parts" msgid "Internet Printing Protocol" msgstr "Protocol d'impressió per Internet" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "" @@ -5811,6 +5836,9 @@ msgstr "" msgid "Unsupported 'document-format' value \"%s\"." msgstr "" +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "" @@ -7402,6 +7430,10 @@ msgstr "" msgid "ippfind: Missing key name after %s." msgstr "" +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "" diff --git a/locale/cups_cs.po b/locale/cups_cs.po index fe2ebe9..feec1cb 100644 --- a/locale/cups_cs.po +++ b/locale/cups_cs.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 1.6\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2012-09-14 10:26+0100\n" "Last-Translator: Jan Bartos <jan.bartos@madeta.cz>\n" "Language-Team: Czech\n" @@ -1298,6 +1298,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1348,6 +1354,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1361,6 +1373,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "" @@ -2609,6 +2627,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "" @@ -2704,6 +2726,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "" #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "Chybná hodnota %d." @@ -2737,10 +2763,6 @@ msgstr "" msgid "Bad request version number %d.%d." msgstr "" -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "" @@ -3634,6 +3656,9 @@ msgstr "Internet Postage 3-Part" msgid "Internet Printing Protocol" msgstr "Internetový tiskový protokol" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "" @@ -5561,6 +5586,9 @@ msgstr "" msgid "Unsupported 'document-format' value \"%s\"." msgstr "" +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "" @@ -7132,6 +7160,10 @@ msgstr "" msgid "ippfind: Missing key name after %s." msgstr "" +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "" diff --git a/locale/cups_de.po b/locale/cups_de.po index bf834cc..69b8430 100644 --- a/locale/cups_de.po +++ b/locale/cups_de.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 2.0\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2017-10-25 14:57+0200\n" "Last-Translator: Michael Weghorn <m.weghorn@posteo.de>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -1362,6 +1362,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1412,6 +1418,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1425,6 +1437,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "" @@ -2685,6 +2703,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "Fehlerhafter 'document-format' Wert \"%s\"." @@ -2780,6 +2802,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "Ungültige notify-recipient-uri \"%s\"." #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "Ungültiger number-up-Wert %d." @@ -2813,10 +2839,6 @@ msgstr "Ungültige Anfrage-ID %d." msgid "Bad request version number %d.%d." msgstr "Ungültige Versionsnummernanfrage %d.%d." -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "Ungültige Resource in URI" @@ -3714,6 +3736,9 @@ msgstr "Internet Postage 3-teilig" msgid "Internet Printing Protocol" msgstr "Internet Printing Protocol" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "Ungültige Argumente des Mediennamens." @@ -5670,6 +5695,9 @@ msgstr "Nicht unterstützter Kompressionswert »%s«." msgid "Unsupported 'document-format' value \"%s\"." msgstr "Nicht unterstützter Wert des 'document-format' »%s«." +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "Nicht unterstützter 'job-name' Wert." @@ -7263,6 +7291,10 @@ msgstr "" msgid "ippfind: Missing key name after %s." msgstr "" +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "" diff --git a/locale/cups_es.po b/locale/cups_es.po index 63eacfb..3566a66 100644 --- a/locale/cups_es.po +++ b/locale/cups_es.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 2.2\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2016-06-26 21:17+0100\n" "Last-Translator: Juan Pablo González Riopedre <jpgriopedre@yahoo.es>\n" "Language-Team: Spanish\n" @@ -1505,6 +1505,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1555,6 +1561,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1568,6 +1580,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bytes" @@ -2831,6 +2849,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "Valor 'document-format' \"%s\" incorrecto." @@ -2926,6 +2948,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "notify-recipient-uri \"%s\" incorrecto." #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "Valor number-up (páginas por hoja) %d incorrecto." @@ -2959,10 +2985,6 @@ msgstr "Petición incorrecta de ID %d." msgid "Bad request version number %d.%d." msgstr "Petición incorrecta de número de versión %d.%d." -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "Recurso incorrecto en URI" @@ -3866,6 +3888,9 @@ msgstr "Correo por Internet Parte-3" msgid "Internet Printing Protocol" msgstr "Protocolo de Impresión de Internet IPP" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "Argumentos del nombre del papel no válidos." @@ -5844,6 +5869,9 @@ msgstr "Valor 'compression' \"%s\" no implementado." msgid "Unsupported 'document-format' value \"%s\"." msgstr "Valor 'document-format' \"%s\" no implementado." +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "Valor 'job-name' no implementado." @@ -5940,8 +5968,8 @@ msgstr "Uso: cupstestdsc [opciones] nombre_archivo.ps [... nombre_archivo.ps]" msgid "" "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]" msgstr "" -"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN.ppd" -"[.gz]]" +"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN." +"ppd[.gz]]" msgid "" "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n" @@ -7450,6 +7478,10 @@ msgstr "ippfind: Falta una expresión antes de \"--or\"." msgid "ippfind: Missing key name after %s." msgstr "ippfind: Falta un nombre de clave tras %s." +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "ippfind: Falta el paréntesis de apertura." diff --git a/locale/cups_fr.po b/locale/cups_fr.po index 341551b..ea3d554 100644 --- a/locale/cups_fr.po +++ b/locale/cups_fr.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 1.6\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2012-12-12 11:12+0100\n" "Last-Translator: Stéphane Blondon <stephane.blondon@gmail.com>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -1358,6 +1358,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1408,6 +1414,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1421,6 +1433,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "%-7s %-7.7s %-7d %-31.31s %.0f octets" @@ -2669,6 +2687,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "" @@ -2764,6 +2786,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "" #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "Valeur de number-up %d incorrecte." @@ -2797,10 +2823,6 @@ msgstr "" msgid "Bad request version number %d.%d." msgstr "" -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "" @@ -3696,6 +3718,9 @@ msgstr "Affranchissement Internet en 3 parties" msgid "Internet Printing Protocol" msgstr "Internet Printing Protocol" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "" @@ -5628,6 +5653,9 @@ msgstr "" msgid "Unsupported 'document-format' value \"%s\"." msgstr "" +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "" @@ -7199,6 +7227,10 @@ msgstr "" msgid "ippfind: Missing key name after %s." msgstr "" +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "" diff --git a/locale/cups_it.po b/locale/cups_it.po index 3acab47..1d5ee1d 100644 --- a/locale/cups_it.po +++ b/locale/cups_it.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 1.6\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2013-07-14 12:00+0200\n" "Last-Translator: Giovanni Scafora <giovanni@archlinux.org>\n" "Language-Team: Arch Linux Italian Team <giovanni@archlinux.org>\n" @@ -1500,6 +1500,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1550,6 +1556,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1563,6 +1575,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "%-7s %-7.7s %-7d %-31.31s %.0f byte" @@ -2827,6 +2845,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "Il valore di 'document-format' non è valido \"%s\"." @@ -2922,6 +2944,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "Il valore di notify-recipient-uri \"%s\" non è valido." #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "Il valore di number-up %d non è valido." @@ -2955,10 +2981,6 @@ msgstr "L'ID della richiesta %d non è valido." msgid "Bad request version number %d.%d." msgstr "Il numero della versione richiesta %d.%d non è valido." -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "" @@ -3864,6 +3886,9 @@ msgstr "Internet Postage 3-Part" msgid "Internet Printing Protocol" msgstr "Internet Printing Protocol" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "Gli argomenti del nome del supporto non sono validi." @@ -5832,6 +5857,9 @@ msgstr "Valore di 'compressione' non supportato \"%s\"." msgid "Unsupported 'document-format' value \"%s\"." msgstr "Valore di 'document-format' non supportato \"%s\"." +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "Valore di 'job-name' non supportato." @@ -7424,6 +7452,10 @@ msgstr "ippfind: manca l'espressione prima di \"--or\"." msgid "ippfind: Missing key name after %s." msgstr "ippfind: manca il nome della chiave dopo %s." +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "ippfind: mancano le parentesi aperte." diff --git a/locale/cups_ja.po b/locale/cups_ja.po index a07da5f..7949b4a 100644 --- a/locale/cups_ja.po +++ b/locale/cups_ja.po @@ -28,7 +28,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 2.0\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2014-11-15 19:27+0900\n" "Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n" "Language-Team: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n" @@ -1476,6 +1476,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1526,6 +1532,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1539,6 +1551,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "%-7s %-7.7s %-7d %-31.31s %.0f バイト" @@ -2797,6 +2815,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "誤った 'document-format' の値です \"%s\"。" @@ -2892,6 +2914,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "URI \"%s\" は不正な notify-recipient-uri です。" #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "%d は不正な number-up 値です。" @@ -2925,10 +2951,6 @@ msgstr "%d は無効なリクエストIDです。" msgid "Bad request version number %d.%d." msgstr "バージョン番号 %d.%d は無効なリクエストです。" -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "URI のリソースが不正" @@ -3838,6 +3860,9 @@ msgstr "Internet Postage 3-Part" msgid "Internet Printing Protocol" msgstr "インターネット印刷プロトコル" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "無効なメディア名引数です。" @@ -5784,6 +5809,9 @@ msgstr "\"%s\" はサポートされていない 'compression' の値です。" msgid "Unsupported 'document-format' value \"%s\"." msgstr "\"%s\" はサポートされていない 'document-format' の値です。" +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "サポートされていない 'job-name' の値です。" @@ -7384,6 +7412,10 @@ msgstr "ippfind: \"--or\" の前には式が必要です。" msgid "ippfind: Missing key name after %s." msgstr "ippfind: %s のあとにはキー名が必要です。" +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "ippfind: 開きカッコが足りません。" diff --git a/locale/cups_pt_BR.po b/locale/cups_pt_BR.po index 89d1a34..136728a 100644 --- a/locale/cups_pt_BR.po +++ b/locale/cups_pt_BR.po @@ -40,7 +40,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 2.1.2\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2016-01-31 16:45-0200\n" "Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n" "Language-Team: Brazilian Portuguese <traducao-cups-pt-br@googlegroups.com>\n" @@ -1509,6 +1509,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1559,6 +1565,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1572,6 +1584,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bytes" @@ -2831,6 +2849,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "Valor de \"document-format\" inválido \"%s\"." @@ -2926,6 +2948,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "notify-recipient-uri inválido \"%s\"." #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "Valor de number-up inválido %d." @@ -2959,10 +2985,6 @@ msgstr "ID da requisição inválido %d." msgid "Bad request version number %d.%d." msgstr "Número da versão de requisição inválido %d.%d." -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "Recurso inválido na URI" @@ -3867,6 +3889,9 @@ msgstr "Internet Postage Parte-3" msgid "Internet Printing Protocol" msgstr "Protocolo de Impressão para Internet" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "Argumentos de nome de mídia inválidos." @@ -5837,6 +5862,9 @@ msgstr "Não suporte a \"compression\" com valor \"%s\"." msgid "Unsupported 'document-format' value \"%s\"." msgstr "Não há suporte a \"document-format\" com valor \"%s\"." +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "Não há suporte ao valor de \"job-name\"." @@ -7429,6 +7457,10 @@ msgstr "ippfind: Faltando expressão antes de \"--or\"." msgid "ippfind: Missing key name after %s." msgstr "ippfind: Faltando nome da chave após %s." +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "ippfind: Faltando parênteses de abertura." diff --git a/locale/cups_ru.po b/locale/cups_ru.po index c801f06..0bad416 100644 --- a/locale/cups_ru.po +++ b/locale/cups_ru.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 2.0\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2015-01-28 12:00-0800\n" "Last-Translator: Aleksandr Proklov\n" "Language-Team: PuppyRus Linux Team\n" @@ -1437,6 +1437,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1487,6 +1493,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1500,6 +1512,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "%-7s %-7.7s %-7d %-31.31s %.0f байт" @@ -2765,6 +2783,10 @@ msgid "Back Print Film" msgstr "" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "" @@ -2860,6 +2882,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "Неверный notify-recipient-uri \"%s\"." #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "Неверное значение number-up %d." @@ -2893,10 +2919,6 @@ msgstr "Неверный ID запроса %d." msgid "Bad request version number %d.%d." msgstr "Неверный номер версии запроса %d.%d." -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "" @@ -3795,6 +3817,9 @@ msgstr "Наклейки Internet Postage 3-Part" msgid "Internet Printing Protocol" msgstr "Протокол интернет-печати" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "Неверные аргументы имени бумаги." @@ -5743,6 +5768,9 @@ msgstr "Неподдерживаемое значение 'compression' \"%s\"." msgid "Unsupported 'document-format' value \"%s\"." msgstr "Неподдерживаемое значение'document-format' \"%s\"." +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "Неподдерживаемое значение 'job-name'." @@ -7340,6 +7368,10 @@ msgstr "ippfind: Отсутствует выражение перед \"--or\"." msgid "ippfind: Missing key name after %s." msgstr "ippfind: Отсутствует key name после %s." +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "ippfind: Отсутствует открывающая скобка." diff --git a/locale/cups_zh_CN.po b/locale/cups_zh_CN.po index ae34e8a..454ab10 100644 --- a/locale/cups_zh_CN.po +++ b/locale/cups_zh_CN.po @@ -29,7 +29,7 @@ msgid "" msgstr "" "Project-Id-Version: CUPS 1.6\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-03-19 18:36-0400\n" +"POT-Creation-Date: 2018-06-05 11:58-0400\n" "PO-Revision-Date: 2017-06-11 12:38+0800\n" "Last-Translator: Mingcong Bai <jeffbai@aosc.xyz>\n" "Language-Team: \n" @@ -1431,6 +1431,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section " +"8.1)." +msgstr "" + +#, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" @@ -1481,6 +1487,12 @@ msgid "" msgstr "" #, c-format +msgid "" +"\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section " +"8.3)." +msgstr "" + +#, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" @@ -1494,6 +1506,12 @@ msgid "" "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" +msgid "\"requesting-user-name\" attribute in wrong group." +msgstr "" + +msgid "\"requesting-user-name\" attribute with wrong syntax." +msgstr "" + #, c-format msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes" msgstr "%-7s %-7.7s %-7d %-31.31s %.0f 字节" @@ -2742,6 +2760,10 @@ msgid "Back Print Film" msgstr "印片用胶片" #, c-format +msgid "Bad '%s' value." +msgstr "" + +#, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "无效的“document-format”值“%s”。" @@ -2837,6 +2859,10 @@ msgid "Bad notify-recipient-uri \"%s\"." msgstr "无效的 notify-recipient-uri 值“%s”。" #, c-format +msgid "Bad notify-user-data \"%s\"." +msgstr "" + +#, c-format msgid "Bad number-up value %d." msgstr "无效的 number-up 值 %d。" @@ -2870,10 +2896,6 @@ msgstr "无效的请求 ID %d。" msgid "Bad request version number %d.%d." msgstr "无效的请求版本号 %d.%d。" -#, c-format -msgid "Bad requesting-user-name value: %s" -msgstr "" - msgid "Bad resource in URI" msgstr "URI 中的资源无效" @@ -3777,6 +3799,9 @@ msgstr "网邮 3 部" msgid "Internet Printing Protocol" msgstr "互联网打印协议" +msgid "Invalid group tag." +msgstr "" + msgid "Invalid media name arguments." msgstr "无效的媒体名称参数。" @@ -5706,6 +5731,9 @@ msgstr "不支持的“compression”值“%s”。" msgid "Unsupported 'document-format' value \"%s\"." msgstr "不支持的“document-format”值“%s”。" +msgid "Unsupported 'job-hold-until' value." +msgstr "" + msgid "Unsupported 'job-name' value." msgstr "不支持的“job-name”值。" @@ -7295,6 +7323,10 @@ msgstr "ippfind:“--or”前缺少表达式。" msgid "ippfind: Missing key name after %s." msgstr "ippfind:在 %s 后缺少键名。" +#, c-format +msgid "ippfind: Missing name after %s." +msgstr "" + msgid "ippfind: Missing open parenthesis." msgstr "ippfind:缺少左括号。" diff --git a/man/cups-files.conf.man.in b/man/cups-files.conf.man.in index 2ed4686..6ac4e72 100644 --- a/man/cups-files.conf.man.in +++ b/man/cups-files.conf.man.in @@ -157,6 +157,11 @@ The server name may be included in filenames using the string "%s", for example: .fi The default is "/var/log/cups/page_log". +.\"#PassEnv +.TP 5 +\fBPassEnv \fIvariable \fR[ ... \fIvariable \fR] +Passes the specified environment variable(s) to child processes. +Note: the standard CUPS filter and backend environment variables cannot be overridden using this directive. .\"#RemoteRoot .TP 5 \fBRemoteRoot \fIusername\fR @@ -191,6 +196,11 @@ macOS uses its keychain database to store certificates and keys while other plat \fBServerRoot \fIdirectory\fR Specifies the directory containing the server configuration files. The default is "/etc/cups". +.\"#SetEnv +.TP 5 +\fBSetEnv \fIvariable value\fR +Set the specified environment variable to be passed to child processes. +Note: the standard CUPS filter and backend environment variables cannot be overridden using this directive. .\"#StateDir .TP 5 \fBStateDir \fIdirectory\fR diff --git a/man/cupsd.conf.man.in b/man/cupsd.conf.man.in index ab89e15..15a5fa9 100644 --- a/man/cupsd.conf.man.in +++ b/man/cupsd.conf.man.in @@ -1,8 +1,8 @@ .\" .\" cupsd.conf man page for CUPS. .\" -.\" Copyright 2007-2017 by Apple Inc. -.\" Copyright 1997-2006 by Easy Software Products. +.\" Copyright © 2007-2018 by Apple Inc. +.\" Copyright © 1997-2006 by Easy Software Products. .\" .\" These coded instructions, statements, and computer programs are the .\" property of Apple Inc. and are protected by Federal copyright @@ -10,7 +10,7 @@ .\" 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/". .\" -.TH cupsd.conf 5 "CUPS" "19 October 2017" "Apple Inc." +.TH cupsd.conf 5 "CUPS" "24 April 2018" "Apple Inc." .SH NAME cupsd.conf \- server configuration file for cups .SH DESCRIPTION @@ -132,12 +132,12 @@ The default value is "30". \fBErrorPolicy abort-job\fR Specifies that a failed print job should be aborted (discarded) unless otherwise specified for the printer. .TP 5 +\fBErrorPolicy retry-current-job\fR +Specifies that a failed print job should be retried immediately unless otherwise specified for the printer. +.TP 5 \fBErrorPolicy retry-job\fR Specifies that a failed print job should be retried at a later time unless otherwise specified for the printer. .TP 5 -\fBErrorPolicy retry-this-job\fR -Specifies that a failed print job should be retried immediately unless otherwise specified for the printer. -.TP 5 \fBErrorPolicy stop-printer\fR Specifies that a failed print job should stop the printer unless otherwise specified for the printer. The 'stop-printer' error policy is the default. .\"#FilterLimit @@ -342,10 +342,6 @@ The default is "1048576" (1MB). \fBMultipleOperationTimeout \fIseconds\fR Specifies the maximum amount of time to allow between files in a multiple file print job. The default is "300" (5 minutes). -.\"#PassEnv -.TP 5 -\fBPassEnv \fIvariable \fR[ ... \fIvariable \fR] -Passes the specified environment variable(s) to child processes. .\"#Policy .TP 5 \fB<Policy \fIname\fB> \fR... \fB</Policy>\fR @@ -426,10 +422,6 @@ Specifies what information is included in the Server header of HTTP responses. command. "Full" reports "CUPS 2.0.0 (UNAME) IPP/2.0". The default is "Minimal". -.\"#SetEnv -.TP 5 -\fBSetEnv \fIvariable value\fR -Set the specified environment variable to be passed to child processes. .\"#SSLListen .TP 5 \fBSSLListen \fIipv4-address\fB:\fIport\fR @@ -884,4 +876,4 @@ Require authentication for accesses from outside the 10. network: .BR subscriptions.conf (5), CUPS Online Help (http://localhost:631/help) .SH COPYRIGHT -Copyright \[co] 2007-2017 by Apple Inc. +Copyright \[co] 2007-2018 by Apple Inc. diff --git a/man/ippfind.man b/man/ippfind.man index 219c47d..253e057 100644 --- a/man/ippfind.man +++ b/man/ippfind.man @@ -1,7 +1,7 @@ .\" .\" ippfind man page for CUPS. .\" -.\" Copyright 2013-2014 by Apple Inc. +.\" Copyright © 2013-2018 by Apple Inc. .\" .\" These coded instructions, statements, and computer programs are the .\" property of Apple Inc. and are protected by Federal copyright @@ -9,7 +9,7 @@ .\" 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/". .\" -.TH ippfind 1 "CUPS" "11 June 2014" "Apple Inc." +.TH ippfind 1 "CUPS" "14 February 2018" "Apple Inc." .SH NAME ippfind \- find internet printing protocol printers .SH SYNOPSIS @@ -84,6 +84,11 @@ The result is true if the URI is accessible, false otherwise. .B \-\-local True if the service is local to this computer. .TP 5 +\fB\-N \fIname\fR +.TP 5 +\fB\-\-literal\-name \fIname\fR +True if the service instance name matches the given name. +.TP 5 \fB\-n \fIregex\fR .TP 5 \fB\-\-name \fIregex\fR @@ -253,4 +258,4 @@ Similarly, to send a PostScript test page to every PostScript printer, run: .SH SEE ALSO .BR ipptool (1) .SH COPYRIGHT -Copyright \[co] 2013-2015 by Apple Inc. +Copyright \[co] 2013-2018 by Apple Inc. diff --git a/man/lpoptions.man.in b/man/lpoptions.man.in index 2aab12f..3e63b5c 100644 --- a/man/lpoptions.man.in +++ b/man/lpoptions.man.in @@ -1,8 +1,8 @@ .\" .\" lpoptions man page for CUPS. .\" -.\" Copyright 2007-2014 by Apple Inc. -.\" Copyright 1997-2006 by Easy Software Products. +.\" Copyright © 2007-2018 by Apple Inc. +.\" Copyright © 1997-2006 by Easy Software Products. .\" .\" These coded instructions, statements, and computer programs are the .\" property of Apple Inc. and are protected by Federal copyright @@ -10,7 +10,7 @@ .\" 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/". .\" -.TH lpoptions 1 "CUPS" "12 June 2014" "Apple Inc." +.TH lpoptions 1 "CUPS" "10 April 2018" "Apple Inc." .SH NAME lpoptions \- display or set printer options and defaults .SH SYNOPSIS @@ -18,9 +18,6 @@ lpoptions \- display or set printer options and defaults [ .B \-E ] [ -.B \-U -.I username -] [ \fB\-h \fIserver\fR[\fB:\fIport\fR] ] \fB\-d \fIdestination\fR[\fB/\fIinstance\fR] @@ -32,9 +29,6 @@ lpoptions \- display or set printer options and defaults [ .B \-E ] [ -.B \-U -.I username -] [ \fB\-h \fIserver\fR[\fB:\fIport\fR] ] [ \fB\-p \fIdestination\fR[\fB/\fIinstance\fR] @@ -45,9 +39,6 @@ lpoptions \- display or set printer options and defaults [ .B \-E ] [ -.B \-U -.I username -] [ \fB\-h \fIserver\fR[\fB:\fIport\fR] ] [ \fB\-p \fIdestination\fR[\fB/\fIinstance\fR] @@ -59,9 +50,6 @@ lpoptions \- display or set printer options and defaults [ .B \-E ] [ -.B \-U -.I username -] [ \fB\-h \fIserver\fR[\fB:\fIport\fR] ] \fB\-x \fIdestination\fR[\fB/\fIinstance\fR] @@ -86,9 +74,6 @@ Otherwise, the per-user defaults are managed in the \fI~/.cups/lpoptions\fR file .B \-E Enables encryption when communicating with the CUPS server. .TP 5 -\fB\-U \fIusername\fR -Uses an alternate username. -.TP 5 \fB\-d \fIdestination\fR[\fB/\fIinstance\fR] Sets the user default printer to \fIdestination\fR. If \fIinstance\fR is supplied then that particular instance is used. @@ -133,4 +118,4 @@ The \fBlpoptions\fR command is unique to CUPS. .BR lprm (1), CUPS Online Help (http://localhost:631/help) .SH COPYRIGHT -Copyright \[co] 2007-2017 by Apple Inc. +Copyright \[co] 2007-2018 by Apple Inc. diff --git a/notifier/mailto.c b/notifier/mailto.c index 7b766f5..cbb0f52 100644 --- a/notifier/mailto.c +++ b/notifier/mailto.c @@ -1,8 +1,8 @@ /* * "mailto" notifier for CUPS. * - * Copyright 2007-2011 by Apple Inc. - * Copyright 1997-2005 by Easy Software Products. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2005 by Easy Software Products. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright @@ -36,8 +36,7 @@ char mailtoSendmail[1024]; /* Sendmail program to use */ * Local functions... */ -void email_message(const char *to, const char *subject, - const char *text); +void email_message(const char *to, const char *subject, const char *text); int load_configuration(void); cups_file_t *pipe_sendmail(const char *to); void print_attributes(ipp_t *ipp, int indent); @@ -233,7 +232,9 @@ email_message(const char *to, /* I - Recipient of message */ if (strchr(mailtoSMTPServer, ':')) + { fp = cupsFileOpen(mailtoSMTPServer, "s"); + } else { char spec[1024]; /* Host:service spec */ @@ -252,6 +253,10 @@ email_message(const char *to, /* I - Recipient of message */ fprintf(stderr, "DEBUG: Connected to \"%s\"...\n", mailtoSMTPServer); + if (!cupsFileGets(fp, response, sizeof(response)) || atoi(response) >= 500) + goto smtp_error; + fprintf(stderr, "DEBUG: <<< %s\n", response); + cupsFilePrintf(fp, "HELO %s\r\n", httpGetHostname(NULL, hostbuf, sizeof(hostbuf))); fprintf(stderr, "DEBUG: >>> HELO %s\n", hostbuf); diff --git a/packaging/cups.spec b/packaging/cups.spec index d582489..da84b48 100644 --- a/packaging/cups.spec +++ b/packaging/cups.spec @@ -43,12 +43,12 @@ Summary: CUPS Name: cups -Version: 2.2.7 +Version: 2.2.8 Release: 0 Epoch: 1 License: GPL Group: System Environment/Daemons -Source: https://github.com/apple/cups/releases/download/v2.2.7/cups-2.2.7-source.tar.gz +Source: https://github.com/apple/cups/releases/download/v2.2.8/cups-2.2.8-source.tar.gz Url: http://www.cups.org Packager: Anonymous <anonymous@example.com> Vendor: Example Corp diff --git a/scheduler/auth.c b/scheduler/auth.c index 8b134b5..fa4e271 100644 --- a/scheduler/auth.c +++ b/scheduler/auth.c @@ -1,8 +1,8 @@ /* * Authorization routines for the CUPS scheduler. * - * Copyright 2007-2016 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products, all rights reserved. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2007 by Easy Software Products, all rights reserved. * * This file contains Kerberos support code, copyright 2006 by * Jelmer Vernooij. @@ -71,9 +71,6 @@ static int check_authref(cupsd_client_t *con, const char *right); static int compare_locations(cupsd_location_t *a, cupsd_location_t *b); static cupsd_authmask_t *copy_authmask(cupsd_authmask_t *am, void *data); -#if !HAVE_LIBPAM -static char *cups_crypt(const char *pw, const char *salt); -#endif /* !HAVE_LIBPAM */ static void free_authmask(cupsd_authmask_t *am, void *data); #if HAVE_LIBPAM static int pam_func(int, const struct pam_message **, @@ -694,14 +691,14 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */ * client... */ - pass = cups_crypt(password, pw->pw_passwd); + pass = crypt(password, pw->pw_passwd); if (!pass || strcmp(pw->pw_passwd, pass)) { # ifdef HAVE_SHADOW_H if (spw) { - pass = cups_crypt(password, spw->sp_pwdp); + pass = crypt(password, spw->sp_pwdp); if (pass == NULL || strcmp(spw->sp_pwdp, pass)) { @@ -1995,129 +1992,6 @@ copy_authmask(cupsd_authmask_t *mask, /* I - Existing auth mask */ } -#if !HAVE_LIBPAM -/* - * 'cups_crypt()' - Encrypt the password using the DES or MD5 algorithms, - * as needed. - */ - -static char * /* O - Encrypted password */ -cups_crypt(const char *pw, /* I - Password string */ - const char *salt) /* I - Salt (key) string */ -{ - if (!strncmp(salt, "$1$", 3)) - { - /* - * Use MD5 passwords without the benefit of PAM; this is for - * Slackware Linux, and the algorithm was taken from the - * old shadow-19990827/lib/md5crypt.c source code... :( - */ - - int i; /* Looping var */ - unsigned long n; /* Output number */ - int pwlen; /* Length of password string */ - const char *salt_end; /* End of "salt" data for MD5 */ - char *ptr; /* Pointer into result string */ - _cups_md5_state_t state; /* Primary MD5 state info */ - _cups_md5_state_t state2; /* Secondary MD5 state info */ - unsigned char digest[16]; /* MD5 digest result */ - static char result[120]; /* Final password string */ - - - /* - * Get the salt data between dollar signs, e.g. $1$saltdata$md5. - * Get a maximum of 8 characters of salt data after $1$... - */ - - for (salt_end = salt + 3; *salt_end && (salt_end - salt) < 11; salt_end ++) - if (*salt_end == '$') - break; - - /* - * Compute the MD5 sum we need... - */ - - pwlen = strlen(pw); - - _cupsMD5Init(&state); - _cupsMD5Append(&state, (unsigned char *)pw, pwlen); - _cupsMD5Append(&state, (unsigned char *)salt, salt_end - salt); - - _cupsMD5Init(&state2); - _cupsMD5Append(&state2, (unsigned char *)pw, pwlen); - _cupsMD5Append(&state2, (unsigned char *)salt + 3, salt_end - salt - 3); - _cupsMD5Append(&state2, (unsigned char *)pw, pwlen); - _cupsMD5Finish(&state2, digest); - - for (i = pwlen; i > 0; i -= 16) - _cupsMD5Append(&state, digest, i > 16 ? 16 : i); - - for (i = pwlen; i > 0; i >>= 1) - _cupsMD5Append(&state, (unsigned char *)((i & 1) ? "" : pw), 1); - - _cupsMD5Finish(&state, digest); - - for (i = 0; i < 1000; i ++) - { - _cupsMD5Init(&state); - - if (i & 1) - _cupsMD5Append(&state, (unsigned char *)pw, pwlen); - else - _cupsMD5Append(&state, digest, 16); - - if (i % 3) - _cupsMD5Append(&state, (unsigned char *)salt + 3, salt_end - salt - 3); - - if (i % 7) - _cupsMD5Append(&state, (unsigned char *)pw, pwlen); - - if (i & 1) - _cupsMD5Append(&state, digest, 16); - else - _cupsMD5Append(&state, (unsigned char *)pw, pwlen); - - _cupsMD5Finish(&state, digest); - } - - /* - * Copy the final sum to the result string and return... - */ - - memcpy(result, salt, (size_t)(salt_end - salt)); - ptr = result + (salt_end - salt); - *ptr++ = '$'; - - for (i = 0; i < 5; i ++, ptr += 4) - { - n = ((((unsigned)digest[i] << 8) | (unsigned)digest[i + 6]) << 8); - - if (i < 4) - n |= (unsigned)digest[i + 12]; - else - n |= (unsigned)digest[5]; - - to64(ptr, n, 4); - } - - to64(ptr, (unsigned)digest[11], 2); - ptr += 2; - *ptr = '\0'; - - return (result); - } - else - { - /* - * Use the standard crypt() function... - */ - - return (crypt(pw, salt)); - } -} -#endif /* !HAVE_LIBPAM */ - - /* * 'free_authmask()' - Free function for auth masks. */ diff --git a/scheduler/client.c b/scheduler/client.c index c36c1d2..0719700 100644 --- a/scheduler/client.c +++ b/scheduler/client.c @@ -1,8 +1,8 @@ /* * Client routines for the CUPS scheduler. * - * Copyright 2007-2017 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products, all rights reserved. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2007 by Easy Software Products, all rights reserved. * * This file contains Kerberos support code, copyright 2006 by * Jelmer Vernooij. @@ -818,6 +818,18 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ if (status == HTTP_STATUS_OK) { + /* + * Record whether the client is a web browser. "Mozilla" was the original + * and it seems that every web browser in existence now uses that as the + * prefix with additional information identifying *which* browser. + * + * Chrome (at least) has problems with multiple WWW-Authenticate values in + * a single header, so we only report Basic or Negotiate to web browsers and + * leave the multiple choices to the native CUPS client... + */ + + con->is_browser = !strncmp(httpGetField(con->http, HTTP_FIELD_USER_AGENT), "Mozilla/", 8); + if (httpGetField(con->http, HTTP_FIELD_ACCEPT_LANGUAGE)[0]) { /* @@ -2350,18 +2362,20 @@ cupsdSendHeader( auth_str[0] = '\0'; if (auth_type == CUPSD_AUTH_BASIC) + { strlcpy(auth_str, "Basic realm=\"CUPS\"", sizeof(auth_str)); + } else if (auth_type == CUPSD_AUTH_NEGOTIATE) { -#ifdef AF_LOCAL +#if defined(SO_PEERCRED) && defined(AF_LOCAL) if (httpAddrFamily(httpGetAddress(con->http)) == AF_LOCAL) - strlcpy(auth_str, "Basic realm=\"CUPS\"", sizeof(auth_str)); + strlcpy(auth_str, "PeerCred", sizeof(auth_str)); else -#endif /* AF_LOCAL */ +#endif /* SO_PEERCRED && AF_LOCAL */ strlcpy(auth_str, "Negotiate", sizeof(auth_str)); } - if (con->best && auth_type != CUPSD_AUTH_NEGOTIATE && + if (con->best && auth_type != CUPSD_AUTH_NEGOTIATE && !con->is_browser && !_cups_strcasecmp(httpGetHostname(con->http, NULL, 0), "localhost")) { /* diff --git a/scheduler/client.h b/scheduler/client.h index b26d04c..beddab0 100644 --- a/scheduler/client.h +++ b/scheduler/client.h @@ -1,8 +1,8 @@ /* * Client definitions for the CUPS scheduler. * - * Copyright 2007-2016 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products, all rights reserved. + * Copyright © 2007-2018 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 @@ -30,6 +30,7 @@ struct cupsd_client_s struct timeval start; /* Request start time */ http_state_t operation; /* Request operation */ off_t bytes; /* Bytes transferred for this request */ + int is_browser; /* Is the client a web browser? */ int type; /* AuthType for username */ char username[HTTP_MAX_VALUE], /* Username from Authorization: line */ diff --git a/scheduler/conf.c b/scheduler/conf.c index 8c2694f..9c1be70 100644 --- a/scheduler/conf.c +++ b/scheduler/conf.c @@ -1,8 +1,8 @@ /* * Configuration routines for the CUPS scheduler. * - * Copyright 2007-2017 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products, all rights reserved. + * Copyright © 2007-2018 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 @@ -1481,13 +1481,25 @@ cupsdReadConfiguration(void) } } - cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReadConfiguration: NumPolicies=%d", - cupsArrayCount(Policies)); - for (i = 0, p = (cupsd_policy_t *)cupsArrayFirst(Policies); - p; - i ++, p = (cupsd_policy_t *)cupsArrayNext(Policies)) - cupsdLogMessage(CUPSD_LOG_DEBUG2, - "cupsdReadConfiguration: Policies[%d]=\"%s\"", i, p->name); + if (LogLevel >= CUPSD_LOG_DEBUG2) + { + cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReadConfiguration: NumPolicies=%d", + cupsArrayCount(Policies)); + for (i = 0, p = (cupsd_policy_t *)cupsArrayFirst(Policies); + p; + i ++, p = (cupsd_policy_t *)cupsArrayNext(Policies)) + { + int j; /* Looping var */ + cupsd_location_t *loc; /* Current location */ + + cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReadConfiguration: Policies[%d]=\"%s\"", i, p->name); + + for (j = 0, loc = (cupsd_location_t *)cupsArrayFirst(p->ops); loc; j ++, loc = (cupsd_location_t *)cupsArrayNext(p->ops)) + { + cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReadConfiguration: ops[%d]=%s", j, ippOpString(loc->op)); + } + } + } /* * If we are doing a full reload or the server root has changed, flush @@ -2916,13 +2928,10 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */ /* Line from file */ temp[HTTP_MAX_BUFFER], /* Temporary buffer for value */ - *value, /* Pointer to value */ - *valueptr; /* Pointer into value */ + *value; /* Pointer to value */ int valuelen; /* Length of value */ http_addrlist_t *addrlist, /* Address list */ *addr; /* Current address */ - cups_file_t *incfile; /* Include file */ - char incname[1024]; /* Include filename */ /* @@ -2937,28 +2946,7 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */ * Decode the directive... */ - if (!_cups_strcasecmp(line, "Include") && value) - { - /* - * Include filename - */ - - if (value[0] == '/') - strlcpy(incname, value, sizeof(incname)); - else - snprintf(incname, sizeof(incname), "%s/%s", ServerRoot, value); - - if ((incfile = cupsFileOpen(incname, "rb")) == NULL) - cupsdLogMessage(CUPSD_LOG_ERROR, - "Unable to include config file \"%s\" - %s", - incname, strerror(errno)); - else - { - read_cupsd_conf(incfile); - cupsFileClose(incfile); - } - } - else if (!_cups_strcasecmp(line, "<Location") && value) + if (!_cups_strcasecmp(line, "<Location") && value) { /* * <Location path> @@ -3354,31 +3342,6 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */ cupsdLogMessage(CUPSD_LOG_WARN, "Unknown ServerTokens %s on line %d of %s.", value, linenum, ConfigurationFile); } - else if (!_cups_strcasecmp(line, "PassEnv") && value) - { - /* - * PassEnv variable [... variable] - */ - - for (; *value;) - { - for (valuelen = 0; value[valuelen]; valuelen ++) - if (_cups_isspace(value[valuelen]) || value[valuelen] == ',') - break; - - if (value[valuelen]) - { - value[valuelen] = '\0'; - valuelen ++; - } - - cupsdSetEnv(value, NULL); - - for (value += valuelen; *value; value ++) - if (!_cups_isspace(*value) || *value != ',') - break; - } - } else if (!_cups_strcasecmp(line, "ServerAlias") && value) { /* @@ -3407,30 +3370,6 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */ break; } } - else if (!_cups_strcasecmp(line, "SetEnv") && value) - { - /* - * SetEnv variable value - */ - - for (valueptr = value; *valueptr && !isspace(*valueptr & 255); valueptr ++); - - if (*valueptr) - { - /* - * Found a value... - */ - - while (isspace(*valueptr & 255)) - *valueptr++ = '\0'; - - cupsdSetEnv(value, valueptr); - } - else - cupsdLogMessage(CUPSD_LOG_ERROR, - "Missing value for SetEnv directive on line %d of %s.", - linenum, ConfigurationFile); - } else if (!_cups_strcasecmp(line, "AccessLog") || !_cups_strcasecmp(line, "CacheDir") || !_cups_strcasecmp(line, "ConfigFilePerm") || @@ -3444,6 +3383,7 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */ !_cups_strcasecmp(line, "LogFilePerm") || !_cups_strcasecmp(line, "LPDConfigFile") || !_cups_strcasecmp(line, "PageLog") || + !_cups_strcasecmp(line, "PassEnv") || !_cups_strcasecmp(line, "Printcap") || !_cups_strcasecmp(line, "PrintcapFormat") || !_cups_strcasecmp(line, "RemoteRoot") || @@ -3453,6 +3393,7 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */ !_cups_strcasecmp(line, "ServerKey") || !_cups_strcasecmp(line, "ServerKeychain") || !_cups_strcasecmp(line, "ServerRoot") || + !_cups_strcasecmp(line, "SetEnv") || !_cups_strcasecmp(line, "SMBConfigFile") || !_cups_strcasecmp(line, "StateDir") || !_cups_strcasecmp(line, "SystemGroup") || @@ -3482,10 +3423,49 @@ read_cupsd_conf(cups_file_t *fp) /* I - File to read from */ static int /* O - 1 on success, 0 on failure */ read_cups_files_conf(cups_file_t *fp) /* I - File to read from */ { - int linenum; /* Current line number */ + int i, /* Looping var */ + linenum; /* Current line number */ char line[HTTP_MAX_BUFFER], /* Line from file */ *value; /* Value from line */ struct group *group; /* Group */ + static const char * const prohibited_env[] = + { /* Prohibited environment variables */ + "APPLE_LANGUAGE", + "AUTH_DOMAIN", + "AUTH_INFO_REQUIRED", + "AUTH_NEGOTIATE", + "AUTH_PASSWORD", + "AUTH_UID", + "AUTH_USERNAME", + "CHARSET", + "CLASS", + "CLASSIFICATION", + "CONTENT_TYPE", + "CUPS_CACHEDIR", + "CUPS_DATADIR", + "CUPS_DOCROOT", + "CUPS_FILETYPE", + "CUPS_FONTPATH", + "CUPS_MAX_MESSAGE", + "CUPS_REQUESTROOT", + "CUPS_SERVERBIN", + "CUPS_SERVERROOT", + "CUPS_STATEDIR", + "DEVICE_URI", + "FINAL_CONTENT_TYPE", + "HOME", + "LANG", + "PPD", + "PRINTER", + "PRINTER_INFO", + "PRINTER_LOCATION", + "PRINTER_STATE_REASONS", + "RIP_CACHE", + "SERVER_ADMIN", + "SOFTWARE", + "TMPDIR", + "USER" + }; /* @@ -3523,6 +3503,47 @@ read_cups_files_conf(cups_file_t *fp) /* I - File to read from */ } } } + else if (!_cups_strcasecmp(line, "PassEnv") && value) + { + /* + * PassEnv variable [... variable] + */ + + int valuelen; /* Length of variable name */ + + for (; *value;) + { + for (valuelen = 0; value[valuelen]; valuelen ++) + if (_cups_isspace(value[valuelen]) || value[valuelen] == ',') + break; + + if (value[valuelen]) + { + value[valuelen] = '\0'; + valuelen ++; + } + + for (i = 0; i < (int)(sizeof(prohibited_env) / sizeof(prohibited_env[0])); i ++) + { + if (!strcmp(value, prohibited_env[i])) + { + cupsdLogMessage(CUPSD_LOG_ERROR, "Environment variable \"%s\" cannot be passed through on line %d of %s.", value, linenum, CupsFilesFile); + + if (FatalErrors & CUPSD_FATAL_CONFIG) + return (0); + else + break; + } + } + + if (i >= (int)(sizeof(prohibited_env) / sizeof(prohibited_env[0]))) + cupsdSetEnv(value, NULL); + + for (value += valuelen; *value; value ++) + if (!_cups_isspace(*value) || *value != ',') + break; + } + } else if (!_cups_strcasecmp(line, "PrintcapFormat") && value) { /* @@ -3568,6 +3589,46 @@ read_cups_files_conf(cups_file_t *fp) /* I - File to read from */ return (0); } } + else if (!_cups_strcasecmp(line, "SetEnv") && value) + { + /* + * SetEnv variable value + */ + + char *valueptr; /* Pointer to environment variable value */ + + for (valueptr = value; *valueptr && !isspace(*valueptr & 255); valueptr ++); + + if (*valueptr) + { + /* + * Found a value... + */ + + while (isspace(*valueptr & 255)) + *valueptr++ = '\0'; + + for (i = 0; i < (int)(sizeof(prohibited_env) / sizeof(prohibited_env[0])); i ++) + { + if (!strcmp(value, prohibited_env[i])) + { + cupsdLogMessage(CUPSD_LOG_ERROR, "Environment variable \"%s\" cannot be set on line %d of %s.", value, linenum, CupsFilesFile); + + if (FatalErrors & CUPSD_FATAL_CONFIG) + return (0); + else + break; + } + } + + if (i >= (int)(sizeof(prohibited_env) / sizeof(prohibited_env[0]))) + cupsdSetEnv(value, valueptr); + } + else + cupsdLogMessage(CUPSD_LOG_ERROR, + "Missing value for SetEnv directive on line %d of %s.", + linenum, ConfigurationFile); + } else if (!_cups_strcasecmp(line, "SystemGroup") && value) { /* @@ -3853,11 +3914,9 @@ read_policy(cups_file_t *fp, /* I - Configuration file */ if (num_ops < (int)(sizeof(ops) / sizeof(ops[0]))) { if (!_cups_strcasecmp(value, "All")) - ops[num_ops] = IPP_ANY_OPERATION; + ops[num_ops ++] = IPP_ANY_OPERATION; else if ((ops[num_ops] = ippOpValue(value)) == IPP_BAD_OPERATION) - cupsdLogMessage(CUPSD_LOG_ERROR, - "Bad IPP operation name \"%s\" on line %d of %s.", - value, linenum, ConfigurationFile); + cupsdLogMessage(CUPSD_LOG_ERROR, "Bad IPP operation name \"%s\" on line %d of %s.", value, linenum, ConfigurationFile); else num_ops ++; } diff --git a/scheduler/ipp.c b/scheduler/ipp.c index ad8f1f0..d1c6a89 100644 --- a/scheduler/ipp.c +++ b/scheduler/ipp.c @@ -1,8 +1,8 @@ /* * IPP routines for the CUPS scheduler. * - * Copyright 2007-2016 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products, all rights reserved. + * Copyright © 2007-2018 by Apple Inc. + * Copyright © 1997-2007 by Easy Software Products, all rights reserved. * * This file contains Kerberos support code, copyright 2006 by * Jelmer Vernooij. @@ -150,6 +150,7 @@ cupsdProcessIPPRequest( ipp_attribute_t *uri = NULL; /* Printer or job URI attribute */ ipp_attribute_t *username; /* requesting-user-name attr */ int sub_id; /* Subscription ID */ + int valid = 1; /* Valid request? */ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdProcessIPPRequest(%p[%d]): operation_id=%04x(%s)", con, con->number, con->request->request.op.operation_id, ippOpString(con->request->request.op.operation_id)); @@ -183,34 +184,23 @@ cupsdProcessIPPRequest( con->response = ippNew(); - con->response->request.status.version[0] = - con->request->request.op.version[0]; - con->response->request.status.version[1] = - con->request->request.op.version[1]; - con->response->request.status.request_id = - con->request->request.op.request_id; + con->response->request.status.version[0] = con->request->request.op.version[0]; + con->response->request.status.version[1] = con->request->request.op.version[1]; + con->response->request.status.request_id = con->request->request.op.request_id; /* * Then validate the request header and required attributes... */ - if (con->request->request.any.version[0] != 1 && - con->request->request.any.version[0] != 2) + if (con->request->request.any.version[0] != 1 && con->request->request.any.version[0] != 2) { /* * Return an error, since we only support IPP 1.x and 2.x. */ - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s Bad request version number %d.%d", - IPP_VERSION_NOT_SUPPORTED, con->http->hostname, - con->request->request.any.version[0], - con->request->request.any.version[1]); + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s Bad request version number %d.%d.", IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED, con->http->hostname, con->request->request.any.version[0], con->request->request.any.version[1]); - send_ipp_status(con, IPP_VERSION_NOT_SUPPORTED, - _("Bad request version number %d.%d."), - con->request->request.any.version[0], - con->request->request.any.version[1]); + send_ipp_status(con, IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED, _("Bad request version number %d.%d."), con->request->request.any.version[0], con->request->request.any.version[1]); } else if (con->request->request.any.request_id < 1) { @@ -218,21 +208,15 @@ cupsdProcessIPPRequest( * Return an error, since request IDs must be between 1 and 2^31-1 */ - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s Bad request ID %d", - IPP_BAD_REQUEST, con->http->hostname, - con->request->request.any.request_id); + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s Bad request ID %d.", IPP_STATUS_ERROR_BAD_REQUEST, con->http->hostname, con->request->request.any.request_id); - send_ipp_status(con, IPP_BAD_REQUEST, _("Bad request ID %d."), - con->request->request.any.request_id); + send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("Bad request ID %d."), con->request->request.any.request_id); } else if (!con->request->attrs) { - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s No attributes in request", - IPP_BAD_REQUEST, con->http->hostname); + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s No attributes in request.", IPP_STATUS_ERROR_BAD_REQUEST, con->http->hostname); - send_ipp_status(con, IPP_BAD_REQUEST, _("No attributes in request.")); + send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("No attributes in request.")); } else { @@ -250,13 +234,9 @@ cupsdProcessIPPRequest( * Out of order; return an error... */ - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s Attribute groups are out of order", - IPP_BAD_REQUEST, con->http->hostname); + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s Attribute groups are out of order", IPP_STATUS_ERROR_BAD_REQUEST, con->http->hostname); - send_ipp_status(con, IPP_BAD_REQUEST, - _("Attribute groups are out of order (%x < %x)."), - attr->group_tag, group); + send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("Attribute groups are out of order (%x < %x)."), attr->group_tag, group); break; } else @@ -273,9 +253,7 @@ cupsdProcessIPPRequest( */ attr = con->request->attrs; - if (attr && attr->name && - !strcmp(attr->name, "attributes-charset") && - (attr->value_tag & IPP_TAG_MASK) == IPP_TAG_CHARSET) + if (attr && attr->name && !strcmp(attr->name, "attributes-charset") && (attr->value_tag & IPP_TAG_MASK) == IPP_TAG_CHARSET) charset = attr; else charset = NULL; @@ -283,9 +261,7 @@ cupsdProcessIPPRequest( if (attr) attr = attr->next; - if (attr && attr->name && - !strcmp(attr->name, "attributes-natural-language") && - (attr->value_tag & IPP_TAG_MASK) == IPP_TAG_LANGUAGE) + if (attr && attr->name && !strcmp(attr->name, "attributes-natural-language") && (attr->value_tag & IPP_TAG_MASK) == IPP_TAG_LANGUAGE) { language = attr; @@ -303,11 +279,9 @@ cupsdProcessIPPRequest( else language = NULL; - if ((attr = ippFindAttribute(con->request, "printer-uri", - IPP_TAG_URI)) != NULL) + if ((attr = ippFindAttribute(con->request, "printer-uri", IPP_TAG_URI)) != NULL) uri = attr; - else if ((attr = ippFindAttribute(con->request, "job-uri", - IPP_TAG_URI)) != NULL) + else if ((attr = ippFindAttribute(con->request, "job-uri", IPP_TAG_URI)) != NULL) uri = attr; else if (con->request->request.op.operation_id == CUPS_GET_PPD) uri = ippFindAttribute(con->request, "ppd-name", IPP_TAG_NAME); @@ -315,24 +289,16 @@ cupsdProcessIPPRequest( uri = NULL; if (charset) - ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_CHARSET, - "attributes-charset", NULL, - charset->values[0].string.text); + ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, charset->values[0].string.text); else - ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_CHARSET, - "attributes-charset", NULL, "utf-8"); + ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, "utf-8"); if (language) - ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, - "attributes-natural-language", NULL, - language->values[0].string.text); + ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, language->values[0].string.text); else - ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, - "attributes-natural-language", NULL, DefaultLanguage); + ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, DefaultLanguage); - if (charset && - _cups_strcasecmp(charset->values[0].string.text, "us-ascii") && - _cups_strcasecmp(charset->values[0].string.text, "utf-8")) + if (charset && _cups_strcasecmp(charset->values[0].string.text, "us-ascii") && _cups_strcasecmp(charset->values[0].string.text, "utf-8")) { /* * Bad character set... @@ -340,13 +306,8 @@ cupsdProcessIPPRequest( cupsdLogMessage(CUPSD_LOG_ERROR, "Unsupported character set \"%s\"", charset->values[0].string.text); - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s Unsupported attributes-charset value \"%s\"", - IPP_CHARSET, con->http->hostname, - charset->values[0].string.text); - send_ipp_status(con, IPP_BAD_REQUEST, - _("Unsupported character set \"%s\"."), - charset->values[0].string.text); + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s Unsupported attributes-charset value \"%s\".", IPP_STATUS_ERROR_CHARSET, con->http->hostname, charset->values[0].string.text); + send_ipp_status(con, IPP_STATUS_ERROR_CHARSET, _("Unsupported character set \"%s\"."), charset->values[0].string.text); } else if (!charset || !language || (!uri && @@ -364,33 +325,24 @@ cupsdProcessIPPRequest( if (!charset) { - cupsdLogMessage(CUPSD_LOG_ERROR, - "Missing attributes-charset attribute"); + cupsdLogMessage(CUPSD_LOG_ERROR, "Missing attributes-charset attribute."); - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s Missing attributes-charset attribute", - IPP_BAD_REQUEST, con->http->hostname); + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s Missing attributes-charset attribute.", IPP_STATUS_ERROR_BAD_REQUEST, con->http->hostname); } if (!language) { cupsdLogMessage(CUPSD_LOG_ERROR, - "Missing attributes-natural-language attribute"); + "Missing attributes-natural-language attribute."); - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s Missing attributes-natural-language attribute", - IPP_BAD_REQUEST, con->http->hostname); + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s Missing attributes-natural-language attribute.", IPP_STATUS_ERROR_BAD_REQUEST, con->http->hostname); } if (!uri) { - cupsdLogMessage(CUPSD_LOG_ERROR, - "Missing printer-uri, job-uri, or ppd-name " - "attribute"); + cupsdLogMessage(CUPSD_LOG_ERROR, "Missing printer-uri, job-uri, or ppd-name attribute."); - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s Missing printer-uri, job-uri, or ppd-name " - "attribute", IPP_BAD_REQUEST, con->http->hostname); + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s Missing printer-uri, job-uri, or ppd-name attribute.", IPP_STATUS_ERROR_BAD_REQUEST, con->http->hostname); } cupsdLogMessage(CUPSD_LOG_DEBUG, "Request attributes follow..."); @@ -409,20 +361,55 @@ cupsdProcessIPPRequest( else { /* - * OK, all the checks pass so far; make sure requesting-user-name is - * not "root" from a remote host... + * OK, all the checks pass so far; validate "requesting-user-name" + * attribute value... */ - if ((username = ippFindAttribute(con->request, "requesting-user-name", - IPP_TAG_NAME)) != NULL) - { - /* - * Check for root user... - */ - - if (!strcmp(username->values[0].string.text, "root") && - _cups_strcasecmp(con->http->hostname, "localhost") && - strcmp(con->username, "root")) + if ((username = ippFindAttribute(con->request, "requesting-user-name", IPP_TAG_ZERO)) != NULL) + { + /* + * Validate "requesting-user-name"... + */ + + if (username->group_tag != IPP_TAG_OPERATION && StrictConformance) + { + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s \"requesting-user-name\" attribute in wrong group.", IPP_STATUS_ERROR_BAD_REQUEST, con->http->hostname); + send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("\"requesting-user-name\" attribute in wrong group.")); + valid = 0; + } + else if (username->value_tag != IPP_TAG_NAME && username->value_tag != IPP_TAG_NAMELANG) + { + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s \"requesting-user-name\" attribute with wrong syntax.", IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, con->http->hostname); + send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("\"requesting-user-name\" attribute with wrong syntax.")); + if ((attr = ippCopyAttribute(con->response, username, 0)) != NULL) + attr->group_tag = IPP_TAG_UNSUPPORTED_GROUP; + valid = 0; + } + else if (!ippValidateAttribute(username)) + { + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s \"requesting-user-name\" attribute with bad value.", IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, con->http->hostname); + + if (StrictConformance) + { + /* + * Throw an error... + */ + + send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("\"requesting-user-name\" attribute with wrong syntax.")); + if ((attr = ippCopyAttribute(con->response, username, 0)) != NULL) + attr->group_tag = IPP_TAG_UNSUPPORTED_GROUP; + valid = 0; + } + else + { + /* + * Map bad "requesting-user-name" to 'anonymous'... + */ + + ippSetString(con->request, &username, 0, "anonymous"); + } + } + else if (!strcmp(username->values[0].string.text, "root") && _cups_strcasecmp(con->http->hostname, "localhost") && strcmp(con->username, "root")) { /* * Remote unauthenticated user masquerading as local root... @@ -432,215 +419,207 @@ cupsdProcessIPPRequest( } } - if ((attr = ippFindAttribute(con->request, "notify-subscription-id", - IPP_TAG_INTEGER)) != NULL) + if ((attr = ippFindAttribute(con->request, "notify-subscription-id", IPP_TAG_INTEGER)) != NULL) sub_id = attr->values[0].integer; else sub_id = 0; - /* - * Then try processing the operation... - */ - - if (uri) - cupsdLogMessage(CUPSD_LOG_DEBUG, "%s %s", - ippOpString(con->request->request.op.operation_id), - uri->values[0].string.text); - else - cupsdLogMessage(CUPSD_LOG_DEBUG, "%s", - ippOpString(con->request->request.op.operation_id)); - - switch (con->request->request.op.operation_id) - { - case IPP_OP_PRINT_JOB : - print_job(con, uri); - break; - - case IPP_OP_VALIDATE_JOB : - validate_job(con, uri); - break; - - case IPP_OP_CREATE_JOB : - create_job(con, uri); - break; - - case IPP_OP_SEND_DOCUMENT : - send_document(con, uri); - break; - - case IPP_OP_CANCEL_JOB : - cancel_job(con, uri); - break; - - case IPP_OP_GET_JOB_ATTRIBUTES : - get_job_attrs(con, uri); - break; - - case IPP_OP_GET_JOBS : - get_jobs(con, uri); - break; - - case IPP_OP_GET_PRINTER_ATTRIBUTES : - get_printer_attrs(con, uri); - break; - - case IPP_OP_GET_PRINTER_SUPPORTED_VALUES : - get_printer_supported(con, uri); - break; - - case IPP_OP_HOLD_JOB : - hold_job(con, uri); - break; - - case IPP_OP_RELEASE_JOB : - release_job(con, uri); - break; - - case IPP_OP_RESTART_JOB : - restart_job(con, uri); - break; - - case IPP_OP_PAUSE_PRINTER : - stop_printer(con, uri); - break; - - case IPP_OP_RESUME_PRINTER : - start_printer(con, uri); - break; - - case IPP_OP_PURGE_JOBS : - case IPP_OP_CANCEL_JOBS : - case IPP_OP_CANCEL_MY_JOBS : - cancel_all_jobs(con, uri); - break; - - case IPP_OP_SET_JOB_ATTRIBUTES : - set_job_attrs(con, uri); - break; - - case IPP_OP_SET_PRINTER_ATTRIBUTES : - set_printer_attrs(con, uri); - break; - - case IPP_OP_HOLD_NEW_JOBS : - hold_new_jobs(con, uri); - break; - - case IPP_OP_RELEASE_HELD_NEW_JOBS : - release_held_new_jobs(con, uri); - break; - - case IPP_OP_CLOSE_JOB : - close_job(con, uri); - break; - - case IPP_OP_CUPS_GET_DEFAULT : - get_default(con); - break; - - case IPP_OP_CUPS_GET_PRINTERS : - get_printers(con, 0); - break; - - case IPP_OP_CUPS_GET_CLASSES : - get_printers(con, CUPS_PRINTER_CLASS); - break; - - case IPP_OP_CUPS_ADD_MODIFY_PRINTER : - add_printer(con, uri); - break; - - case IPP_OP_CUPS_DELETE_PRINTER : - delete_printer(con, uri); - break; - - case IPP_OP_CUPS_ADD_MODIFY_CLASS : - add_class(con, uri); - break; - - case IPP_OP_CUPS_DELETE_CLASS : - delete_printer(con, uri); - break; + if (valid) + { + /* + * Try processing the operation... + */ - case IPP_OP_CUPS_ACCEPT_JOBS : - case IPP_OP_ENABLE_PRINTER : - accept_jobs(con, uri); - break; + if (uri) + cupsdLogMessage(CUPSD_LOG_DEBUG, "%s %s", ippOpString(con->request->request.op.operation_id), uri->values[0].string.text); + else + cupsdLogMessage(CUPSD_LOG_DEBUG, "%s", ippOpString(con->request->request.op.operation_id)); - case IPP_OP_CUPS_REJECT_JOBS : - case IPP_OP_DISABLE_PRINTER : - reject_jobs(con, uri); - break; + switch (con->request->request.op.operation_id) + { + case IPP_OP_PRINT_JOB : + print_job(con, uri); + break; + + case IPP_OP_VALIDATE_JOB : + validate_job(con, uri); + break; + + case IPP_OP_CREATE_JOB : + create_job(con, uri); + break; + + case IPP_OP_SEND_DOCUMENT : + send_document(con, uri); + break; + + case IPP_OP_CANCEL_JOB : + cancel_job(con, uri); + break; + + case IPP_OP_GET_JOB_ATTRIBUTES : + get_job_attrs(con, uri); + break; + + case IPP_OP_GET_JOBS : + get_jobs(con, uri); + break; + + case IPP_OP_GET_PRINTER_ATTRIBUTES : + get_printer_attrs(con, uri); + break; + + case IPP_OP_GET_PRINTER_SUPPORTED_VALUES : + get_printer_supported(con, uri); + break; + + case IPP_OP_HOLD_JOB : + hold_job(con, uri); + break; + + case IPP_OP_RELEASE_JOB : + release_job(con, uri); + break; + + case IPP_OP_RESTART_JOB : + restart_job(con, uri); + break; + + case IPP_OP_PAUSE_PRINTER : + stop_printer(con, uri); + break; + + case IPP_OP_RESUME_PRINTER : + start_printer(con, uri); + break; + + case IPP_OP_PURGE_JOBS : + case IPP_OP_CANCEL_JOBS : + case IPP_OP_CANCEL_MY_JOBS : + cancel_all_jobs(con, uri); + break; + + case IPP_OP_SET_JOB_ATTRIBUTES : + set_job_attrs(con, uri); + break; + + case IPP_OP_SET_PRINTER_ATTRIBUTES : + set_printer_attrs(con, uri); + break; + + case IPP_OP_HOLD_NEW_JOBS : + hold_new_jobs(con, uri); + break; + + case IPP_OP_RELEASE_HELD_NEW_JOBS : + release_held_new_jobs(con, uri); + break; + + case IPP_OP_CLOSE_JOB : + close_job(con, uri); + break; + + case IPP_OP_CUPS_GET_DEFAULT : + get_default(con); + break; + + case IPP_OP_CUPS_GET_PRINTERS : + get_printers(con, 0); + break; + + case IPP_OP_CUPS_GET_CLASSES : + get_printers(con, CUPS_PRINTER_CLASS); + break; + + case IPP_OP_CUPS_ADD_MODIFY_PRINTER : + add_printer(con, uri); + break; + + case IPP_OP_CUPS_DELETE_PRINTER : + delete_printer(con, uri); + break; + + case IPP_OP_CUPS_ADD_MODIFY_CLASS : + add_class(con, uri); + break; + + case IPP_OP_CUPS_DELETE_CLASS : + delete_printer(con, uri); + break; + + case IPP_OP_CUPS_ACCEPT_JOBS : + case IPP_OP_ENABLE_PRINTER : + accept_jobs(con, uri); + break; + + case IPP_OP_CUPS_REJECT_JOBS : + case IPP_OP_DISABLE_PRINTER : + reject_jobs(con, uri); + break; - case IPP_OP_CUPS_SET_DEFAULT : - set_default(con, uri); - break; + case IPP_OP_CUPS_SET_DEFAULT : + set_default(con, uri); + break; - case IPP_OP_CUPS_GET_DEVICES : - get_devices(con); - break; + case IPP_OP_CUPS_GET_DEVICES : + get_devices(con); + break; - case IPP_OP_CUPS_GET_DOCUMENT : - get_document(con, uri); - break; + case IPP_OP_CUPS_GET_DOCUMENT : + get_document(con, uri); + break; - case IPP_OP_CUPS_GET_PPD : - get_ppd(con, uri); - break; + case IPP_OP_CUPS_GET_PPD : + get_ppd(con, uri); + break; - case IPP_OP_CUPS_GET_PPDS : - get_ppds(con); - break; + case IPP_OP_CUPS_GET_PPDS : + get_ppds(con); + break; - case IPP_OP_CUPS_MOVE_JOB : - move_job(con, uri); - break; + case IPP_OP_CUPS_MOVE_JOB : + move_job(con, uri); + break; - case IPP_OP_CUPS_AUTHENTICATE_JOB : - authenticate_job(con, uri); - break; + case IPP_OP_CUPS_AUTHENTICATE_JOB : + authenticate_job(con, uri); + break; - case IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS : - case IPP_OP_CREATE_JOB_SUBSCRIPTIONS : - create_subscriptions(con, uri); - break; + case IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS : + case IPP_OP_CREATE_JOB_SUBSCRIPTIONS : + create_subscriptions(con, uri); + break; + + case IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES : + get_subscription_attrs(con, sub_id); + break; + + case IPP_OP_GET_SUBSCRIPTIONS : + get_subscriptions(con, uri); + break; - case IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES : - get_subscription_attrs(con, sub_id); - break; + case IPP_OP_RENEW_SUBSCRIPTION : + renew_subscription(con, sub_id); + break; - case IPP_OP_GET_SUBSCRIPTIONS : - get_subscriptions(con, uri); - break; + case IPP_OP_CANCEL_SUBSCRIPTION : + cancel_subscription(con, sub_id); + break; - case IPP_OP_RENEW_SUBSCRIPTION : - renew_subscription(con, sub_id); - break; + case IPP_OP_GET_NOTIFICATIONS : + get_notifications(con); + break; - case IPP_OP_CANCEL_SUBSCRIPTION : - cancel_subscription(con, sub_id); - break; + case IPP_OP_CUPS_CREATE_LOCAL_PRINTER : + create_local_printer(con); + break; - case IPP_OP_GET_NOTIFICATIONS : - get_notifications(con); - break; + default : + cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, "%04X %s Operation %04X (%s) not supported.", IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED, con->http->hostname, con->request->request.op.operation_id, ippOpString(con->request->request.op.operation_id)); - case IPP_OP_CUPS_CREATE_LOCAL_PRINTER : - create_local_printer(con); - break; - - default : - cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL, - "%04X %s Operation %04X (%s) not supported", - IPP_OPERATION_NOT_SUPPORTED, con->http->hostname, - con->request->request.op.operation_id, - ippOpString(con->request->request.op.operation_id)); - - send_ipp_status(con, IPP_OPERATION_NOT_SUPPORTED, - _("%s not supported."), - ippOpString( - con->request->request.op.operation_id)); - break; + send_ipp_status(con, IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED, _("%s not supported."), ippOpString(con->request->request.op.operation_id)); + break; + } } } } @@ -652,16 +631,7 @@ cupsdProcessIPPRequest( * Sending data from the scheduler... */ - cupsdLogMessage(con->response->request.status.status_code - >= IPP_BAD_REQUEST && - con->response->request.status.status_code - != IPP_NOT_FOUND ? CUPSD_LOG_ERROR : CUPSD_LOG_DEBUG, - "[Client %d] Returning IPP %s for %s (%s) from %s", - con->number, - ippErrorString(con->response->request.status.status_code), - ippOpString(con->request->request.op.operation_id), - uri ? uri->values[0].string.text : "no URI", - con->http->hostname); + cupsdLogClient(con, con->response->request.status.status_code >= IPP_STATUS_ERROR_BAD_REQUEST && con->response->request.status.status_code != IPP_STATUS_ERROR_NOT_FOUND ? CUPSD_LOG_ERROR : CUPSD_LOG_DEBUG, "Returning IPP %s for %s (%s) from %s.", ippErrorString(con->response->request.status.status_code), ippOpString(con->request->request.op.operation_id), uri ? uri->values[0].string.text : "no URI", con->http->hostname); httpClearFields(con->http); @@ -676,10 +646,7 @@ cupsdProcessIPPRequest( if (con->http->version == HTTP_1_1) { - cupsdLogMessage(CUPSD_LOG_DEBUG, - "[Client %d] Transfer-Encoding: chunked", - con->number); - + cupsdLogClient(con, CUPSD_LOG_DEBUG, "Transfer-Encoding: chunked"); cupsdSetLength(con->http, 0); } else @@ -698,9 +665,7 @@ cupsdProcessIPPRequest( length += (size_t)fileinfo.st_size; } - cupsdLogMessage(CUPSD_LOG_DEBUG, - "[Client %d] Content-Length: " CUPS_LLFMT, - con->number, CUPS_LLCAST length); + cupsdLogClient(con, CUPSD_LOG_DEBUG, "Content-Length: " CUPS_LLFMT, CUPS_LLCAST length); httpSetLength(con->http, length); } @@ -710,8 +675,7 @@ cupsdProcessIPPRequest( * Tell the caller the response header was sent successfully... */ - cupsdAddSelect(httpGetFd(con->http), (cupsd_selfunc_t)cupsdReadClient, - (cupsd_selfunc_t)cupsdWriteClient, con); + cupsdAddSelect(httpGetFd(con->http), (cupsd_selfunc_t)cupsdReadClient, (cupsd_selfunc_t)cupsdWriteClient, con); return (1); } @@ -1586,27 +1550,34 @@ add_job(cupsd_client_t *con, /* I - Client connection */ _("Bad job-name value: Wrong type or count.")); if ((attr = ippCopyAttribute(con->response, attr, 0)) != NULL) attr->group_tag = IPP_TAG_UNSUPPORTED_GROUP; - return (NULL); + + if (StrictConformance) + return (NULL); + + /* Don't use invalid attribute */ + ippDeleteAttribute(con->request, attr); + + ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, "Untitled"); } else if (!ippValidateAttribute(attr)) { send_ipp_status(con, IPP_ATTRIBUTES, _("Bad job-name value: %s"), cupsLastErrorString()); + if ((attr = ippCopyAttribute(con->response, attr, 0)) != NULL) attr->group_tag = IPP_TAG_UNSUPPORTED_GROUP; - return (NULL); - } - attr = ippFindAttribute(con->request, "requesting-user-name", IPP_TAG_NAME); + if (StrictConformance) + return (NULL); - 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); + /* Don't use invalid attribute */ + ippDeleteAttribute(con->request, attr); + + ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, "Untitled"); } + attr = ippFindAttribute(con->request, "requesting-user-name", IPP_TAG_NAME); + if ((job = cupsdAddJob(priority, printer->name)) == NULL) { send_ipp_status(con, IPP_INTERNAL_ERROR, @@ -2062,7 +2033,7 @@ add_job_subscriptions( snprintf(notifier, sizeof(notifier), "%s/notifier/%s", ServerBin, scheme); - if (access(notifier, X_OK)) + if (access(notifier, X_OK) || !strcmp(scheme, ".") || !strcmp(scheme, "..")) { send_ipp_status(con, IPP_NOT_POSSIBLE, _("notify-recipient-uri URI \"%s\" uses unknown " @@ -5317,6 +5288,7 @@ create_local_bg_thread( ipp_t *request, /* Request to printer */ *response; /* Response from printer */ ipp_attribute_t *attr; /* Attribute in response */ + ipp_status_t status; /* Status code */ /* @@ -5349,12 +5321,35 @@ create_local_bg_thread( cupsdLogMessage(CUPSD_LOG_DEBUG, "%s: Connected to %s:%d, sending Get-Printer-Attributes request...", printer->name, host, port); request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES); + ippSetVersion(request, 2, 0); ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, printer->device_uri); ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", NULL, "all"); response = cupsDoRequest(http, request, resource); + status = cupsLastError(); + + cupsdLogMessage(CUPSD_LOG_DEBUG, "%s: Get-Printer-Attributes returned %s (%s)", printer->name, ippErrorString(cupsLastError()), cupsLastErrorString()); + + if (status == IPP_STATUS_ERROR_BAD_REQUEST || status == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED) + { + /* + * Try request using IPP/1.1, in case we are talking to an old CUPS server or + * printer... + */ + + ippDelete(response); - cupsdLogMessage(CUPSD_LOG_DEBUG, "%s: Get-Printer-Attributes returned %s", printer->name, ippErrorString(cupsLastError())); + cupsdLogMessage(CUPSD_LOG_DEBUG, "%s: Re-sending Get-Printer-Attributes request using IPP/1.1...", printer->name); + + request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES); + ippSetVersion(request, 1, 1); + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, printer->device_uri); + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", NULL, "all"); + + response = cupsDoRequest(http, request, resource); + + cupsdLogMessage(CUPSD_LOG_DEBUG, "%s: IPP/1.1 Get-Printer-Attributes returned %s (%s)", printer->name, ippErrorString(cupsLastError()), cupsLastErrorString()); + } // TODO: Grab printer icon file... httpClose(http); @@ -5365,6 +5360,8 @@ create_local_bg_thread( if (_ppdCreateFromIPP(fromppd, sizeof(fromppd), response)) { + _cupsRWLockWrite(&printer->lock); + if ((!printer->info || !*(printer->info)) && (attr = ippFindAttribute(response, "printer-info", IPP_TAG_TEXT)) != NULL) cupsdSetString(&printer->info, ippGetString(attr, 0, NULL)); @@ -5374,6 +5371,8 @@ create_local_bg_thread( if ((!printer->geo_location || !*(printer->geo_location)) && (attr = ippFindAttribute(response, "printer-geo-location", IPP_TAG_URI)) != NULL) cupsdSetString(&printer->geo_location, ippGetString(attr, 0, NULL)); + _cupsRWUnlock(&printer->lock); + if ((from = cupsFileOpen(fromppd, "r")) == NULL) { cupsdLogMessage(CUPSD_LOG_ERROR, "%s: Unable to read generated PPD: %s", printer->name, strerror(errno)); @@ -5874,7 +5873,26 @@ create_subscriptions( } if (recipient) + { cupsdLogMessage(CUPSD_LOG_DEBUG, "recipient=\"%s\"", recipient); + + + if (!strncmp(recipient, "mailto:", 7) && user_data) + { + char temp[64]; /* Temporary string */ + + memcpy(temp, user_data->values[0].unknown.data, user_data->values[0].unknown.length); + temp[user_data->values[0].unknown.length] = '\0'; + + if (httpSeparateURI(HTTP_URI_CODING_ALL, temp, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_OK) + { + send_ipp_status(con, IPP_NOT_POSSIBLE, _("Bad notify-user-data \"%s\"."), temp); + ippAddInteger(con->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_ENUM, "notify-status-code", IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES); + return; + } + } + } + if (pullmethod) cupsdLogMessage(CUPSD_LOG_DEBUG, "pullmethod=\"%s\"", pullmethod); cupsdLogMessage(CUPSD_LOG_DEBUG, "notify-lease-duration=%d", lease); @@ -7970,13 +7988,16 @@ hold_job(cupsd_client_t *con, /* I - Client connection */ * Hold the job and return... */ - if ((attr = ippFindAttribute(con->request, "job-hold-until", - IPP_TAG_KEYWORD)) == NULL) - attr = ippFindAttribute(con->request, "job-hold-until", IPP_TAG_NAME); - - if (attr) + if ((attr = ippFindAttribute(con->request, "job-hold-until", IPP_TAG_ZERO)) != NULL) { - when = attr->values[0].string.text; + if ((ippGetValueTag(attr) != IPP_TAG_KEYWORD && ippGetValueTag(attr) != IPP_TAG_NAME && ippGetValueTag(attr) != IPP_TAG_NAMELANG) || ippGetCount(attr) != 1 || !ippValidateAttribute(attr)) + { + send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("Unsupported 'job-hold-until' value.")); + ippCopyAttribute(con->response, attr, 0); + return; + } + + when = ippGetString(attr, 0, NULL); cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, cupsdFindDest(job->dest), job, "Job job-hold-until value changed by user."); @@ -10340,7 +10361,39 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */ continue; } - if (!strcmp(attr->name, "job-priority")) + if (!ippValidateAttribute(attr)) + { + send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("Bad '%s' value."), attr->name); + ippCopyAttribute(con->response, attr, 0); + return; + } + + if (!strcmp(attr->name, "job-hold-until")) + { + const char *when = ippGetString(attr, 0, NULL); + /* job-hold-until value */ + + if ((ippGetValueTag(attr) != IPP_TAG_KEYWORD && ippGetValueTag(attr) != IPP_TAG_NAME && ippGetValueTag(attr) != IPP_TAG_NAMELANG) || ippGetCount(attr) != 1) + { + send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("Unsupported 'job-hold-until' value.")); + ippCopyAttribute(con->response, attr, 0); + return; + } + + cupsdLogJob(job, CUPSD_LOG_DEBUG, "Setting job-hold-until to %s", when); + cupsdSetJobHoldUntil(job, when, 0); + + if (!strcmp(when, "no-hold")) + { + cupsdReleaseJob(job); + check_jobs = 1; + } + else + cupsdSetJobState(job, IPP_JOB_HELD, CUPSD_JOB_DEFAULT, "Job held by \"%s\".", username); + + event |= CUPSD_EVENT_JOB_CONFIG_CHANGED | CUPSD_EVENT_JOB_STATE; + } + else if (!strcmp(attr->name, "job-priority")) { /* * Change the job priority... @@ -10460,28 +10513,6 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */ */ ippCopyAttribute(job->attrs, attr, 0); - - /* - * See if the job-name or job-hold-until is being changed. - */ - - if (!strcmp(attr->name, "job-hold-until")) - { - cupsdLogJob(job, CUPSD_LOG_DEBUG, "Setting job-hold-until to %s", - attr->values[0].string.text); - cupsdSetJobHoldUntil(job, attr->values[0].string.text, 0); - - if (!strcmp(attr->values[0].string.text, "no-hold")) - { - cupsdReleaseJob(job); - check_jobs = 1; - } - else - cupsdSetJobState(job, IPP_JOB_HELD, CUPSD_JOB_DEFAULT, - "Job held by \"%s\".", username); - - event |= CUPSD_EVENT_JOB_CONFIG_CHANGED | CUPSD_EVENT_JOB_STATE; - } } else if (attr->value_tag == IPP_TAG_DELETEATTR) { @@ -11300,80 +11331,34 @@ validate_job(cupsd_client_t *con, /* I - Client connection */ } /* + * Is the job-hold-until value valid? + */ + + if ((attr = ippFindAttribute(con->request, "job-hold-until", IPP_TAG_ZERO)) != NULL && ((ippGetValueTag(attr) != IPP_TAG_KEYWORD && ippGetValueTag(attr) != IPP_TAG_NAME && ippGetValueTag(attr) != IPP_TAG_NAMELANG) || ippGetCount(attr) != 1 || !ippValidateAttribute(attr))) + { + send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("Unsupported 'job-hold-until' value.")); + ippCopyAttribute(con->response, attr, 0); + return; + } + + /* * Is the job-name valid? */ if ((name = ippFindAttribute(con->request, "job-name", IPP_TAG_ZERO)) != NULL) { - int bad_name = 0; /* Is the job-name value bad? */ - if ((name->value_tag != IPP_TAG_NAME && name->value_tag != IPP_TAG_NAMELANG) || - name->num_values != 1) - { - bad_name = 1; - } - else - { - /* - * Validate that job-name conforms to RFC 5198 (Network Unicode) and - * IPP Everywhere requirements for "name" values... - */ - - const unsigned char *nameptr; /* Pointer into "job-name" attribute */ - - for (nameptr = (unsigned char *)name->values[0].string.text; - *nameptr; - nameptr ++) - { - if (*nameptr < ' ' && *nameptr != '\t') - break; - else if (*nameptr == 0x7f) - break; - else if ((*nameptr & 0xe0) == 0xc0) - { - if ((nameptr[1] & 0xc0) != 0x80) - break; - - nameptr ++; - } - else if ((*nameptr & 0xf0) == 0xe0) - { - if ((nameptr[1] & 0xc0) != 0x80 || - (nameptr[2] & 0xc0) != 0x80) - break; - - nameptr += 2; - } - else if ((*nameptr & 0xf8) == 0xf0) - { - if ((nameptr[1] & 0xc0) != 0x80 || - (nameptr[2] & 0xc0) != 0x80 || - (nameptr[3] & 0xc0) != 0x80) - break; - - nameptr += 3; - } - else if (*nameptr & 0x80) - break; - } - - if (*nameptr) - bad_name = 1; - } - - if (bad_name) + name->num_values != 1 || !ippValidateAttribute(name)) { if (StrictConformance) { - send_ipp_status(con, IPP_ATTRIBUTES, - _("Unsupported 'job-name' value.")); + send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("Unsupported 'job-name' value.")); ippCopyAttribute(con->response, name, 0); return; } else { - cupsdLogMessage(CUPSD_LOG_WARN, - "Unsupported 'job-name' value, deleting from request."); + cupsdLogMessage(CUPSD_LOG_WARN, "Unsupported 'job-name' value, deleting from request."); ippDeleteAttribute(con->request, name); } } diff --git a/scheduler/job.c b/scheduler/job.c index 86e75e6..ed8267d 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -1,7 +1,7 @@ /* * Job management routines for the CUPS scheduler. * - * Copyright 2007-2017 by Apple Inc. + * Copyright 2007-2018 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -4774,6 +4774,18 @@ start_job(cupsd_job_t *job, /* I - Job ID */ job->profile = cupsdCreateProfile(job->id, 0); job->bprofile = cupsdCreateProfile(job->id, 1); +#ifdef HAVE_SANDBOX_H + if ((!job->profile || !job->bprofile) && UseSandboxing && Sandboxing != CUPSD_SANDBOXING_OFF) + { + /* + * Failure to create the sandbox profile means something really bad has + * happened and we need to shutdown immediately. + */ + + return; + } +#endif /* HAVE_SANDBOX_H */ + /* * Create the status pipes and buffer... */ diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in index 50faa39..f2afa11 100644 --- a/scheduler/org.cups.cupsd.service.in +++ b/scheduler/org.cups.cupsd.service.in @@ -5,7 +5,7 @@ Documentation=man:cupsd(8) [Service] ExecStart=@sbindir@/cupsd -l Type=simple -Restart=always +Restart=on-failure [Install] Also=org.cups.cupsd.socket org.cups.cupsd.path diff --git a/scheduler/process.c b/scheduler/process.c index 5c01b4b..a09d498 100644 --- a/scheduler/process.c +++ b/scheduler/process.c @@ -1,7 +1,7 @@ /* * Process management routines for the CUPS scheduler. * - * Copyright 2007-2017 by Apple Inc. + * Copyright 2007-2018 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -102,9 +102,13 @@ cupsdCreateProfile(int job_id, /* I - Job ID or 0 for none */ if ((fp = cupsTempFile2(profile, sizeof(profile))) == NULL) { + /* + * This should never happen, and is fatal when sandboxing is enabled. + */ + cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d, allow_networking=%d) = NULL", job_id, allow_networking); - cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create security profile: %s", - strerror(errno)); + cupsdLogMessage(CUPSD_LOG_EMERG, "Unable to create security profile: %s", strerror(errno)); + kill(getpid(), SIGTERM); return (NULL); } @@ -201,10 +205,8 @@ cupsdCreateProfile(int job_id, /* I - Job ID or 0 for none */ " #\"^%s/\"" /* TempDir/... */ " #\"^%s$\"" /* CacheDir */ " #\"^%s/\"" /* CacheDir/... */ - " #\"^%s$\"" /* StateDir */ - " #\"^%s/\"" /* StateDir/... */ "))\n", - temp, temp, cache, cache, state, state); + temp, temp, cache, cache); /* Read common folders */ cupsFilePrintf(fp, "(allow file-read-data file-read-metadata\n" @@ -246,8 +248,10 @@ cupsdCreateProfile(int job_id, /* I - Job ID or 0 for none */ " #\"^%s/\"" /* ServerBin/... */ " #\"^%s$\"" /* ServerRoot */ " #\"^%s/\"" /* ServerRoot/... */ + " #\"^%s$\"" /* StateDir */ + " #\"^%s/\"" /* StateDir/... */ "))\n", - request, request, bin, bin, root, root); + request, request, bin, bin, root, root, state, state); if (Sandboxing == CUPSD_SANDBOXING_RELAXED) { /* Limited write access to /Library/Printers/... */ diff --git a/scheduler/server.c b/scheduler/server.c index d28cd4a..63fcf90 100644 --- a/scheduler/server.c +++ b/scheduler/server.c @@ -1,7 +1,7 @@ /* * Server start/stop routines for the CUPS scheduler. * - * Copyright 2007-2017 by Apple Inc. + * Copyright 2007-2018 by Apple Inc. * Copyright 1997-2006 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -38,16 +38,28 @@ void cupsdStartServer(void) { /* - * Start color management (as needed)... + * Create the default security profile... */ - cupsdStartColor(); + DefaultProfile = cupsdCreateProfile(0, 1); + +#ifdef HAVE_SANDBOX_H + if (!DefaultProfile && UseSandboxing && Sandboxing != CUPSD_SANDBOXING_OFF) + { + /* + * Failure to create the sandbox profile means something really bad has + * happened and we need to shutdown immediately. + */ + + return; + } +#endif /* HAVE_SANDBOX_H */ /* - * Create the default security profile... + * Start color management (as needed)... */ - DefaultProfile = cupsdCreateProfile(0, 1); + cupsdStartColor(); /* * Startup all the networking stuff... diff --git a/templates/fr/add-class.tmpl b/templates/fr/add-class.tmpl index 71b6014..59b5092 100644 --- a/templates/fr/add-class.tmpl +++ b/templates/fr/add-class.tmpl @@ -8,7 +8,7 @@ <TR> <TH CLASS="label">Nom :</TH> <TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR> -<SMALL>(Peux contenir n'importe quel caractère sauf "/", "#", et espace)</SMALL></TD> +<SMALL>(Peut contenir n'importe quel caractère sauf "/", "#", et espace)</SMALL></TD> </TR> <TR> <TH CLASS="label">Description :</TH> diff --git a/templates/fr/add-printer.tmpl b/templates/fr/add-printer.tmpl index 592de84..2d7c2d7 100644 --- a/templates/fr/add-printer.tmpl +++ b/templates/fr/add-printer.tmpl @@ -14,7 +14,7 @@ <TR> <TH CLASS="label">Nom \:</TH> <TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR> -<SMALL>(Peux contenir n'importe quel caractère sauf "/", "#", et espace)</SMALL></TD> +<SMALL>(Peut contenir n'importe quel caractère sauf "/", "#", et espace)</SMALL></TD> </TR> <TR> <TH CLASS="label">Description :</TH> diff --git a/templates/fr/choose-model.tmpl b/templates/fr/choose-model.tmpl index a4e771c..1e154f1 100644 --- a/templates/fr/choose-model.tmpl +++ b/templates/fr/choose-model.tmpl @@ -28,7 +28,7 @@ <TR> <TH CLASS="label">Partage :</TH> <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}"> -{?printer_is_shared=?Ne pas:{?printer_is_shared=0?Do Not:}} partager cette imprimante</TD> +{?printer_is_shared=?Ne pas p:{?printer_is_shared=0?Ne pas p:P}}artager cette imprimante</TD> </TR> <TR> <TH CLASS="label">Marque :</TH> @@ -38,7 +38,7 @@ <TH CLASS="label">Modèle :</TH> <TD> <SELECT NAME="PPD_NAME" SIZE="10"> -{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Pilote courant - {current_make_and_model}</OPTION>:} +{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Pilote actuel - {current_make_and_model}</OPTION>:} {[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language}) }</SELECT> </TD> diff --git a/templates/fr/choose-uri.tmpl b/templates/fr/choose-uri.tmpl index c43c5e4..1efe5f7 100644 --- a/templates/fr/choose-uri.tmpl +++ b/templates/fr/choose-uri.tmpl @@ -27,7 +27,7 @@ socket://hostname:9100 </PRE> -<P>Voir <A HREF="/help/network.html" TARGET="_blank">"Imprimantes réseaux"</A> pour construire l'URI à employée avec votre imprimante.</P> +<P>Voir <A HREF="/help/network.html" TARGET="_blank">"Imprimantes réseaux"</A> pour construire l'URI à employer avec votre imprimante.</P> </TD> </TR> diff --git a/templates/fr/class.tmpl b/templates/fr/class.tmpl index 6248579..d48c05d 100644 --- a/templates/fr/class.tmpl +++ b/templates/fr/class.tmpl @@ -1,7 +1,7 @@ <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A> -({printer_state=3?En attente:{printer_state=4?En cours d'impression:Arrêté}}, +({printer_state=3?En attente:{printer_state=4?En cours d'impression:Arrêtée}}, {printer_is_accepting_jobs=0?rejette les tâches:accepte les tâches}, -{server_is_sharing_printers=0?Non:{printer_is_shared=0?Non:}} partagée{default_name={printer_name}?, imprimante par défaut:})</H2> +{server_is_sharing_printers=0?Non p:{printer_is_shared=0?Non p:P}}artagée{default_name={printer_name}?, imprimante par défaut:})</H2> <FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance"> <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"> @@ -13,7 +13,7 @@ <OPTION VALUE="move-jobs">Transférer toutes les tâches</OPTION> <OPTION VALUE="purge-jobs">Annuler toutes les tâches</OPTION> </SELECT> -<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;"> +<INPUT TYPE="SUBMIT" VALUE="Valider" STYLE="display: none;"> </FORM> <FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration"> @@ -28,7 +28,7 @@ <OPTION VALUE="set-as-default">Définir par défaut</OPTION> <OPTION VALUE="set-allowed-users">Définir les autorisations</OPTION> </SELECT> -<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;"> +<INPUT TYPE="SUBMIT" VALUE="Valider" STYLE="display: none;"> </FORM> <TABLE SUMMARY="{printer_name}"> diff --git a/templates/fr/classes-header.tmpl b/templates/fr/classes-header.tmpl index 290b18e..0c5fe8c 100644 --- a/templates/fr/classes-header.tmpl +++ b/templates/fr/classes-header.tmpl @@ -1 +1 @@ -<P ALIGN="CENTER">{total=0?Pas de classes:Affichage de {#printer_name} sur {total} classe{total=1?:es}}.</P> +<P ALIGN="CENTER">{total=0?Pas de classes:Affichage de {#printer_name} sur {total} classe{total=1?:s}}.</P> diff --git a/templates/fr/classes.tmpl b/templates/fr/classes.tmpl index 07baad2..b3432ac 100644 --- a/templates/fr/classes.tmpl +++ b/templates/fr/classes.tmpl @@ -5,7 +5,7 @@ </THEAD> <TBODY> {[printer_name] -<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Aucun:{member_uris}}</TD><TD>{printer_state=3?Inoccupé:{printer_state=4?En cours d'impression:En pause}}{printer_state_message? - "{printer_state_message}":}</TD></TR> +<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Aucun:{member_uris}}</TD><TD>{printer_state=3?Inoccupée:{printer_state=4?En cours d'impression:En pause}}{printer_state_message? - "{printer_state_message}":}</TD></TR> } </TBODY> </TABLE></DIV>} diff --git a/templates/fr/help-header.tmpl b/templates/fr/help-header.tmpl index 86343e7..696c70d 100644 --- a/templates/fr/help-header.tmpl +++ b/templates/fr/help-header.tmpl @@ -1,8 +1,8 @@ <FORM ACTION="/help/{?HELPFILE}" METHOD="GET"> {TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:} -<P ALIGN="CENTER"><B>Search in -{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:All Documents}}:</B> <INPUT +<P ALIGN="CENTER"><B>Rechercher dans +{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:Tous les documents}}:</B> <INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER="" AUTOSAVE="org.cups.help" RESULTS="20"> <INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Search"> @@ -14,9 +14,9 @@ AUTOSAVE="org.cups.help" RESULTS="20"> <DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Contents"> <TR><TD> -<H3 CLASS="title">Online Help Documents</H3> +<H3 CLASS="title">Documentation en ligne</H3> -<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">All Documents</A></P> +<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Tous les documents</A></P> <HR> {[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P> @@ -24,18 +24,18 @@ AUTOSAVE="org.cups.help" RESULTS="20"> </TD></TR> </TABLE></DIV> -{QUERY?<P>Search Results in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:All Documents}}\:</P> +{QUERY?<P>Résultats de la recherche dans {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Tous les documents}}\:</P> {QTEXT?<UL> {[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>} {QTEXT?</UL>:} -:<P>No matches found.</P>} +:<P>Aucun résultat.</P>} <HR NOSHADE>:} -{HELPTITLE?<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="View Printable Version"></FORM>: +{HELPTITLE?<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Voir la version imprimable"></FORM>: -<H1>Online Help</H1> +<H1>Aide en ligne</H1> -<P>This is the CUPS online help interface. Enter search words above or click on any of the documentation links to display online help information.</P> +<P>Ceci est l'interface d'aide en ligne de CUPS. Entrez vos termes de recherch ci-dessus ou cliquez sur un des liens vers la documentation pour voir les informations d'aide en ligne.</P> -<P>If you are new to CUPS, read the "<a href="/help/overview.html">Overview of CUPS</a>" page.</P> +<P>Si vous êtes un nouvel utilisateur de CUPS, lisez la page "<a href="/help/overview.html">Aperçu de CUPS</a>".</P> -<P>The <A HREF="http://www.cups.org/">CUPS home page</A> also provides many resources including user discussion forums, answers to frequently-asked questions, and a form for submitting bug reports and feature requests.</P>} +<P>La <A HREF="http://www.cups.org/">page d'accueil CUPS</A> procure aussi beaucoup de ressources dont des forums, des FAQ, et un formulaire pour les rapports de bugs et les demandes de fonctionnalités.</P>} diff --git a/templates/fr/job-moved.tmpl b/templates/fr/job-moved.tmpl index 090dd4b..27d0722 100644 --- a/templates/fr/job-moved.tmpl +++ b/templates/fr/job-moved.tmpl @@ -1,4 +1,4 @@ <H2 CLASS="title">{job_id?Transférer la tâche {job_id}:Transférer toutes les tâches}</H2> -<P>{job_id?<A HREF="/jobs/{job_id}">Job {job_id}</A>:Toutes les tâches} transférée(s) vers +<P>{job_id?<A HREF="/jobs/{job_id}">Tâche {job_id}</A>:Toutes les tâches} transférée(s) vers <A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P> diff --git a/templates/fr/jobs.tmpl b/templates/fr/jobs.tmpl index 1880a9f..d10e68b 100644 --- a/templates/fr/jobs.tmpl +++ b/templates/fr/jobs.tmpl @@ -8,12 +8,12 @@ <TR VALIGN="TOP"> <TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):} </TD> <TD>{?job_name=?Inconnu:{job_name}} </TD> -<TD>{?job_originating_user_name=?Withheld:{job_originating_user_name}} </TD> +<TD>{?job_originating_user_name=?Caché:{job_originating_user_name}} </TD> <TD>{job_k_octets}k </TD> <TD>{job_impressions_completed=0?Inconnu:{?job_impressions_completed}} </TD> -<TD>{job_state=3?en attente depuis<BR>{?time_at_creation=?Unknown:{time_at_creation}}:{job_state=4?retenu depuis le<BR>{?time_at_creation=?Unknown:{time_at_creation}}: -{job_state=5?en cours d'impression depuis<BR>{?time_at_processing=?Unknown:{time_at_processing}}:{job_state=6?arrêté: -{job_state=7?annulé depuis<BR>{?time_at_completed=?Unknown:{time_at_completed}}:{job_state=8?annulé:terminé depuis<BR>{?time_at_completed=?Unknown:{time_at_completed}}}}}}}} {job_printer_state_message?<BR> +<TD>{job_state=3?en attente depuis<BR>{?time_at_creation=?Inconnu:{time_at_creation}}:{job_state=4?retenu depuis le<BR>{?time_at_creation=?Inconnu:{time_at_creation}}: +{job_state=5?en cours d'impression depuis<BR>{?time_at_processing=?Inconnu:{time_at_processing}}:{job_state=6?arrêté: +{job_state=7?annulé depuis<BR>{?time_at_completed=?Inconnu:{time_at_completed}}:{job_state=8?annulé:terminé depuis<BR>{?time_at_completed=?Inconnu:{time_at_completed}}}}}}}} {job_printer_state_message?<BR> <EM>"{job_printer_state_message}"</EM>:}</TD> <TD> {job_preserved>0?{job_state>5? diff --git a/templates/fr/printer-default.tmpl b/templates/fr/printer-default.tmpl index d8793b0..dc1ea6f 100644 --- a/templates/fr/printer-default.tmpl +++ b/templates/fr/printer-default.tmpl @@ -1,8 +1,8 @@ -<H2 CLASS="title">Définir {is_class?la classe:l'imprimante} {printer_name} comme imprimante par défaut</H2> +<H2 CLASS="title">Définir {is_class?la classe:l'imprimante} {printer_name} comme {is_class?classe:imprimante} par défaut</H2> <P>{is_class?La classe:L'imprimante} <A HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A> -a été définie comme imprimante par défaut du serveur.</P> +a été définie comme {is_class?classe:imprimante} par défaut du serveur.</P> <BLOCKQUOTE><B>Note:</B> Tout paramètre utilisateur défini via la commande <TT>lpoptions</TT> sera prioritaire sur le paramètre défini içi. </BLOCKQUOTE> diff --git a/templates/fr/printer.tmpl b/templates/fr/printer.tmpl index 5b4ad07..50acad4 100644 --- a/templates/fr/printer.tmpl +++ b/templates/fr/printer.tmpl @@ -1,6 +1,6 @@ <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A> ({printer_state=3?Inoccupée :{printer_state=4?En cours d'impression:En pause}}, -{printer_is_accepting_jobs=0?Rejette les tâches:accepte les tâches}, +{printer_is_accepting_jobs=0?Rejette les tâches:Accepte les tâches}, {server_is_sharing_printers=0?non:{printer_is_shared=0?non:}} partagée{default_name={printer_name}?, imprimante par défaut :})</H2> <FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance"> diff --git a/test/ipp-everywhere.test b/test/ipp-everywhere.test index 9e23db6..ee1ac0d 100644 --- a/test/ipp-everywhere.test +++ b/test/ipp-everywhere.test @@ -159,7 +159,7 @@ INCLUDE "ipp-2.0.test" EXPECT pwg-raster-document-resolution-supported WITH-VALUE 150dpi DEFINE-MATCH HAVE_150DPI EXPECT pwg-raster-document-resolution-supported WITH-VALUE 180dpi DEFINE-MATCH HAVE_180DPI EXPECT pwg-raster-document-resolution-supported WITH-VALUE 300dpi DEFINE-MATCH HAVE_300DPI - EXPECT pwg-raster-document-resolution-supported WITH-VALUE 3600dpi DEFINE-MATCH HAVE_360DPI + EXPECT pwg-raster-document-resolution-supported WITH-VALUE 360dpi DEFINE-MATCH HAVE_360DPI EXPECT pwg-raster-document-resolution-supported WITH-VALUE 600dpi DEFINE-MATCH HAVE_600DPI EXPECT pwg-raster-document-resolution-supported WITH-VALUE 720dpi DEFINE-MATCH HAVE_720DPI diff --git a/test/ippfind.c b/test/ippfind.c index e96f68d..2c93873 100644 --- a/test/ippfind.c +++ b/test/ippfind.c @@ -69,6 +69,7 @@ typedef enum ippfind_op_e /* Operations for expressions */ IPPFIND_OP_IS_REMOTE, /* Is a remote service */ IPPFIND_OP_DOMAIN_REGEX, /* Domain matches regular expression */ IPPFIND_OP_NAME_REGEX, /* Name matches regular expression */ + IPPFIND_OP_NAME_LITERAL, /* Name matches literal string */ IPPFIND_OP_HOST_REGEX, /* Hostname matches regular expression */ IPPFIND_OP_PORT_RANGE, /* Port matches range */ IPPFIND_OP_PATH_REGEX, /* Path matches regular expression */ @@ -93,7 +94,7 @@ typedef struct ippfind_expr_s /* Expression */ *child; /* Child expressions */ ippfind_op_t op; /* Operation code (see above) */ int invert; /* Invert the result */ - char *key; /* TXT record key */ + char *name; /* TXT record key or literal name */ regex_t re; /* Regular expression for matching */ int range[2]; /* Port number range */ int num_args; /* Number of arguments for exec */ @@ -274,6 +275,7 @@ main(int argc, /* I - Number of command-line args */ "IS_REMOTE", "DOMAIN_REGEX", "NAME_REGEX", + "NAME_LITERAL", "HOST_REGEX", "PORT_RANGE", "PATH_REGEX", @@ -419,6 +421,18 @@ main(int argc, /* I - Number of command-line args */ NULL)) == NULL) return (IPPFIND_EXIT_MEMORY); } + else if (!strcmp(argv[i], "--literal-name")) + { + i ++; + if (i >= argc) + { + _cupsLangPrintf(stderr, _("ippfind: Missing name after %s."), "--literal-name"); + show_usage(); + } + + if ((temp = new_expr(IPPFIND_OP_NAME_LITERAL, invert, argv[i], NULL, NULL)) == NULL) + return (IPPFIND_EXIT_MEMORY); + } else if (!strcmp(argv[i], "--name")) { i ++; @@ -724,6 +738,18 @@ main(int argc, /* I - Number of command-line args */ address_family = AF_INET6; break; + case 'N' : /* Literal name */ + i ++; + if (i >= argc) + { + _cupsLangPrintf(stderr, _("ippfind: Missing name after %s."), "-N"); + show_usage(); + } + + if ((temp = new_expr(IPPFIND_OP_NAME_LITERAL, invert, argv[i], NULL, NULL)) == NULL) + return (IPPFIND_EXIT_MEMORY); + break; + case 'P' : i ++; if (i >= argc) @@ -1173,27 +1199,51 @@ main(int argc, /* I - Number of command-line args */ *domain; /* Domain, if any */ strlcpy(buf, search, sizeof(buf)); - if (buf[0] == '_') + + if (!strncmp(buf, "_http._", 7) || !strncmp(buf, "_https._", 8) || !strncmp(buf, "_ipp._", 6) || !strncmp(buf, "_ipps._", 7)) { regtype = buf; } else if ((regtype = strstr(buf, "._")) != NULL) { - name = buf; - *regtype++ = '\0'; + if (strcmp(regtype, "._tcp")) + { + /* + * "something._protocol._tcp" -> search for something with the given + * protocol... + */ + + name = buf; + *regtype++ = '\0'; + } + else + { + /* + * "_protocol._tcp" -> search for everything with the given protocol... + */ + + /* name = NULL; */ + regtype = buf; + } } else { + /* + * "something" -> search for something with IPP protocol... + */ + name = buf; regtype = "_ipp._tcp"; } for (domain = regtype; *domain; domain ++) + { if (*domain == '.' && domain[1] != '_') { - *domain++ = '\0'; - break; + *domain++ = '\0'; + break; } + } if (!*domain) domain = NULL; @@ -1209,6 +1259,9 @@ main(int argc, /* I - Number of command-line args */ service = get_service(services, name, regtype, domain); + if (getenv("IPPFIND_DEBUG")) + fprintf(stderr, "Resolving name=\"%s\", regtype=\"%s\", domain=\"%s\"\n", name, regtype, domain); + #ifdef HAVE_DNSSD service->ref = dnssd_ref; err = DNSServiceResolve(&(service->ref), @@ -1234,6 +1287,9 @@ main(int argc, /* I - Number of command-line args */ * Browse for services of the given type... */ + if (getenv("IPPFIND_DEBUG")) + fprintf(stderr, "Browsing for regtype=\"%s\", domain=\"%s\"\n", regtype, domain); + #ifdef HAVE_DNSSD DNSServiceRef ref; /* Browse reference */ @@ -1264,14 +1320,6 @@ main(int argc, /* I - Number of command-line args */ _cupsLangPrintf(stderr, _("ippfind: Unable to browse or resolve: %s"), dnssd_error_string(err)); - if (name) - printf("name=\"%s\"\n", name); - - printf("regtype=\"%s\"\n", regtype); - - if (domain) - printf("domain=\"%s\"\n", domain); - return (IPPFIND_EXIT_BONJOUR); } } @@ -1784,6 +1832,9 @@ eval_expr(ippfind_srv_t *service, /* I - Service */ case IPPFIND_OP_NAME_REGEX : result = !regexec(&(expression->re), service->name, 0, NULL, 0); break; + case IPPFIND_OP_NAME_LITERAL : + result = !_cups_strcasecmp(expression->name, service->name); + break; case IPPFIND_OP_HOST_REGEX : result = !regexec(&(expression->re), service->host, 0, NULL, 0); break; @@ -1795,11 +1846,11 @@ eval_expr(ippfind_srv_t *service, /* I - Service */ result = !regexec(&(expression->re), service->resource, 0, NULL, 0); break; case IPPFIND_OP_TXT_EXISTS : - result = cupsGetOption(expression->key, service->num_txt, + result = cupsGetOption(expression->name, service->num_txt, service->txt) != NULL; break; case IPPFIND_OP_TXT_REGEX : - val = cupsGetOption(expression->key, service->num_txt, + val = cupsGetOption(expression->name, service->num_txt, service->txt); if (val) result = !regexec(&(expression->re), val, 0, NULL, 0); @@ -2427,8 +2478,8 @@ new_expr(ippfind_op_t op, /* I - Operation */ temp->op = op; temp->invert = invert; - if (op == IPPFIND_OP_TXT_EXISTS || op == IPPFIND_OP_TXT_REGEX) - temp->key = (char *)value; + if (op == IPPFIND_OP_TXT_EXISTS || op == IPPFIND_OP_TXT_REGEX || op == IPPFIND_OP_NAME_LITERAL) + temp->name = (char *)value; else if (op == IPPFIND_OP_PORT_RANGE) { /* diff --git a/test/ipptool.c b/test/ipptool.c index 658927a..9c57ca2 100644 --- a/test/ipptool.c +++ b/test/ipptool.c @@ -3044,7 +3044,7 @@ do_tests(cups_file_t *outfile, /* I - Output file */ if (attrptr->name) { - if (cupsArrayFind(a, attrptr->name)) + if (cupsArrayFind(a, attrptr->name) && Output < _CUPS_OUTPUT_LIST) add_stringf(errors, "Duplicate \"%s\" attribute in %s group", attrptr->name, ippTagString(group)); diff --git a/test/run-stp-tests.sh b/test/run-stp-tests.sh index 1063be4..056e8e5 100755 --- a/test/run-stp-tests.sh +++ b/test/run-stp-tests.sh @@ -492,11 +492,6 @@ StrictConformance Yes Browsing Off Listen localhost:$port Listen $BASE/sock -PassEnv DYLD_LIBRARY_PATH -PassEnv LD_LIBRARY_PATH -PassEnv LD_PRELOAD -PassEnv LOCALEDIR -PassEnv SHLIB_PATH MaxSubscriptions 3 MaxLogSize 0 AccessLogLevel actions @@ -532,6 +527,12 @@ TempDir $BASE/spool/temp AccessLog $BASE/log/access_log ErrorLog $BASE/log/error_log PageLog $BASE/log/page_log + +PassEnv DYLD_LIBRARY_PATH +PassEnv LD_LIBRARY_PATH +PassEnv LD_PRELOAD +PassEnv LOCALEDIR +PassEnv SHLIB_PATH EOF if test $ssltype != 0 -a `uname` = Darwin; then diff --git a/vcnet/config.h b/vcnet/config.h index 3507703..8e06946 100644 --- a/vcnet/config.h +++ b/vcnet/config.h @@ -94,8 +94,8 @@ typedef unsigned long useconds_t; * Version of software... */ -#define CUPS_SVERSION "CUPS v2.2.7" -#define CUPS_MINIMAL "CUPS/2.2.7" +#define CUPS_SVERSION "CUPS v2.2.8" +#define CUPS_MINIMAL "CUPS/2.2.8" /* diff --git a/xcode/config.h b/xcode/config.h index c9acd93..3843378 100644 --- a/xcode/config.h +++ b/xcode/config.h @@ -22,8 +22,8 @@ * Version of software... */ -#define CUPS_SVERSION "CUPS v2.2.7" -#define CUPS_MINIMAL "CUPS/2.2.7" +#define CUPS_SVERSION "CUPS v2.2.8" +#define CUPS_MINIMAL "CUPS/2.2.8" /* |