diff options
71 files changed, 1756 insertions, 1306 deletions
@@ -1,7 +1,49 @@ -CHANGES - 2.2.11 - 2019-03-22 +CHANGES - 2.2.12 - 2019-08-15 ============================= +Changes in CUPS v2.2.12 +----------------------- + +- CVE-2019-8696 and CVE-2019-8675: Fixed SNMP buffer overflows (rdar://51685251) +- The `cupsctl` command now prevents setting "cups-files.conf" directives + (Issue #5530) +- Updated the systemd service file for cupsd (Issue #5551) +- The `cupsCheckDestSupported` function did not check octetString values + correctly (Issue #5557) +- The scheduler did not encode octetString values like "job-password" correctly + for the print filters (Issue #5558) +- Restored minimal support for the `Emulators` keyword in PPD files to allow + old Samsung printer drivers to continue to work (Issue #5562) +- Timed out job submission now yields an error (Issue #5570) +- The footer in the web interface covered some content on small displays + (Issue #5574) +- The libusb-based USB backend now enforces read limits, improving print speed + in many cases (Issue #5583) +- Fixed some compatibility issues with old releases of CUPS (Issue #5587) +- Fixed a bug in the scheduler job cleanup code (Issue #5588) +- "make" failed with GZIP options (Issue #5595) +- Added FIPS-140 workarounds for GNU TLS (Issue #5601, Issue #5622) +- The scheduler no longer provides a default value for the description + (Issue #5603) +- The `lpadmin` command did not always update the PPD file for changes to the + `cupsIPPSupplies` and `cupsSNMPSupplies` keywords (Issue #5610) +- The scheduler now uses both the group's membership list as well as the + various OS-specific membership functions to determine whether a user belongs + to a named group (Issue #5613) +- Added USB quirks rule for HP LaserJet 1015 (Issue #5617) +- Fixed some PPD parser issues (Issue #5623, Issue #5624) +- The IPP parser no longer allows invalid member attributes in collections + (Issue #5630) +- Fixed IPP buffer overflow (rdar://50035411) +- Fixed memory disclosure issue in the scheduler (rdar://51373853) +- Fixed DoS issues in the scheduler (rdar://51373929) +- The scheduler would restart continuously when idle and printers were not + shared (rdar://52561199) +- Fixed a command ordering issue in the Zebra ZPL driver. +- Fixed a memory leak in `ppdOpen`. + + Changes in CUPS v2.2.11 ----------------------- @@ -41,7 +83,7 @@ Changes in CUPS v2.2.11 Changes in CUPS v2.2.10 ----------------------- -- CVE-2018-4700: Linux session cookies used a predictable random number seed. +- CVE-2018-4300: Linux session cookies used a predictable random number seed. - The `lpoptions` command now works with IPP Everywhere printers that have not yet been added as local queues (Issue #5045) - Added USB quirk rules (Issue #5395, Issue #5443) @@ -1,4 +1,4 @@ -INSTALL - CUPS v2.2.11 - 2019-03-22 +INSTALL - CUPS v2.2.12 - 2019-08-15 =================================== This file describes how to compile and install CUPS from source code. For more diff --git a/Makedefs.in b/Makedefs.in index f614c0c..8541b49 100644 --- a/Makedefs.in +++ b/Makedefs.in @@ -1,7 +1,7 @@ # # Common makefile definitions for CUPS. # -# Copyright 2007-2018 by Apple Inc. +# Copyright 2007-2019 by Apple Inc. # Copyright 1997-2007 by Easy Software Products, all rights reserved. # # These coded instructions, statements, and computer programs are the @@ -29,7 +29,7 @@ CHMOD = @CHMOD@ CXX = @LIBTOOL_CXX@ @CXX@ DSO = @DSO@ DSOXX = @DSOXX@ -GZIP = @GZIP@ +GZIPPROG = @GZIPPROG@ INSTALL = @INSTALL@ LD = @LD@ LD_CC = @LD_CC@ @@ -1,4 +1,4 @@ -README - CUPS v2.2.11 - 2019-03-22 +README - CUPS v2.2.12 - 2019-08-15 ================================== Looking for compile instructions? Read the file `INSTALL.md` instead... @@ -22,8 +22,9 @@ included with CUPS to support many Dymo, EPSON, HP, Intellitech, OKIDATA, and Zebra printers. Many more drivers are available online and (in some cases) on the driver CD-ROM that came with your printer. -CUPS is licensed under the GNU General Public License and GNU Library General -Public License versions 2. See the file "LICENSE.txt" for more information. +CUPS 2.2.x is licensed under the GNU General Public License and GNU Library +General Public License versions 2. See the file "LICENSE.txt" for more +information. READING THE DOCUMENTATION diff --git a/backend/org.cups.usb-quirks b/backend/org.cups.usb-quirks index 44d6bb8..cd684d3 100644 --- a/backend/org.cups.usb-quirks +++ b/backend/org.cups.usb-quirks @@ -242,6 +242,9 @@ # All Intermec devices (Issue #4553) 0x067e no-reattach +# HP LaserJet 1015 (Issue #5617) +0x03f0 0x0e17 delay-close + # HP LaserJet 1150 (Issue #4549) 0x03f0 0x0f17 delay-close diff --git a/backend/usb-libusb.c b/backend/usb-libusb.c index 7fc95c2..042854b 100644 --- a/backend/usb-libusb.c +++ b/backend/usb-libusb.c @@ -1,7 +1,7 @@ /* * LIBUSB interface code for CUPS. * - * Copyright 2007-2015 by Apple Inc. + * Copyright 2007-2019 by Apple Inc. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright @@ -1746,8 +1746,7 @@ static void *read_thread(void *reference) * Make sure this loop executes no more than once every 250 miliseconds... */ - if ((readstatus != LIBUSB_SUCCESS || rbytes == 0) && - (g.wait_eof || !g.read_thread_stop)) + if ((g.wait_eof || !g.read_thread_stop)) { gettimeofday(&now, NULL); if (timercmp(&now, &end, <)) diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c index e27c078..43fad78 100644 --- a/cgi-bin/admin.c +++ b/cgi-bin/admin.c @@ -3410,6 +3410,9 @@ do_set_options(http_t *http, /* I - HTTP connection */ switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_POINTS : if (!_cups_strncasecmp(option->defchoice, "Custom.", 7)) { @@ -4009,6 +4012,9 @@ get_option_value( switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_CURVE : case PPD_CUSTOM_INVCURVE : case PPD_CUSTOM_REAL : @@ -4087,6 +4093,9 @@ get_option_value( switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_CURVE : case PPD_CUSTOM_INVCURVE : case PPD_CUSTOM_REAL : diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4 index a1185bc..0859efe 100644 --- a/config-scripts/cups-common.m4 +++ b/config-scripts/cups-common.m4 @@ -1,7 +1,7 @@ dnl dnl Common configuration stuff for CUPS. dnl -dnl Copyright 2007-2017 by Apple Inc. +dnl Copyright 2007-2019 by Apple Inc. dnl Copyright 1997-2007 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -42,7 +42,11 @@ AC_PROG_CXX(clang++ c++ g++) AC_PROG_RANLIB AC_PATH_PROG(AR,ar) AC_PATH_PROG(CHMOD,chmod) -AC_PATH_PROG(GZIP,gzip) +AC_PATH_PROG(GZIPPROG,gzip) +AC_MSG_CHECKING(for install-sh script) +INSTALL="`pwd`/install-sh" +AC_SUBST(INSTALL) +AC_MSG_RESULT(using $INSTALL) AC_PATH_PROG(LD,ld) AC_PATH_PROG(LN,ln) AC_PATH_PROG(MKDIR,mkdir) @@ -51,6 +55,7 @@ AC_PATH_PROG(RM,rm) AC_PATH_PROG(RMDIR,rmdir) AC_PATH_PROG(SED,sed) AC_PATH_PROG(XDGOPEN,xdg-open) + if test "x$XDGOPEN" = x; then CUPS_HTMLVIEW="htmlview" else @@ -58,11 +63,6 @@ else fi AC_SUBST(CUPS_HTMLVIEW) -AC_MSG_CHECKING(for install-sh script) -INSTALL="`pwd`/install-sh" -AC_SUBST(INSTALL) -AC_MSG_RESULT(using $INSTALL) - if test "x$AR" = x; then AC_MSG_ERROR([Unable to find required library archive command.]) fi @@ -266,14 +266,14 @@ dnl ZLIB INSTALL_GZIP="" LIBZ="" AC_CHECK_HEADER(zlib.h, - AC_CHECK_LIB(z, gzgets, + AC_CHECK_LIB(z, gzgets,[ AC_DEFINE(HAVE_LIBZ) LIBZ="-lz" LIBS="$LIBS -lz" AC_CHECK_LIB(z, inflateCopy, AC_DEFINE(HAVE_INFLATECOPY)) - if test "x$GZIP" != z; then + if test "x$GZIPPROG" != x; then INSTALL_GZIP="-z" - fi)) + fi])) AC_SUBST(INSTALL_GZIP) AC_SUBST(LIBZ) diff --git a/config-scripts/cups-ssl.m4 b/config-scripts/cups-ssl.m4 index 52f9c39..49fe42f 100644 --- a/config-scripts/cups-ssl.m4 +++ b/config-scripts/cups-ssl.m4 @@ -80,6 +80,7 @@ if test x$enable_ssl != xno; then SAVELIBS="$LIBS" LIBS="$LIBS $SSLLIBS" + AC_CHECK_FUNC(gnutls_fips140_set_mode, AC_DEFINE(HAVE_GNUTLS_FIPS140_SET_MODE)) AC_CHECK_FUNC(gnutls_transport_set_pull_timeout_function, AC_DEFINE(HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION)) AC_CHECK_FUNC(gnutls_priority_set_direct, AC_DEFINE(HAVE_GNUTLS_PRIORITY_SET_DIRECT)) LIBS="$SAVELIBS" diff --git a/config.h.in b/config.h.in index f3b5e4c..d81c59e 100644 --- a/config.h.in +++ b/config.h.in @@ -304,6 +304,13 @@ /* + * Do we have the gnutls_fips140_set_mode function? + */ + +#undef HAVE_GNUTLS_FIPS140_SET_MODE + + +/* * Do we have the gnutls_transport_set_pull_timeout_function function? */ @@ -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.11. +# Generated by GNU Autoconf 2.69 for CUPS 2.2.12. # # 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.11' -PACKAGE_STRING='CUPS 2.2.11' +PACKAGE_VERSION='2.2.12' +PACKAGE_STRING='CUPS 2.2.12' PACKAGE_BUGREPORT='https://github.com/apple/cups/issues' PACKAGE_URL='https://www.cups.org/' @@ -762,7 +762,6 @@ LIBPAPER LIBMALLOC PKGCONFIG INSTALLSTATIC -INSTALL CUPS_HTMLVIEW XDGOPEN SED @@ -772,7 +771,8 @@ MV MKDIR LN LD -GZIP +INSTALL +GZIPPROG CHMOD AR RANLIB @@ -1480,7 +1480,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.11 to adapt to many kinds of systems. +\`configure' configures CUPS 2.2.12 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1545,7 +1545,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of CUPS 2.2.11:";; + short | recursive ) echo "Configuration of CUPS 2.2.12:";; esac cat <<\_ACEOF @@ -1726,7 +1726,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -CUPS configure 2.2.11 +CUPS configure 2.2.12 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2190,7 +2190,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.11, which was +It was created by CUPS $as_me 2.2.12, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2711,7 +2711,7 @@ done ac_config_headers="$ac_config_headers config.h" -CUPS_VERSION="2.2.11" +CUPS_VERSION="2.2.12" CUPS_REVISION="" CUPS_BUILD="cups-$CUPS_VERSION" @@ -3948,12 +3948,12 @@ fi set dummy gzip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GZIP+:} false; then : +if ${ac_cv_path_GZIPPROG+:} false; then : $as_echo_n "(cached) " >&6 else - case $GZIP in + case $GZIPPROG in [\\/]* | ?:[\\/]*) - ac_cv_path_GZIP="$GZIP" # Let the user override the test with a path. + ac_cv_path_GZIPPROG="$GZIPPROG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR @@ -3963,7 +3963,7 @@ do test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GZIP="$as_dir/$ac_word$ac_exec_ext" + ac_cv_path_GZIPPROG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi @@ -3974,16 +3974,22 @@ IFS=$as_save_IFS ;; esac fi -GZIP=$ac_cv_path_GZIP -if test -n "$GZIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIP" >&5 -$as_echo "$GZIP" >&6; } +GZIPPROG=$ac_cv_path_GZIPPROG +if test -n "$GZIPPROG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GZIPPROG" >&5 +$as_echo "$GZIPPROG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for install-sh script" >&5 +$as_echo_n "checking for install-sh script... " >&6; } +INSTALL="`pwd`/install-sh" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $INSTALL" >&5 +$as_echo "using $INSTALL" >&6; } # Extract the first word of "ld", so it can be a program name with args. set dummy ld; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 @@ -4304,6 +4310,7 @@ $as_echo "no" >&6; } fi + if test "x$XDGOPEN" = x; then CUPS_HTMLVIEW="htmlview" else @@ -4311,13 +4318,6 @@ else fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for install-sh script" >&5 -$as_echo_n "checking for install-sh script... " >&6; } -INSTALL="`pwd`/install-sh" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: using $INSTALL" >&5 -$as_echo "using $INSTALL" >&6; } - if test "x$AR" = x; then as_fn_error $? "Unable to find required library archive command." "$LINENO" 5 fi @@ -5718,7 +5718,8 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzgets" >&5 $as_echo "$ac_cv_lib_z_gzgets" >&6; } if test "x$ac_cv_lib_z_gzgets" = xyes; then : - $as_echo "#define HAVE_LIBZ 1" >>confdefs.h + + $as_echo "#define HAVE_LIBZ 1" >>confdefs.h LIBZ="-lz" LIBS="$LIBS -lz" @@ -5763,7 +5764,7 @@ if test "x$ac_cv_lib_z_inflateCopy" = xyes; then : fi - if test "x$GZIP" != z; then + if test "x$GZIPPROG" != x; then INSTALL_GZIP="-z" fi fi @@ -8479,6 +8480,12 @@ fi SAVELIBS="$LIBS" LIBS="$LIBS $SSLLIBS" + ac_fn_c_check_func "$LINENO" "gnutls_fips140_set_mode" "ac_cv_func_gnutls_fips140_set_mode" +if test "x$ac_cv_func_gnutls_fips140_set_mode" = xyes; then : + $as_echo "#define HAVE_GNUTLS_FIPS140_SET_MODE 1" >>confdefs.h + +fi + ac_fn_c_check_func "$LINENO" "gnutls_transport_set_pull_timeout_function" "ac_cv_func_gnutls_transport_set_pull_timeout_function" if test "x$ac_cv_func_gnutls_transport_set_pull_timeout_function" = xyes; then : $as_echo "#define HAVE_GNUTLS_TRANSPORT_SET_PULL_TIMEOUT_FUNCTION 1" >>confdefs.h @@ -10832,7 +10839,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.11, which was +This file was extended by CUPS $as_me 2.2.12, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -10895,7 +10902,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.11 +CUPS config.status 2.2.12 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 4c770e7..7762599 100644 --- a/configure.ac +++ b/configure.ac @@ -1,7 +1,7 @@ dnl dnl Configuration script for CUPS. dnl -dnl Copyright 2007-2018 by Apple Inc. +dnl Copyright 2007-2019 by Apple Inc. dnl Copyright 1997-2007 by Easy Software Products, all rights reserved. dnl dnl These coded instructions, statements, and computer programs are the @@ -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.11], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/]) +AC_INIT([CUPS], [2.2.12], [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/cups-private.h b/cups/cups-private.h index 6fd66a9..4ec4e68 100644 --- a/cups/cups-private.h +++ b/cups/cups-private.h @@ -239,8 +239,7 @@ extern http_t *_cupsConnect(void); extern char *_cupsCreateDest(const char *name, const char *info, const char *device_id, const char *device_uri, char *uri, size_t urisize); extern int _cupsGet1284Values(const char *device_id, cups_option_t **values); -extern const char *_cupsGetDestResource(cups_dest_t *dest, char *resource, - size_t resourcesize); +extern const char *_cupsGetDestResource(cups_dest_t *dest, unsigned flags, char *resource, size_t resourcesize); extern int _cupsGetDests(http_t *http, ipp_op_t op, const char *name, cups_dest_t **dests, cups_ptype_t type, cups_ptype_t mask); diff --git a/cups/cups.h b/cups/cups.h index 4efe6d1..c548bde 100644 --- a/cups/cups.h +++ b/cups/cups.h @@ -47,10 +47,10 @@ extern "C" { * Constants... */ -# define CUPS_VERSION 2.0211 +# define CUPS_VERSION 2.0212 # define CUPS_VERSION_MAJOR 2 # define CUPS_VERSION_MINOR 2 -# define CUPS_VERSION_PATCH 11 +# define CUPS_VERSION_PATCH 12 # define CUPS_BC_FD 3 /* Back-channel file descriptor for diff --git a/cups/dest-options.c b/cups/dest-options.c index 51705a5..e9361ad 100644 --- a/cups/dest-options.c +++ b/cups/dest-options.c @@ -1,7 +1,7 @@ /* * Destination option/media support for CUPS. * - * Copyright 2012-2017 by Apple Inc. + * Copyright 2012-2019 by Apple Inc. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright @@ -83,6 +83,7 @@ cupsCheckDestSupported( ipp_res_t units_value; /* Resolution units */ ipp_attribute_t *attr; /* Attribute */ _ipp_value_t *attrval; /* Current attribute value */ + _ipp_option_t *map; /* Option mapping information */ /* @@ -128,10 +129,10 @@ cupsCheckDestSupported( */ pwg_media_t *pwg; /* Current PWG media size info */ - int min_width, /* Minimum width */ - min_length, /* Minimum length */ - max_width, /* Maximum width */ - max_length; /* Maximum length */ + int min_width, /* Minimum width */ + min_length, /* Minimum length */ + max_width, /* Maximum width */ + max_length; /* Maximum length */ /* * Get the minimum and maximum size... @@ -174,9 +175,14 @@ cupsCheckDestSupported( * Check literal values... */ + map = _ippFindOption(option); + switch (attr->value_tag) { case IPP_TAG_INTEGER : + if (map && map->value_tag == IPP_TAG_STRING) + return (strlen(value) <= (size_t)attr->values[0].integer); + case IPP_TAG_ENUM : int_value = atoi(value); @@ -189,7 +195,10 @@ cupsCheckDestSupported( return (attr->values[0].boolean); case IPP_TAG_RANGE : - int_value = atoi(value); + if (map && map->value_tag == IPP_TAG_STRING) + int_value = (int)strlen(value); + else + int_value = atoi(value); for (i = 0; i < attr->num_values; i ++) if (int_value >= attr->values[i].range.lower && @@ -572,6 +581,7 @@ cupsCopyDestInfo( cups_dest_t *dest) /* I - Destination */ { cups_dinfo_t *dinfo; /* Destination information */ + unsigned dflags; /* Destination flags */ ipp_t *request, /* Get-Printer-Attributes request */ *response; /* Supported attributes */ int tries, /* Number of tries so far */ @@ -581,6 +591,7 @@ cupsCopyDestInfo( char resource[1024]; /* Resource path */ int version; /* IPP version */ ipp_status_t status; /* Status of request */ + _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ static const char * const requested_attrs[] = { /* Requested attributes */ "job-template", @@ -589,14 +600,35 @@ cupsCopyDestInfo( }; - DEBUG_printf(("cupsCopyDestSupported(http=%p, dest=%p(%s))", (void *)http, (void *)dest, dest ? dest->name : "")); + DEBUG_printf(("cupsCopyDestInfo(http=%p, dest=%p(%s))", (void *)http, (void *)dest, dest ? dest->name : "")); /* * Get the default connection as needed... */ if (!http) - http = _cupsConnect(); + { + DEBUG_puts("1cupsCopyDestInfo: Default server connection."); + http = _cupsConnect(); + dflags = CUPS_DEST_FLAGS_NONE; + } +#ifdef AF_LOCAL + else if (httpAddrFamily(http->hostaddr) == AF_LOCAL) + { + DEBUG_puts("1cupsCopyDestInfo: Connection to server (domain socket)."); + dflags = CUPS_DEST_FLAGS_NONE; + } +#endif /* AF_LOCAL */ + else if ((strcmp(http->hostname, cg->server) && cg->server[0] != '/') || cg->ipp_port != httpAddrPort(http->hostaddr)) + { + DEBUG_printf(("1cupsCopyDestInfo: Connection to device (%s).", http->hostname)); + dflags = CUPS_DEST_FLAGS_DEVICE; + } + else + { + DEBUG_printf(("1cupsCopyDestInfo: Connection to server (%s).", http->hostname)); + dflags = CUPS_DEST_FLAGS_NONE; + } /* * Range check input... @@ -609,8 +641,11 @@ cupsCopyDestInfo( * Get the printer URI and resource path... */ - if ((uri = _cupsGetDestResource(dest, resource, sizeof(resource))) == NULL) + if ((uri = _cupsGetDestResource(dest, dflags, resource, sizeof(resource))) == NULL) + { + DEBUG_puts("1cupsCopyDestInfo: Unable to get resource."); return (NULL); + } /* * Get the supported attributes... @@ -628,28 +663,25 @@ cupsCopyDestInfo( */ request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES); - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, - uri); - ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, - "requesting-user-name", NULL, cupsUser()); - ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, - "requested-attributes", - (int)(sizeof(requested_attrs) / sizeof(requested_attrs[0])), - NULL, requested_attrs); + + ippSetVersion(request, version / 10, version % 10); + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri); + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser()); + ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", (int)(sizeof(requested_attrs) / sizeof(requested_attrs[0])), NULL, requested_attrs); response = cupsDoRequest(http, request, resource); status = cupsLastError(); if (status > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED) { - DEBUG_printf(("cupsCopyDestSupported: Get-Printer-Attributes for '%s' " - "returned %s (%s)", dest->name, ippErrorString(status), - cupsLastErrorString())); + DEBUG_printf(("1cupsCopyDestInfo: Get-Printer-Attributes for '%s' returned %s (%s)", dest->name, ippErrorString(status), cupsLastErrorString())); ippDelete(response); response = NULL; - if (status == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED && version > 11) + if ((status == IPP_STATUS_ERROR_BAD_REQUEST || status == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED) && version > 11) + { version = 11; + } else if (status == IPP_STATUS_ERROR_BUSY) { sleep((unsigned)delay); @@ -665,7 +697,10 @@ cupsCopyDestInfo( while (!response && tries < 10); if (!response) + { + DEBUG_puts("1cupsCopyDestInfo: Unable to get printer attributes."); return (NULL); + } /* * Allocate a cups_dinfo_t structure and return it... @@ -678,6 +713,8 @@ cupsCopyDestInfo( return (NULL); } + DEBUG_printf(("1cupsCopyDestInfo: version=%d, uri=\"%s\", resource=\"%s\".", version, uri, resource)); + dinfo->version = version; dinfo->uri = uri; dinfo->resource = _cupsStrAlloc(resource); @@ -938,10 +975,10 @@ cupsGetDestMediaByIndex( return (0); } - if (nsize->size_name) - strlcpy(size->media, nsize->size_name, sizeof(size->media)); - else if (nsize->key) + if (nsize->key) strlcpy(size->media, nsize->key, sizeof(size->media)); + else if (nsize->size_name) + strlcpy(size->media, nsize->size_name, sizeof(size->media)); else if ((pwg = pwgMediaForSize(nsize->width, nsize->length)) != NULL) strlcpy(size->media, pwg->pwg, sizeof(size->media)); else @@ -1202,25 +1239,19 @@ cupsGetDestMediaDefault( * Get the default media size, if any... */ - if ((media = cupsGetOption("media", dest->num_options, - dest->options)) == NULL) + if ((media = cupsGetOption("media", dest->num_options, dest->options)) == NULL) media = "na_letter_8.5x11in"; if (cupsGetDestMediaByName(http, dest, dinfo, media, flags, size)) return (1); - if (strcmp(media, "na_letter_8.5x11in") && - cupsGetDestMediaByName(http, dest, dinfo, "iso_a4_210x297mm", flags, - size)) + if (strcmp(media, "na_letter_8.5x11in") && cupsGetDestMediaByName(http, dest, dinfo, "iso_a4_210x297mm", flags, size)) return (1); - if (strcmp(media, "iso_a4_210x297mm") && - cupsGetDestMediaByName(http, dest, dinfo, "na_letter_8.5x11in", flags, - size)) + if (strcmp(media, "iso_a4_210x297mm") && cupsGetDestMediaByName(http, dest, dinfo, "na_letter_8.5x11in", flags, size)) return (1); - if ((flags & CUPS_MEDIA_FLAGS_BORDERLESS) && - cupsGetDestMediaByName(http, dest, dinfo, "na_index_4x6in", flags, size)) + if ((flags & CUPS_MEDIA_FLAGS_BORDERLESS) && cupsGetDestMediaByName(http, dest, dinfo, "na_index_4x6in", flags, size)) return (1); /* @@ -1513,6 +1544,7 @@ cups_create_media_db( pwg_media_t *pwg; /* PWG media info */ cups_array_t *db; /* New media database array */ _cups_media_db_t mdb; /* Media entry */ + char media_key[256]; /* Synthesized media-key value */ db = cupsArrayNew3((cups_array_func_t)cups_compare_media_db, @@ -1613,61 +1645,92 @@ cups_create_media_db( } } - if ((media_attr = ippFindAttribute(val->collection, "media-color", - IPP_TAG_ZERO)) != NULL && - (media_attr->value_tag == IPP_TAG_NAME || - media_attr->value_tag == IPP_TAG_NAMELANG || - media_attr->value_tag == IPP_TAG_KEYWORD)) + if ((media_attr = ippFindAttribute(val->collection, "media-color", IPP_TAG_ZERO)) != NULL && (media_attr->value_tag == IPP_TAG_NAME || media_attr->value_tag == IPP_TAG_NAMELANG || media_attr->value_tag == IPP_TAG_KEYWORD)) mdb.color = media_attr->values[0].string.text; - if ((media_attr = ippFindAttribute(val->collection, "media-info", - IPP_TAG_TEXT)) != NULL) + if ((media_attr = ippFindAttribute(val->collection, "media-info", IPP_TAG_TEXT)) != NULL) mdb.info = media_attr->values[0].string.text; - if ((media_attr = ippFindAttribute(val->collection, "media-key", - IPP_TAG_ZERO)) != NULL && - (media_attr->value_tag == IPP_TAG_NAME || - media_attr->value_tag == IPP_TAG_NAMELANG || - media_attr->value_tag == IPP_TAG_KEYWORD)) + if ((media_attr = ippFindAttribute(val->collection, "media-key", IPP_TAG_ZERO)) != NULL && (media_attr->value_tag == IPP_TAG_NAME || media_attr->value_tag == IPP_TAG_NAMELANG || media_attr->value_tag == IPP_TAG_KEYWORD)) mdb.key = media_attr->values[0].string.text; - if ((media_attr = ippFindAttribute(val->collection, "media-size-name", - IPP_TAG_ZERO)) != NULL && - (media_attr->value_tag == IPP_TAG_NAME || - media_attr->value_tag == IPP_TAG_NAMELANG || - media_attr->value_tag == IPP_TAG_KEYWORD)) + if ((media_attr = ippFindAttribute(val->collection, "media-size-name", IPP_TAG_ZERO)) != NULL && (media_attr->value_tag == IPP_TAG_NAME || media_attr->value_tag == IPP_TAG_NAMELANG || media_attr->value_tag == IPP_TAG_KEYWORD)) mdb.size_name = media_attr->values[0].string.text; - if ((media_attr = ippFindAttribute(val->collection, "media-source", - IPP_TAG_ZERO)) != NULL && - (media_attr->value_tag == IPP_TAG_NAME || - media_attr->value_tag == IPP_TAG_NAMELANG || - media_attr->value_tag == IPP_TAG_KEYWORD)) + if ((media_attr = ippFindAttribute(val->collection, "media-source", IPP_TAG_ZERO)) != NULL && (media_attr->value_tag == IPP_TAG_NAME || media_attr->value_tag == IPP_TAG_NAMELANG || media_attr->value_tag == IPP_TAG_KEYWORD)) mdb.source = media_attr->values[0].string.text; - if ((media_attr = ippFindAttribute(val->collection, "media-type", - IPP_TAG_ZERO)) != NULL && - (media_attr->value_tag == IPP_TAG_NAME || - media_attr->value_tag == IPP_TAG_NAMELANG || - media_attr->value_tag == IPP_TAG_KEYWORD)) + if ((media_attr = ippFindAttribute(val->collection, "media-type", IPP_TAG_ZERO)) != NULL && (media_attr->value_tag == IPP_TAG_NAME || media_attr->value_tag == IPP_TAG_NAMELANG || media_attr->value_tag == IPP_TAG_KEYWORD)) mdb.type = media_attr->values[0].string.text; - if ((media_attr = ippFindAttribute(val->collection, "media-bottom-margin", - IPP_TAG_INTEGER)) != NULL) + if ((media_attr = ippFindAttribute(val->collection, "media-bottom-margin", IPP_TAG_INTEGER)) != NULL) mdb.bottom = media_attr->values[0].integer; - if ((media_attr = ippFindAttribute(val->collection, "media-left-margin", - IPP_TAG_INTEGER)) != NULL) + if ((media_attr = ippFindAttribute(val->collection, "media-left-margin", IPP_TAG_INTEGER)) != NULL) mdb.left = media_attr->values[0].integer; - if ((media_attr = ippFindAttribute(val->collection, "media-right-margin", - IPP_TAG_INTEGER)) != NULL) + if ((media_attr = ippFindAttribute(val->collection, "media-right-margin", IPP_TAG_INTEGER)) != NULL) mdb.right = media_attr->values[0].integer; - if ((media_attr = ippFindAttribute(val->collection, "media-top-margin", - IPP_TAG_INTEGER)) != NULL) + if ((media_attr = ippFindAttribute(val->collection, "media-top-margin", IPP_TAG_INTEGER)) != NULL) mdb.top = media_attr->values[0].integer; + if (!mdb.key) + { + if (!mdb.size_name && (pwg = pwgMediaForSize(mdb.width, mdb.length)) != NULL) + mdb.size_name = (char *)pwg->pwg; + + if (!mdb.size_name) + { + /* + * Use a CUPS-specific identifier if we don't have a size name... + */ + + if (flags & CUPS_MEDIA_FLAGS_READY) + snprintf(media_key, sizeof(media_key), "cups-media-ready-%d", i + 1); + else + snprintf(media_key, sizeof(media_key), "cups-media-%d", i + 1); + } + else if (mdb.source) + { + /* + * Generate key using size name, source, and type (if set)... + */ + + if (mdb.type) + snprintf(media_key, sizeof(media_key), "%s_%s_%s", mdb.size_name, mdb.source, mdb.type); + else + snprintf(media_key, sizeof(media_key), "%s_%s", mdb.size_name, mdb.source); + } + else if (mdb.type) + { + /* + * Generate key using size name and type... + */ + + snprintf(media_key, sizeof(media_key), "%s_%s", mdb.size_name, mdb.type); + } + else + { + /* + * Key is just the size name... + */ + + strlcpy(media_key, mdb.size_name, sizeof(media_key)); + } + + /* + * Append "_borderless" for borderless media... + */ + + if (!mdb.bottom && !mdb.left && !mdb.right && !mdb.top) + strlcat(media_key, "_borderless", sizeof(media_key)); + + mdb.key = media_key; + } + + DEBUG_printf(("1cups_create_media_db: Adding media: key=\"%s\", width=%d, length=%d, source=\"%s\", type=\"%s\".", mdb.key, mdb.width, mdb.length, mdb.source, mdb.type)); + cupsArrayAdd(db, &mdb); } @@ -2027,12 +2090,14 @@ cups_get_media_db(http_t *http, /* I - Connection to destination */ * Return the matching size... */ - if (best->size_name) - strlcpy(size->media, best->size_name, sizeof(size->media)); - else if (best->key) + if (best->key) strlcpy(size->media, best->key, sizeof(size->media)); - else + else if (best->size_name) + strlcpy(size->media, best->size_name, sizeof(size->media)); + else if (pwg && pwg->pwg) strlcpy(size->media, pwg->pwg, sizeof(size->media)); + else + strlcpy(size->media, "unknown", sizeof(size->media)); size->width = best->width; size->length = best->length; diff --git a/cups/dest.c b/cups/dest.c index 7ef85a1..fd635b1 100644 --- a/cups/dest.c +++ b/cups/dest.c @@ -79,7 +79,6 @@ typedef enum _cups_dnssd_state_e /* Enumerated device state */ _CUPS_DNSSD_QUERY, _CUPS_DNSSD_PENDING, _CUPS_DNSSD_ACTIVE, - _CUPS_DNSSD_LOCAL, _CUPS_DNSSD_INCOMPATIBLE, _CUPS_DNSSD_ERROR } _cups_dnssd_state_t; @@ -99,6 +98,10 @@ typedef struct _cups_dnssd_data_s /* Enumeration data */ cups_ptype_t type, /* Printer type filter */ mask; /* Printer type mask */ cups_array_t *devices; /* Devices found so far */ + int num_dests; /* Number of lpoptions destinations */ + cups_dest_t *dests; /* lpoptions destinations */ + char def_name[1024], /* Default printer name, if any */ + *def_instance; /* Default printer instance, if any */ } _cups_dnssd_data_t; typedef struct _cups_dnssd_device_s /* Enumerated device */ @@ -125,8 +128,10 @@ typedef struct _cups_dnssd_resolve_s /* Data for resolving URI */ typedef struct _cups_getdata_s { - int num_dests; /* Number of destinations */ - cups_dest_t *dests; /* Destinations */ + int num_dests; /* Number of destinations */ + cups_dest_t *dests; /* Destinations */ + char def_name[1024], /* Default printer name, if any */ + *def_instance; /* Default printer instance, if any */ } _cups_getdata_t; typedef struct _cups_namedata_s @@ -192,14 +197,6 @@ static _cups_dnssd_device_t * const char *regtype, const char *replyDomain); # ifdef HAVE_DNSSD -static void cups_dnssd_local_cb(DNSServiceRef sdRef, - DNSServiceFlags flags, - uint32_t interfaceIndex, - DNSServiceErrorType errorCode, - const char *serviceName, - const char *regtype, - const char *replyDomain, - void *context); static void cups_dnssd_query_cb(DNSServiceRef sdRef, DNSServiceFlags flags, uint32_t interfaceIndex, @@ -237,9 +234,7 @@ static int cups_find_dest(const char *name, const char *instance, static int cups_get_cb(_cups_getdata_t *data, unsigned flags, cups_dest_t *dest); static char *cups_get_default(const char *filename, char *namebuf, size_t namesize, const char **instance); -static int cups_get_dests(const char *filename, const char *match_name, - const char *match_inst, int user_default_set, - int num_dests, cups_dest_t **dests); +static int cups_get_dests(const char *filename, const char *match_name, const char *match_inst, int load_all, int user_default_set, int num_dests, cups_dest_t **dests); static char *cups_make_string(ipp_attribute_t *attr, char *buffer, size_t bufsize); static int cups_name_cb(_cups_namedata_t *data, unsigned flags, cups_dest_t *dest); @@ -574,7 +569,7 @@ _cupsAppleSetUseLastPrinter( /* - * 'cupsConnectDest()' - Open a conection to the destination. + * 'cupsConnectDest()' - Open a connection to the destination. * * Connect to the destination, returning a new @code http_t@ connection object * and optionally the resource path to use for the destination. These calls @@ -583,7 +578,7 @@ _cupsAppleSetUseLastPrinter( * returns 0. The caller is responsible for calling @link httpClose@ on the * returned connection. * - * Starting with CUPS 2.2.4, the caller can pass @code CUPS_DEST_FLAGS_DEVICE@ + * Starting with CUPS 2.2.4, the caller can pass @code CUPS_DEST_FLAGS_DEVICE@ * for the "flags" argument to connect directly to the device associated with * the destination. Otherwise, the connection is made to the CUPS scheduler * associated with the destination. @@ -851,6 +846,8 @@ cupsCopyDest(cups_dest_t *dest, /* I - Destination to copy */ if (new_dest) { + new_dest->is_default = dest->is_default; + if ((new_dest->options = calloc(sizeof(cups_option_t), (size_t)dest->num_options)) == NULL) return (cupsRemoveDest(dest->name, dest->instance, num_dests, dests)); @@ -1103,20 +1100,23 @@ cupsGetDest(const char *name, /* I - Destination name or @code NULL@ for the d * '_cupsGetDestResource()' - Get the resource path and URI for a destination. */ -const char * /* O - Printer URI */ +const char * /* O - URI */ _cupsGetDestResource( cups_dest_t *dest, /* I - Destination */ + unsigned flags, /* I - Destination flags */ char *resource, /* I - Resource buffer */ size_t resourcesize) /* I - Size of resource buffer */ { - const char *uri; /* Printer URI */ + const char *uri, /* URI */ + *device_uri, /* Device URI */ + *printer_uri; /* Printer URI */ char scheme[32], /* URI scheme */ userpass[256], /* Username and password (unused) */ hostname[256]; /* Hostname */ int port; /* Port number */ - DEBUG_printf(("_cupsGetDestResource(dest=%p(%s), resource=%p, resourcesize=%d)", (void *)dest, dest->name, (void *)resource, (int)resourcesize)); + DEBUG_printf(("_cupsGetDestResource(dest=%p(%s), flags=%u, resource=%p, resourcesize=%d)", (void *)dest, dest->name, flags, (void *)resource, (int)resourcesize)); /* * Range check input... @@ -1132,25 +1132,46 @@ _cupsGetDestResource( } /* - * Grab the printer URI... + * Grab the printer and device URIs... */ - if ((uri = cupsGetOption("printer-uri-supported", dest->num_options, dest->options)) == NULL) + device_uri = cupsGetOption("device-uri", dest->num_options, dest->options); + printer_uri = cupsGetOption("printer-uri-supported", dest->num_options, dest->options); + + DEBUG_printf(("1_cupsGetDestResource: device-uri=\"%s\", printer-uri-supported=\"%s\".", device_uri, printer_uri)); + +#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) + if (((flags & CUPS_DEST_FLAGS_DEVICE) || !printer_uri) && strstr(device_uri, "._tcp")) { - if ((uri = cupsGetOption("device-uri", dest->num_options, dest->options)) != NULL) + if ((device_uri = cups_dnssd_resolve(dest, device_uri, 5000, NULL, NULL, NULL)) != NULL) { -#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) - if (strstr(uri, "._tcp")) - uri = cups_dnssd_resolve(dest, uri, 5000, NULL, NULL, NULL); -#endif /* HAVE_DNSSD || HAVE_AVAHI */ + DEBUG_printf(("1_cupsGetDestResource: Resolved device-uri=\"%s\".", device_uri)); } - - if (uri) + else { - DEBUG_printf(("1_cupsGetDestResource: Resolved printer-uri-supported=\"%s\"", uri)); + DEBUG_puts("1_cupsGetDestResource: Unable to resolve device."); - uri = _cupsCreateDest(dest->name, cupsGetOption("printer-info", dest->num_options, dest->options), NULL, uri, resource, resourcesize); + if (resource) + *resource = '\0'; + + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0); + + return (NULL); } + } +#endif /* HAVE_DNSSD || HAVE_AVAHI */ + + if (flags & CUPS_DEST_FLAGS_DEVICE) + { + uri = device_uri; + } + else if (printer_uri) + { + uri = printer_uri; + } + else + { + uri = _cupsCreateDest(dest->name, cupsGetOption("printer-info", dest->num_options, dest->options), NULL, device_uri, resource, resourcesize); if (uri) { @@ -1160,30 +1181,24 @@ _cupsGetDestResource( uri = cupsGetOption("printer-uri-supported", dest->num_options, dest->options); } - else - { - DEBUG_puts("1_cupsGetDestResource: No printer-uri-supported found."); + } - if (resource) - *resource = '\0'; + if (!uri) + { + DEBUG_puts("1_cupsGetDestResource: No printer-uri-supported or device-uri found."); - _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0); + if (resource) + *resource = '\0'; - return (NULL); - } + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0); + + return (NULL); } - else + else if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), hostname, sizeof(hostname), &port, resource, (int)resourcesize) < HTTP_URI_STATUS_OK) { - DEBUG_printf(("1_cupsGetDestResource: printer-uri-supported=\"%s\"", uri)); - - if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), - userpass, sizeof(userpass), hostname, sizeof(hostname), - &port, resource, (int)resourcesize) < HTTP_URI_STATUS_OK) - { - _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad printer-uri."), 1); + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad URI."), 1); - return (NULL); - } + return (NULL); } DEBUG_printf(("1_cupsGetDestResource: resource=\"%s\"", resource)); @@ -1271,6 +1286,12 @@ cupsGetDestWithURI(const char *name, /* I - Desired printer name or @code NULL@ name = resource + 10; info = temp; } + else if (!strncmp(resource, "/ipp/print/", 11)) + { + snprintf(temp, sizeof(temp), "%s @ %s", resource + 11, hostname); + name = resource + 11; + info = temp; + } else { name = hostname; @@ -1631,16 +1652,6 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ cups_dest_t **dests) /* O - Destinations */ { _cups_getdata_t data; /* Enumeration data */ - cups_dest_t *dest; /* Current destination */ - const char *home; /* HOME environment variable */ - char filename[1024]; /* Local ~/.cups/lpoptions file */ - const char *defprinter; /* Default printer */ - char name[1024], /* Copy of printer name */ - *instance, /* Pointer to instance name */ - *user_default; /* User default printer */ - int num_reals; /* Number of real queues */ - cups_dest_t *reals; /* Real queues */ - _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ DEBUG_printf(("cupsGetDests2(http=%p, dests=%p)", (void *)http, (void *)dests)); @@ -1697,107 +1708,6 @@ cupsGetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ } /* - * Make a copy of the "real" queues for a later sanity check... - */ - - if (data.num_dests > 0) - { - num_reals = data.num_dests; - reals = calloc((size_t)num_reals, sizeof(cups_dest_t)); - - if (reals) - memcpy(reals, data.dests, (size_t)num_reals * sizeof(cups_dest_t)); - else - num_reals = 0; - } - else - { - num_reals = 0; - reals = NULL; - } - - /* - * Grab the default destination... - */ - - if ((user_default = _cupsUserDefault(name, sizeof(name))) != NULL) - defprinter = name; - else if ((defprinter = cupsGetDefault2(http)) != NULL) - { - strlcpy(name, defprinter, sizeof(name)); - defprinter = name; - } - - if (defprinter) - { - /* - * Separate printer and instance name... - */ - - if ((instance = strchr(name, '/')) != NULL) - *instance++ = '\0'; - - /* - * Lookup the printer and instance and make it the default... - */ - - if ((dest = cupsGetDest(name, instance, data.num_dests, data.dests)) != NULL) - dest->is_default = 1; - } - else - instance = NULL; - - /* - * Load the /etc/cups/lpoptions and ~/.cups/lpoptions files... - */ - - snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot); - data.num_dests = cups_get_dests(filename, NULL, NULL, user_default != NULL, data.num_dests, &data.dests); - - if ((home = getenv("HOME")) != NULL) - { - snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home); - - data.num_dests = cups_get_dests(filename, NULL, NULL, user_default != NULL, data.num_dests, &data.dests); - } - - /* - * Validate the current default destination - this prevents old - * Default lines in /etc/cups/lpoptions and ~/.cups/lpoptions from - * pointing to a non-existent printer or class... - */ - - if (num_reals) - { - /* - * See if we have a default printer... - */ - - if ((dest = cupsGetDest(NULL, NULL, data.num_dests, data.dests)) != NULL) - { - /* - * Have a default; see if it is real... - */ - - if (!cupsGetDest(dest->name, NULL, num_reals, reals)) - { - /* - * Remove the non-real printer from the list, since we don't want jobs - * going to an unexpected printer... (<rdar://problem/14216472>) - */ - - data.num_dests = cupsRemoveDest(dest->name, dest->instance, data.num_dests, &data.dests); - } - } - - /* - * Free memory... - */ - - free(reals); - } - - /* * Return the number of destinations... */ @@ -1883,6 +1793,9 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home); dest_name = cups_get_default(filename, defname, sizeof(defname), &instance); + + if (dest_name) + set_as_default = 2; } if (!dest_name) @@ -1893,6 +1806,9 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot); dest_name = cups_get_default(filename, defname, sizeof(defname), &instance); + + if (dest_name) + set_as_default = 3; } if (!dest_name) @@ -1901,7 +1817,8 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT * No locally-set default destination, ask the server... */ - op = IPP_OP_CUPS_GET_DEFAULT; + op = IPP_OP_CUPS_GET_DEFAULT; + set_as_default = 4; DEBUG_puts("1cupsGetNamedDest: Asking server for default printer..."); } @@ -1932,7 +1849,36 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT dest = data.dest; } else + { + switch (set_as_default) + { + default : + break; + + case 1 : /* Set from env vars */ + if (getenv("LPDEST")) + _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, _("LPDEST environment variable names default destination that does not exist."), 1); + else if (getenv("PRINTER")) + _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, _("PRINTER environment variable names default destination that does not exist."), 1); + else + _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, _("No default destination."), 1); + break; + + case 2 : /* Set from ~/.cups/lpoptions */ + _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, _("~/.cups/lpoptions file names default destination that does not exist."), 1); + break; + + case 3 : /* Set from /etc/cups/lpoptions */ + _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, _("/etc/cups/lpoptions file names default destination that does not exist."), 1); + break; + + case 4 : /* Set from server */ + _cupsSetError(IPP_STATUS_ERROR_NOT_FOUND, _("No default destination."), 1); + break; + } + return (NULL); + } } DEBUG_printf(("1cupsGetNamedDest: Got dest=%p", (void *)dest)); @@ -1948,13 +1894,13 @@ cupsGetNamedDest(http_t *http, /* I - Connection to server or @code CUPS_HTT */ snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot); - cups_get_dests(filename, dest_name, instance, 1, 1, &dest); + cups_get_dests(filename, dest_name, instance, 0, 1, 1, &dest); if (home) { snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home); - cups_get_dests(filename, dest_name, instance, 1, 1, &dest); + cups_get_dests(filename, dest_name, instance, 0, 1, 1, &dest); } /* @@ -2130,12 +2076,6 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ if (getuid()) { /* - * Merge in server defaults... - */ - - num_temps = cups_get_dests(filename, NULL, NULL, 0, num_temps, &temps); - - /* * Point to user defaults... */ @@ -2195,8 +2135,7 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ else wrote = 0; - if ((temp = cupsGetDest(dest->name, dest->instance, num_temps, temps)) == NULL) - temp = cupsGetDest(dest->name, NULL, num_temps, temps); + temp = cupsGetDest(dest->name, NULL, num_temps, temps); for (j = dest->num_options, option = dest->options; j > 0; j --, option ++) { @@ -2204,19 +2143,14 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ * See if this option is a printer attribute; if so, skip it... */ - if ((match = _ippFindOption(option->name)) != NULL && - match->group_tag == IPP_TAG_PRINTER) + if ((match = _ippFindOption(option->name)) != NULL && match->group_tag == IPP_TAG_PRINTER) continue; /* - * See if the server/global options match these; if so, don't - * write 'em. + * See if the server options match these; if so, don't write 'em. */ - if (temp && - (val = cupsGetOption(option->name, temp->num_options, - temp->options)) != NULL && - !_cups_strcasecmp(val, option->value)) + if (temp && (val = cupsGetOption(option->name, temp->num_options, temp->options)) != NULL && !_cups_strcasecmp(val, option->value)) continue; /* @@ -2233,10 +2167,7 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ if (option->value[0]) { - if (strchr(option->value, ' ') || - strchr(option->value, '\\') || - strchr(option->value, '\"') || - strchr(option->value, '\'')) + if (strchr(option->value, ' ') || strchr(option->value, '\\') || strchr(option->value, '\"') || strchr(option->value, '\'')) { /* * Quote the value... @@ -2287,9 +2218,7 @@ cupsSetDests2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_ if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) != NULL) { - CFStringRef name = CFStringCreateWithCString(kCFAllocatorDefault, - dest->name, - kCFStringEncodingUTF8); + CFStringRef name = CFStringCreateWithCString(kCFAllocatorDefault, dest->name, kCFStringEncodingUTF8); /* Default printer name */ if (name) @@ -2720,22 +2649,7 @@ cups_dnssd_browse_cb( * This object is new on the network. */ - if (flags & AVAHI_LOOKUP_RESULT_LOCAL) - { - /* - * This comes from the local machine so ignore it. - */ - - DEBUG_printf(("cups_dnssd_browse_cb: Ignoring local service \"%s\".", name)); - } - else - { - /* - * Create a device entry for it if it doesn't yet exist. - */ - - cups_dnssd_get_device(data, name, type, domain); - } + cups_dnssd_get_device(data, name, type, domain); break; case AVAHI_BROWSER_REMOVE : @@ -2956,66 +2870,6 @@ cups_dnssd_get_device( } -# ifdef HAVE_DNSSD -/* - * 'cups_dnssd_local_cb()' - Browse for local printers. - */ - -static void -cups_dnssd_local_cb( - DNSServiceRef sdRef, /* I - Service reference */ - DNSServiceFlags flags, /* I - Option flags */ - uint32_t interfaceIndex, /* I - Interface number */ - DNSServiceErrorType errorCode, /* I - Error, if any */ - const char *serviceName, /* I - Name of service/device */ - const char *regtype, /* I - Type of service */ - const char *replyDomain, /* I - Service domain */ - void *context) /* I - Devices array */ -{ - _cups_dnssd_data_t *data = (_cups_dnssd_data_t *)context; - /* Enumeration data */ - _cups_dnssd_device_t *device; /* Device */ - - - DEBUG_printf(("5cups_dnssd_local_cb(sdRef=%p, flags=%x, interfaceIndex=%d, errorCode=%d, serviceName=\"%s\", regtype=\"%s\", replyDomain=\"%s\", context=%p)", (void *)sdRef, flags, interfaceIndex, errorCode, serviceName, regtype, replyDomain, context)); - - /* - * Only process "add" data... - */ - - if (errorCode != kDNSServiceErr_NoError || !(flags & kDNSServiceFlagsAdd)) - return; - - /* - * Get the device... - */ - - device = cups_dnssd_get_device(data, serviceName, regtype, replyDomain); - - /* - * Hide locally-registered devices... - */ - - DEBUG_printf(("6cups_dnssd_local_cb: Hiding local printer '%s'.", - serviceName)); - - if (device->ref) - { - DNSServiceRefDeallocate(device->ref); - device->ref = 0; - } - - if (device->state == _CUPS_DNSSD_ACTIVE) - { - DEBUG_printf(("6cups_dnssd_local_cb: Remove callback for \"%s\".", device->dest.name)); - (*data->cb)(data->user_data, CUPS_DEST_FLAGS_REMOVED, &device->dest); - } - - device->state = _CUPS_DNSSD_LOCAL; -} -# endif /* HAVE_DNSSD */ - - # ifdef HAVE_AVAHI /* * 'cups_dnssd_poll_cb()' - Wait for input on the specified file descriptors. @@ -3065,9 +2919,9 @@ cups_dnssd_poll_cb( * 'cups_dnssd_query_cb()' - Process query data. */ -# ifdef HAVE_DNSSD static void cups_dnssd_query_cb( +# ifdef HAVE_DNSSD DNSServiceRef sdRef, /* I - Service reference */ DNSServiceFlags flags, /* I - Data flags */ uint32_t interfaceIndex, /* I - Interface */ @@ -3078,11 +2932,7 @@ cups_dnssd_query_cb( uint16_t rdlen, /* I - Length of record data */ const void *rdata, /* I - Record data */ uint32_t ttl, /* I - Time-to-live */ - void *context) /* I - Enumeration data */ -{ # else /* HAVE_AVAHI */ -static void -cups_dnssd_query_cb( AvahiRecordBrowser *browser, /* I - Record browser */ AvahiIfIndex interfaceIndex, /* I - Interface index (unused) */ @@ -3094,13 +2944,13 @@ cups_dnssd_query_cb( const void *rdata, /* I - TXT record */ size_t rdlen, /* I - Length of TXT record */ AvahiLookupResultFlags flags, /* I - Flags */ - void *context) /* I - Enumeration data */ +# endif /* HAVE_DNSSD */ + void *context) /* I - Enumeration data */ { -# ifdef DEBUG +# if defined(DEBUG) && defined(HAVE_AVAHI) AvahiClient *client = avahi_record_browser_get_client(browser); /* Client information */ -# endif /* DEBUG */ -# endif /* HAVE_DNSSD */ +# endif /* DEBUG && HAVE_AVAHI */ _cups_dnssd_data_t *data = (_cups_dnssd_data_t *)context; /* Enumeration data */ char serviceName[256],/* Service name */ @@ -3543,29 +3393,26 @@ cups_enum_dests( cups_dest_cb_t cb, /* I - Callback function */ void *user_data) /* I - User data */ { - int i, /* Looping var */ + int i, j, /* Looping vars */ num_dests; /* Number of destinations */ cups_dest_t *dests = NULL, /* Destinations */ - *dest; /* Current destination */ - const char *defprinter; /* Default printer */ - char name[1024], /* Copy of printer name */ - *instance, /* Pointer to instance name */ - *user_default; /* User default printer */ + *dest, /* Current destination */ + *user_dest; /* User destination */ + cups_option_t *option; /* Current option */ + char *user_default; /* User default printer */ #if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) int count, /* Number of queries started */ completed, /* Number of completed queries */ remaining; /* Remainder of timeout */ struct timeval curtime; /* Current time */ - _cups_dnssd_data_t data; /* Data for callback */ + _cups_dnssd_data_t data; /* Data for callback */ _cups_dnssd_device_t *device; /* Current device */ # ifdef HAVE_DNSSD int nfds, /* Number of files responded */ main_fd; /* File descriptor for lookups */ - DNSServiceRef ipp_ref = NULL, /* IPP browser */ - local_ipp_ref = NULL; /* Local IPP browser */ + DNSServiceRef ipp_ref = NULL; /* IPP browser */ # ifdef HAVE_SSL - DNSServiceRef ipps_ref = NULL, /* IPPS browser */ - local_ipps_ref = NULL; /* Local IPPS browser */ + DNSServiceRef ipps_ref = NULL; /* IPPS browser */ # endif /* HAVE_SSL */ # ifdef HAVE_POLL struct pollfd pfd; /* Polling data */ @@ -3580,7 +3427,12 @@ cups_enum_dests( AvahiServiceBrowser *ipps_ref = NULL; /* IPPS browser */ # endif /* HAVE_SSL */ # endif /* HAVE_DNSSD */ +#else + _cups_getdata_t data; /* Data for callback */ #endif /* HAVE_DNSSD || HAVE_AVAHI */ + const char *home; /* HOME environment variable */ + char filename[1024]; /* Local lpoptions file */ + _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ DEBUG_printf(("cups_enum_dests(flags=%x, msec=%d, cancel=%p, type=%x, mask=%x, cb=%p, user_data=%p)", flags, msec, (void *)cancel, type, mask, (void *)cb, (void *)user_data)); @@ -3598,12 +3450,47 @@ cups_enum_dests( } /* - * Get ready to enumerate... + * Load the /etc/cups/lpoptions and ~/.cups/lpoptions files... */ -#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) memset(&data, 0, sizeof(data)); + if ((user_default = _cupsUserDefault(data.def_name, sizeof(data.def_name))) == NULL) + { + const char *defprinter = cupsGetDefault2(http); + /* Server default, if any */ + + if (defprinter) + strlcpy(data.def_name, defprinter, sizeof(data.def_name)); + } + + if (data.def_name[0]) + { + /* + * Separate printer and instance name... + */ + + if ((data.def_instance = strchr(data.def_name, '/')) != NULL) + *data.def_instance++ = '\0'; + } + + DEBUG_printf(("1cups_enum_dests: def_name=\"%s\", def_instance=\"%s\"", data.def_name, data.def_instance)); + + snprintf(filename, sizeof(filename), "%s/lpoptions", cg->cups_serverroot); + data.num_dests = cups_get_dests(filename, NULL, NULL, 1, user_default != NULL, data.num_dests, &data.dests); + + if ((home = getenv("HOME")) != NULL) + { + snprintf(filename, sizeof(filename), "%s/.cups/lpoptions", home); + + data.num_dests = cups_get_dests(filename, NULL, NULL, 1, user_default != NULL, data.num_dests, &data.dests); + } + + /* + * Get ready to enumerate... + */ + +#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) data.type = type; data.mask = mask; data.cb = cb; @@ -3619,29 +3506,17 @@ cups_enum_dests( num_dests = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, &dests, type, mask); - if ((user_default = _cupsUserDefault(name, sizeof(name))) != NULL) - defprinter = name; - else if ((defprinter = cupsGetDefault2(http)) != NULL) - { - strlcpy(name, defprinter, sizeof(name)); - defprinter = name; - } - - if (defprinter) + if (data.def_name[0]) { /* - * Separate printer and instance name... + * Lookup the named default printer and instance and make it the default... */ - if ((instance = strchr(name, '/')) != NULL) - *instance++ = '\0'; - - /* - * Lookup the printer and instance and make it the default... - */ - - if ((dest = cupsGetDest(name, instance, num_dests, dests)) != NULL) + if ((dest = cupsGetDest(data.def_name, data.def_instance, num_dests, dests)) != NULL) + { + DEBUG_printf(("1cups_enum_dests: Setting is_default on \"%s/%s\".", dest->name, dest->instance)); dest->is_default = 1; + } } for (i = num_dests, dest = dests; @@ -3652,6 +3527,16 @@ cups_enum_dests( const char *device_uri; /* Device URI */ #endif /* HAVE_DNSSD || HAVE_AVAHI */ + if ((user_dest = cupsGetDest(dest->name, dest->instance, data.num_dests, data.dests)) != NULL) + { + /* + * Apply user defaults to this destination... + */ + + for (j = user_dest->num_options, option = user_dest->options; j > 0; j --, option ++) + dest->num_options = cupsAddOption(option->name, option->value, dest->num_options, &dest->options); + } + if (!(*cb)(user_data, i > 1 ? CUPS_DEST_FLAGS_MORE : CUPS_DEST_FLAGS_NONE, dest)) break; @@ -3714,6 +3599,9 @@ cups_enum_dests( if (DNSServiceCreateConnection(&data.main_ref) != kDNSServiceErr_NoError) { DEBUG_puts("1cups_enum_dests: Unable to create service browser, returning 0."); + + cupsFreeDests(data.num_dests, data.dests); + return (0); } @@ -3724,14 +3612,9 @@ cups_enum_dests( { DEBUG_puts("1cups_enum_dests: Unable to create IPP browser, returning 0."); DNSServiceRefDeallocate(data.main_ref); - return (0); - } - local_ipp_ref = data.main_ref; - if (DNSServiceBrowse(&local_ipp_ref, kDNSServiceFlagsShareConnection, kDNSServiceInterfaceIndexLocalOnly, "_ipp._tcp", NULL, (DNSServiceBrowseReply)cups_dnssd_local_cb, &data) != kDNSServiceErr_NoError) - { - DEBUG_puts("1cups_enum_dests: Unable to create local IPP browser, returning 0."); - DNSServiceRefDeallocate(data.main_ref); + cupsFreeDests(data.num_dests, data.dests); + return (0); } @@ -3741,14 +3624,9 @@ cups_enum_dests( { DEBUG_puts("1cups_enum_dests: Unable to create IPPS browser, returning 0."); DNSServiceRefDeallocate(data.main_ref); - return (0); - } - local_ipps_ref = data.main_ref; - if (DNSServiceBrowse(&local_ipps_ref, kDNSServiceFlagsShareConnection, kDNSServiceInterfaceIndexLocalOnly, "_ipps._tcp", NULL, (DNSServiceBrowseReply)cups_dnssd_local_cb, &data) != kDNSServiceErr_NoError) - { - DEBUG_puts("1cups_enum_dests: Unable to create local IPPS browser, returning 0."); - DNSServiceRefDeallocate(data.main_ref); + cupsFreeDests(data.num_dests, data.dests); + return (0); } # endif /* HAVE_SSL */ @@ -3757,6 +3635,9 @@ cups_enum_dests( if ((data.simple_poll = avahi_simple_poll_new()) == NULL) { DEBUG_puts("1cups_enum_dests: Unable to create Avahi poll, returning 0."); + + cupsFreeDests(data.num_dests, data.dests); + return (0); } @@ -3769,6 +3650,9 @@ cups_enum_dests( { DEBUG_puts("1cups_enum_dests: Unable to create Avahi client, returning 0."); avahi_simple_poll_free(data.simple_poll); + + cupsFreeDests(data.num_dests, data.dests); + return (0); } @@ -3779,6 +3663,9 @@ cups_enum_dests( avahi_client_free(data.client); avahi_simple_poll_free(data.simple_poll); + + cupsFreeDests(data.num_dests, data.dests); + return (0); } @@ -3791,6 +3678,9 @@ cups_enum_dests( avahi_service_browser_free(ipp_ref); avahi_client_free(data.client); avahi_simple_poll_free(data.simple_poll); + + cupsFreeDests(data.num_dests, data.dests); + return (0); } # endif /* HAVE_SSL */ @@ -3903,8 +3793,26 @@ cups_enum_dests( if ((device->type & mask) == type) { + dest = &device->dest; + + if ((user_dest = cupsGetDest(dest->name, dest->instance, data.num_dests, data.dests)) != NULL) + { + /* + * Apply user defaults to this destination... + */ + + for (j = user_dest->num_options, option = user_dest->options; j > 0; j --, option ++) + dest->num_options = cupsAddOption(option->name, option->value, dest->num_options, &dest->options); + } + + if (!strcasecmp(dest->name, data.def_name) && !data.def_instance) + { + DEBUG_printf(("1cups_enum_dests: Setting is_default on discovered \"%s\".", dest->name)); + dest->is_default = 1; + } + DEBUG_printf(("1cups_enum_dests: Add callback for \"%s\".", device->dest.name)); - if (!(*cb)(user_data, CUPS_DEST_FLAGS_NONE, &device->dest)) + if (!(*cb)(user_data, CUPS_DEST_FLAGS_NONE, dest)) { remaining = -1; break; @@ -3935,20 +3843,18 @@ cups_enum_dests( enum_finished: + cupsFreeDests(data.num_dests, data.dests); + #if defined(HAVE_DNSSD) || defined(HAVE_AVAHI) cupsArrayDelete(data.devices); # ifdef HAVE_DNSSD if (ipp_ref) DNSServiceRefDeallocate(ipp_ref); - if (local_ipp_ref) - DNSServiceRefDeallocate(local_ipp_ref); # ifdef HAVE_SSL if (ipps_ref) DNSServiceRefDeallocate(ipps_ref); - if (local_ipps_ref) - DNSServiceRefDeallocate(local_ipps_ref); # endif /* HAVE_SSL */ if (data.main_ref) @@ -4166,6 +4072,7 @@ cups_get_dests( const char *filename, /* I - File to read from */ const char *match_name, /* I - Destination name we want */ const char *match_inst, /* I - Instance name we want */ + int load_all, /* I - Load all saved destinations? */ int user_default_set, /* I - User default printer set? */ int num_dests, /* I - Number of destinations */ cups_dest_t **dests) /* IO - Destinations */ @@ -4180,7 +4087,7 @@ cups_get_dests( int linenum; /* Current line number */ - DEBUG_printf(("7cups_get_dests(filename=\"%s\", match_name=\"%s\", match_inst=\"%s\", user_default_set=%d, num_dests=%d, dests=%p)", filename, match_name, match_inst, user_default_set, num_dests, (void *)dests)); + DEBUG_printf(("7cups_get_dests(filename=\"%s\", match_name=\"%s\", match_inst=\"%s\", load_all=%d, user_default_set=%d, num_dests=%d, dests=%p)", filename, match_name, match_inst, load_all, user_default_set, num_dests, (void *)dests)); /* * Try to open the file... @@ -4248,8 +4155,7 @@ cups_get_dests( instance)); /* - * See if the primary instance of the destination exists; if not, - * ignore this entry and move on... + * Match and/or ignore missing destinations... */ if (match_name) @@ -4262,7 +4168,7 @@ cups_get_dests( dest = *dests; } - else if (cupsGetDest(name, NULL, num_dests, *dests) == NULL) + else if (!load_all && cupsGetDest(name, NULL, num_dests, *dests) == NULL) { DEBUG_puts("9cups_get_dests: Not found!"); continue; @@ -4290,8 +4196,7 @@ cups_get_dests( * Add options until we hit the end of the line... */ - dest->num_options = cupsParseOptions(lineptr, dest->num_options, - &(dest->options)); + dest->num_options = cupsParseOptions(lineptr, dest->num_options, &(dest->options)); /* * If we found what we were looking for, stop now... diff --git a/cups/hash.c b/cups/hash.c index a313725..621d119 100644 --- a/cups/hash.c +++ b/cups/hash.c @@ -190,6 +190,13 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */ unsigned char temp[64]; /* Temporary hash buffer */ size_t tempsize = 0; /* Truncate to this size? */ + +# ifdef HAVE_GNUTLS_FIPS140_SET_MODE + unsigned oldmode = gnutls_fips140_mode_enabled(); + + gnutls_fips140_set_mode(GNUTLS_FIPS140_LAX, GNUTLS_FIPS140_SET_MODE_THREAD); +# endif /* HAVE_GNUTLS_FIPS140_SET_MODE */ + if (!strcmp(algorithm, "md5")) alg = GNUTLS_DIG_MD5; else if (!strcmp(algorithm, "sha")) @@ -227,6 +234,10 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */ gnutls_hash_fast(alg, data, datalen, temp); memcpy(hash, temp, tempsize); +# ifdef HAVE_GNUTLS_FIPS140_SET_MODE + gnutls_fips140_set_mode(oldmode, GNUTLS_FIPS140_SET_MODE_THREAD); +# endif /* HAVE_GNUTLS_FIPS140_SET_MODE */ + return ((ssize_t)tempsize); } @@ -235,9 +246,17 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */ gnutls_hash_fast(alg, data, datalen, hash); +# ifdef HAVE_GNUTLS_FIPS140_SET_MODE + gnutls_fips140_set_mode(oldmode, GNUTLS_FIPS140_SET_MODE_THREAD); +# endif /* HAVE_GNUTLS_FIPS140_SET_MODE */ + return ((ssize_t)gnutls_hash_get_len(alg)); } +# ifdef HAVE_GNUTLS_FIPS140_SET_MODE + gnutls_fips140_set_mode(oldmode, GNUTLS_FIPS140_SET_MODE_THREAD); +# endif /* HAVE_GNUTLS_FIPS140_SET_MODE */ + #else /* * No hash support beyond MD5 without CommonCrypto or GNU TLS... @@ -271,6 +290,10 @@ cupsHashData(const char *algorithm, /* I - Algorithm name */ too_small: +#ifdef HAVE_GNUTLS_FIPS140_SET_MODE + gnutls_fips140_set_mode(oldmode, GNUTLS_FIPS140_SET_MODE_THREAD); +#endif /* HAVE_GNUTLS_FIPS140_SET_MODE */ + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Hash buffer too small."), 1); return (-1); } diff --git a/cups/http.c b/cups/http.c index 5c14ef6..3fadb5a 100644 --- a/cups/http.c +++ b/cups/http.c @@ -1905,7 +1905,7 @@ httpPrintf(http_t *http, /* I - HTTP connection */ ...) /* I - Additional args as needed */ { ssize_t bytes; /* Number of bytes to write */ - char buf[16384]; /* Buffer for formatted string */ + char buf[65536]; /* Buffer for formatted string */ va_list ap; /* Variable argument pointer */ @@ -1917,7 +1917,12 @@ httpPrintf(http_t *http, /* I - HTTP connection */ DEBUG_printf(("3httpPrintf: (" CUPS_LLFMT " bytes) %s", CUPS_LLCAST bytes, buf)); - if (http->data_encoding == HTTP_ENCODING_FIELDS) + if (bytes > (ssize_t)(sizeof(buf) - 1)) + { + http->error = ENOMEM; + return (-1); + } + else if (http->data_encoding == HTTP_ENCODING_FIELDS) return ((int)httpWrite2(http, buf, (size_t)bytes)); else { @@ -3044,8 +3044,13 @@ ippReadIO(void *src, /* I - Data source */ DEBUG_printf(("2ippReadIO: name length=%d", n)); - if (n == 0 && tag != IPP_TAG_MEMBERNAME && - tag != IPP_TAG_END_COLLECTION) + if (n && parent) + { + _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Invalid named IPP attribute in collection."), 1); + DEBUG_puts("1ippReadIO: bad attribute name in collection."); + return (IPP_STATE_ERROR); + } + else if (n == 0 && tag != IPP_TAG_MEMBERNAME && tag != IPP_TAG_END_COLLECTION) { /* * More values for current attribute... @@ -4548,9 +4553,7 @@ ippSetValueTag( break; case IPP_TAG_NAME : - if (temp_tag != IPP_TAG_KEYWORD && temp_tag != IPP_TAG_URI && - temp_tag != IPP_TAG_URISCHEME && temp_tag != IPP_TAG_LANGUAGE && - temp_tag != IPP_TAG_MIMETYPE) + if (temp_tag != IPP_TAG_KEYWORD) return (0); (*attr)->value_tag = (ipp_tag_t)(IPP_TAG_NAME | ((*attr)->value_tag & IPP_TAG_CUPS_CONST)); @@ -4558,10 +4561,7 @@ ippSetValueTag( case IPP_TAG_NAMELANG : case IPP_TAG_TEXTLANG : - if (value_tag == IPP_TAG_NAMELANG && - (temp_tag != IPP_TAG_NAME && temp_tag != IPP_TAG_KEYWORD && - temp_tag != IPP_TAG_URI && temp_tag != IPP_TAG_URISCHEME && - temp_tag != IPP_TAG_LANGUAGE && temp_tag != IPP_TAG_MIMETYPE)) + if (value_tag == IPP_TAG_NAMELANG && (temp_tag != IPP_TAG_NAME && temp_tag != IPP_TAG_KEYWORD)) return (0); if (value_tag == IPP_TAG_TEXTLANG && temp_tag != IPP_TAG_TEXT) diff --git a/cups/ppd-emit.c b/cups/ppd-emit.c index 4b153ac..392b013 100644 --- a/cups/ppd-emit.c +++ b/cups/ppd-emit.c @@ -662,6 +662,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ { switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_CURVE : case PPD_CUSTOM_INVCURVE : case PPD_CUSTOM_POINTS : @@ -708,6 +711,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ { switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_CURVE : case PPD_CUSTOM_INVCURVE : case PPD_CUSTOM_POINTS : @@ -803,6 +809,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ { switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_CURVE : case PPD_CUSTOM_INVCURVE : case PPD_CUSTOM_POINTS : @@ -1005,6 +1014,9 @@ ppdEmitString(ppd_file_t *ppd, /* I - PPD file record */ { switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_CURVE : case PPD_CUSTOM_INVCURVE : case PPD_CUSTOM_POINTS : diff --git a/cups/ppd-mark.c b/cups/ppd-mark.c index 2d106ba..4131ca6 100644 --- a/cups/ppd-mark.c +++ b/cups/ppd-mark.c @@ -855,6 +855,9 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */ switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_CURVE : case PPD_CUSTOM_INVCURVE : case PPD_CUSTOM_REAL : @@ -932,6 +935,9 @@ ppd_mark_option(ppd_file_t *ppd, /* I - PPD file */ switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + break; + case PPD_CUSTOM_CURVE : case PPD_CUSTOM_INVCURVE : case PPD_CUSTOM_REAL : @@ -716,6 +716,8 @@ _ppdOpen( strncmp(ll, keyword, ll_len))) { DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword)); + free(string); + string = NULL; continue; } else if (localization == _PPD_LOCALIZATION_ICC_PROFILES) @@ -735,6 +737,8 @@ _ppdOpen( if (i >= (int)(sizeof(color_keywords) / sizeof(color_keywords[0]))) { DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword)); + free(string); + string = NULL; continue; } } @@ -999,6 +1003,13 @@ _ppdOpen( goto error; } + if (cparam->type != PPD_CUSTOM_UNKNOWN) + { + pg->ppd_status = PPD_BAD_CUSTOM_PARAM; + + goto error; + } + /* * Get the parameter data... */ @@ -1182,6 +1193,24 @@ _ppdOpen( else if (!strcmp(string, "Plus90")) ppd->landscape = 90; } + else if (!strcmp(keyword, "Emulators") && string && ppd->num_emulations == 0) + { + /* + * Issue #5562: Samsung printer drivers incorrectly use Emulators keyword + * to configure themselves + * + * The Emulators keyword was loaded but never used by anything in CUPS, + * and has no valid purpose in CUPS. The old code was removed due to a + * memory leak (Issue #5475), so the following (new) code supports a single + * name for the Emulators keyword, allowing these drivers to work until we + * remove PPD and driver support entirely in a future version of CUPS. + */ + + ppd->num_emulations = 1; + ppd->emulations = calloc(1, sizeof(ppd_emul_t)); + + strlcpy(ppd->emulations[0].name, string, sizeof(ppd->emulations[0].name)); + } else if (!strcmp(keyword, "JobPatchFile")) { /* @@ -1854,6 +1883,13 @@ _ppdOpen( } else if (!strcmp(keyword, "PaperDimension")) { + if (!_cups_strcasecmp(name, "custom") || !_cups_strncasecmp(name, "custom.", 7)) + { + pg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD; + + goto error; + } + if ((size = ppdPageSize(ppd, name)) == NULL) size = ppd_add_size(ppd, name); @@ -1876,6 +1912,13 @@ _ppdOpen( } else if (!strcmp(keyword, "ImageableArea")) { + if (!_cups_strcasecmp(name, "custom") || !_cups_strncasecmp(name, "custom.", 7)) + { + pg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD; + + goto error; + } + if ((size = ppdPageSize(ppd, name)) == NULL) size = ppd_add_size(ppd, name); @@ -1905,6 +1948,13 @@ _ppdOpen( { DEBUG_printf(("2_ppdOpen: group=%p, subgroup=%p", group, subgroup)); + if (!_cups_strcasecmp(name, "custom") || !_cups_strncasecmp(name, "custom.", 7)) + { + pg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD; + + goto error; + } + if (!strcmp(keyword, "PageSize")) { /* @@ -2629,6 +2679,7 @@ ppd_get_cparam(ppd_coption_t *opt, /* I - PPD file */ if ((cparam = calloc(1, sizeof(ppd_cparam_t))) == NULL) return (NULL); + cparam->type = PPD_CUSTOM_UNKNOWN; strlcpy(cparam->name, param, sizeof(cparam->name)); strlcpy(cparam->text, text[0] ? text : param, sizeof(cparam->text)); @@ -235,6 +235,7 @@ typedef struct ppd_profile_s /**** sRGB Color Profiles ****/ /**** New in CUPS 1.2/macOS 10.5 ****/ typedef enum ppd_cptype_e /**** Custom Parameter Type @since CUPS 1.2/macOS 10.5@ ****/ { + PPD_CUSTOM_UNKNOWN = -1, /* Unknown type (error) */ PPD_CUSTOM_CURVE, /* Curve value for f(x) = x^value */ PPD_CUSTOM_INT, /* Integer number value */ PPD_CUSTOM_INVCURVE, /* Curve value for f(x) = x^(1/value) */ diff --git a/cups/snmp.c b/cups/snmp.c index 8437528..fc93961 100644 --- a/cups/snmp.c +++ b/cups/snmp.c @@ -1233,6 +1233,9 @@ asn1_get_integer( int value; /* Integer value */ + if (*buffer >= bufend) + return (0); + if (length > sizeof(int)) { (*buffer) += length; @@ -1259,6 +1262,9 @@ asn1_get_length(unsigned char **buffer, /* IO - Pointer in buffer */ unsigned length; /* Length */ + if (*buffer >= bufend) + return (0); + length = **buffer; (*buffer) ++; @@ -1301,6 +1307,9 @@ asn1_get_oid( int number; /* OID number */ + if (*buffer >= bufend) + return (0); + valend = *buffer + length; oidptr = oid; oidend = oid + oidsize - 1; @@ -1349,9 +1358,12 @@ asn1_get_packed( int value; /* Value */ + if (*buffer >= bufend) + return (0); + value = 0; - while ((**buffer & 128) && *buffer < bufend) + while (*buffer < bufend && (**buffer & 128)) { value = (value << 7) | (**buffer & 127); (*buffer) ++; @@ -1379,6 +1391,9 @@ asn1_get_string( char *string, /* I - String buffer */ size_t strsize) /* I - String buffer size */ { + if (*buffer >= bufend) + return (NULL); + if (length > (unsigned)(bufend - *buffer)) length = (unsigned)(bufend - *buffer); @@ -1421,6 +1436,9 @@ asn1_get_type(unsigned char **buffer, /* IO - Pointer in buffer */ int type; /* Type */ + if (*buffer >= bufend) + return (0); + type = **buffer; (*buffer) ++; diff --git a/cups/snprintf.c b/cups/snprintf.c index c5d8908..72b3fc8 100644 --- a/cups/snprintf.c +++ b/cups/snprintf.c @@ -1,8 +1,8 @@ /* * snprintf functions for CUPS. * - * Copyright 2007-2013 by Apple Inc. - * Copyright 1997-2007 by Easy Software Products. + * Copyright © 2007-2019 by Apple Inc. + * Copyright © 1997-2007 by Easy Software Products. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright @@ -177,7 +177,7 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */ break; sprintf(temp, tformat, va_arg(ap, double)); - templen = strlen(temp): + templen = strlen(temp); bytes += (int)templen; @@ -208,7 +208,7 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */ break; sprintf(temp, tformat, va_arg(ap, int)); - templen = strlen(temp): + templen = strlen(temp); bytes += (int)templen; @@ -232,7 +232,7 @@ _cups_vsnprintf(char *buffer, /* O - Output buffer */ break; sprintf(temp, tformat, va_arg(ap, void *)); - templen = strlen(temp): + templen = strlen(temp); bytes += (int)templen; diff --git a/cups/testdest.c b/cups/testdest.c index 9eab8d2..a65e099 100644 --- a/cups/testdest.c +++ b/cups/testdest.c @@ -1,15 +1,9 @@ /* * CUPS destination API test program for CUPS. * - * Copyright 2012-2018 by Apple Inc. + * Copyright © 2012-2018 by Apple Inc. * - * These coded instructions, statements, and computer programs are the - * property of Apple Inc. and are protected by Federal copyright - * law. Distribution and use rights are outlined in the file "LICENSE.txt" - * which should have been included with this file. If this file is - * missing or damaged, see the license at "http://www.cups.org/". - * - * This file is subject to the Apple OS-Developed Software exception. + * Licensed under Apache License v2.0. See the file "LICENSE" for more information. */ /* @@ -43,17 +37,31 @@ int /* O - Exit status */ main(int argc, /* I - Number of command-line arguments */ char *argv[]) /* I - Command-line arguments */ { + int i; /* Looping var */ http_t *http; /* Connection to destination */ cups_dest_t *dest = NULL; /* Destination */ cups_dinfo_t *dinfo; /* Destination info */ + unsigned dflags = CUPS_DEST_FLAGS_NONE; + /* Destination flags */ if (argc < 2) - usage(NULL); + return (0); - if (!strcmp(argv[1], "--enum")) + if (!strcmp(argv[1], "--get")) + { + cups_dest_t *dests; /* Destinations */ + int num_dests = cupsGetDests2(CUPS_HTTP_DEFAULT, &dests); + /* Number of destinations */ + + for (i = 0; i < num_dests; i ++) + enum_cb(NULL, 0, dests + i); + + cupsFreeDests(num_dests, dests); + return (0); + } + else if (!strcmp(argv[1], "--enum")) { - int i; /* Looping var */ cups_ptype_t type = 0, /* Printer type filter */ mask = 0; /* Printer type mask */ @@ -103,78 +111,91 @@ main(int argc, /* I - Number of command-line arguments */ return (0); } - else if (!strncmp(argv[1], "ipp://", 6) || !strncmp(argv[1], "ipps://", 7)) - dest = cupsGetDestWithURI(NULL, argv[1]); - else if (!strcmp(argv[1], "default")) + + i = 1; + if (!strcmp(argv[i], "--device")) + { + dflags = CUPS_DEST_FLAGS_DEVICE; + i ++; + } + + if (!strncmp(argv[i], "ipp://", 6) || !strncmp(argv[i], "ipps://", 7)) + dest = cupsGetDestWithURI(NULL, argv[i]); + else if (!strcmp(argv[i], "default")) { dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL); if (dest && dest->instance) printf("default is \"%s/%s\".\n", dest->name, dest->instance); - else + else if (dest) printf("default is \"%s\".\n", dest->name); + else + puts("no default destination."); } else - dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, argv[1], NULL); + dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, argv[i], NULL); if (!dest) { - printf("testdest: Unable to get destination \"%s\": %s\n", argv[1], cupsLastErrorString()); + printf("testdest: Unable to get destination \"%s\": %s\n", argv[i], cupsLastErrorString()); return (1); } - if ((http = cupsConnectDest(dest, CUPS_DEST_FLAGS_NONE, 30000, NULL, NULL, 0, NULL, NULL)) == NULL) + i ++; + + if ((http = cupsConnectDest(dest, dflags, 30000, NULL, NULL, 0, NULL, NULL)) == NULL) { - printf("testdest: Unable to connect to destination \"%s\": %s\n", argv[1], cupsLastErrorString()); + printf("testdest: Unable to connect to destination \"%s\": %s\n", dest->name, cupsLastErrorString()); return (1); } if ((dinfo = cupsCopyDestInfo(http, dest)) == NULL) { - printf("testdest: Unable to get information for destination \"%s\": %s\n", argv[1], cupsLastErrorString()); + printf("testdest: Unable to get information for destination \"%s\": %s\n", dest->name, cupsLastErrorString()); return (1); } - if (argc == 2 || (!strcmp(argv[2], "supported") && argc < 6)) + if (i == argc || !strcmp(argv[i], "supported")) { - if (argc > 3) - show_supported(http, dest, dinfo, argv[3], argv[4]); + i ++; + + if ((i + 1) < argc) + show_supported(http, dest, dinfo, argv[i], argv[i + 1]); else if (argc > 2) - show_supported(http, dest, dinfo, argv[3], NULL); + show_supported(http, dest, dinfo, argv[i], NULL); else show_supported(http, dest, dinfo, NULL, NULL); } - else if (!strcmp(argv[2], "conflicts") && argc > 3) + else if (!strcmp(argv[i], "conflicts") && (i + 1) < argc) { - int i, /* Looping var */ - num_options = 0;/* Number of options */ + int num_options = 0;/* Number of options */ cups_option_t *options = NULL;/* Options */ - for (i = 3; i < argc; i ++) + for (i ++; i < argc; i ++) num_options = cupsParseOptions(argv[i], num_options, &options); show_conflicts(http, dest, dinfo, num_options, options); } - else if (!strcmp(argv[2], "default") && argc == 4) + else if (!strcmp(argv[i], "default") && (i + 1) < argc) { - show_default(http, dest, dinfo, argv[3]); + show_default(http, dest, dinfo, argv[i + 1]); } - else if (!strcmp(argv[2], "localize") && argc < 6) + else if (!strcmp(argv[i], "localize")) { - if (argc > 3) - localize(http, dest, dinfo, argv[3], argv[4]); + i ++; + if ((i + 1) < argc) + localize(http, dest, dinfo, argv[i], argv[i + 1]); else if (argc > 2) - localize(http, dest, dinfo, argv[3], NULL); + localize(http, dest, dinfo, argv[i], NULL); else localize(http, dest, dinfo, NULL, NULL); } - else if (!strcmp(argv[2], "media")) + else if (!strcmp(argv[i], "media")) { - int i; /* Looping var */ const char *name = NULL; /* Media name, if any */ unsigned flags = CUPS_MEDIA_FLAGS_DEFAULT; /* Media selection flags */ - for (i = 3; i < argc; i ++) + for (i ++; i < argc; i ++) { if (!strcmp(argv[i], "borderless")) flags = CUPS_MEDIA_FLAGS_BORDERLESS; @@ -192,19 +213,19 @@ main(int argc, /* I - Number of command-line arguments */ show_media(http, dest, dinfo, flags, name); } - else if (!strcmp(argv[2], "print") && argc > 3) + else if (!strcmp(argv[i], "print") && (i + 1) < argc) { - int i, /* Looping var */ - num_options = 0;/* Number of options */ + int num_options = 0;/* Number of options */ cups_option_t *options = NULL;/* Options */ + const char *filename = argv[i + 1]; - for (i = 4; i < argc; i ++) + for (i += 2; i < argc; i ++) num_options = cupsParseOptions(argv[i], num_options, &options); - print_file(http, dest, dinfo, argv[3], num_options, options); + print_file(http, dest, dinfo, filename, num_options, options); } else - usage(argv[2]); + usage(argv[i]); return (0); } @@ -226,13 +247,15 @@ enum_cb(void *user_data, /* I - User data (unused) */ (void)flags; if (dest->instance) - printf("%s%s/%s:\n", (flags & CUPS_DEST_FLAGS_REMOVED) ? "REMOVE " : "", dest->name, dest->instance); + printf("%s%s/%s%s:\n", (flags & CUPS_DEST_FLAGS_REMOVED) ? "REMOVE " : "", dest->name, dest->instance, dest->is_default ? " (Default)" : ""); else - printf("%s%s:\n", (flags & CUPS_DEST_FLAGS_REMOVED) ? "REMOVE " : "", dest->name); + printf("%s%s%s:\n", (flags & CUPS_DEST_FLAGS_REMOVED) ? "REMOVE " : "", dest->name, dest->is_default ? " (Default)" : ""); for (i = 0; i < dest->num_options; i ++) printf(" %s=\"%s\"\n", dest->options[i].name, dest->options[i].value); + puts(""); + return (1); } @@ -740,9 +763,10 @@ usage(const char *arg) /* I - Argument for usage message */ printf("testdest: Unknown option \"%s\".\n", arg); puts("Usage:"); - puts(" ./testdest name [operation ...]"); - puts(" ./testdest ipp://... [operation ...]"); - puts(" ./testdest ipps://... [operation ...]"); + puts(" ./testdest [--device] name [operation ...]"); + puts(" ./testdest [--device] ipp://... [operation ...]"); + puts(" ./testdest [--device] ipps://... [operation ...]"); + puts(" ./testdest --get"); puts(" ./testdest --enum [grayscale] [color] [duplex] [staple] [small]\n" " [medium] [large]"); puts(""); diff --git a/cups/testipp.c b/cups/testipp.c index 2ef2496..a8d3662 100644 --- a/cups/testipp.c +++ b/cups/testipp.c @@ -1,7 +1,7 @@ /* * IPP test program for CUPS. * - * Copyright 2007-2017 by Apple Inc. + * Copyright 2007-2019 by Apple Inc. * Copyright 1997-2005 by Easy Software Products. * * These coded instructions, statements, and computer programs are the @@ -50,7 +50,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x01, 0x01, /* IPP version */ 0x00, 0x02, /* Print-Job operation */ 0x00, 0x00, 0x00, 0x01, - /* Request ID */ + /* Request ID */ IPP_TAG_OPERATION, @@ -80,7 +80,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */ IPP_TAG_JOB, /* job group tag */ IPP_TAG_BEGIN_COLLECTION, - /* begCollection tag */ + /* begCollection tag */ 0x00, 0x09, /* Name length + name */ 'm', 'e', 'd', 'i', 'a', '-', 'c', 'o', 'l', 0x00, 0x00, /* No value */ @@ -89,11 +89,11 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x00, 0x0a, /* Value length + value */ 'm', 'e', 'd', 'i', 'a', '-', 's', 'i', 'z', 'e', IPP_TAG_BEGIN_COLLECTION, - /* begCollection tag */ + /* begCollection tag */ 0x00, 0x00, /* Name length + name */ 0x00, 0x00, /* No value */ IPP_TAG_MEMBERNAME, - /* memberAttrName tag */ + /* memberAttrName tag */ 0x00, 0x00, /* No name */ 0x00, 0x0b, /* Value length + value */ 'x', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n', @@ -102,7 +102,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x00, 0x04, /* Value length + value */ 0x00, 0x00, 0x54, 0x56, IPP_TAG_MEMBERNAME, - /* memberAttrName tag */ + /* memberAttrName tag */ 0x00, 0x00, /* No name */ 0x00, 0x0b, /* Value length + value */ 'y', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n', @@ -111,7 +111,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x00, 0x04, /* Value length + value */ 0x00, 0x00, 0x6d, 0x24, IPP_TAG_END_COLLECTION, - /* endCollection tag */ + /* endCollection tag */ 0x00, 0x00, /* No name */ 0x00, 0x00, /* No value */ IPP_TAG_MEMBERNAME, /* memberAttrName tag */ @@ -132,12 +132,12 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x00, 0x05, /* Value length + value */ 'p', 'l', 'a', 'i', 'n', IPP_TAG_END_COLLECTION, - /* endCollection tag */ + /* endCollection tag */ 0x00, 0x00, /* No name */ 0x00, 0x00, /* No value */ IPP_TAG_BEGIN_COLLECTION, - /* begCollection tag */ + /* begCollection tag */ 0x00, 0x00, /* No name */ 0x00, 0x00, /* No value */ IPP_TAG_MEMBERNAME, /* memberAttrName tag */ @@ -145,11 +145,11 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x00, 0x0a, /* Value length + value */ 'm', 'e', 'd', 'i', 'a', '-', 's', 'i', 'z', 'e', IPP_TAG_BEGIN_COLLECTION, - /* begCollection tag */ + /* begCollection tag */ 0x00, 0x00, /* Name length + name */ 0x00, 0x00, /* No value */ IPP_TAG_MEMBERNAME, - /* memberAttrName tag */ + /* memberAttrName tag */ 0x00, 0x00, /* No name */ 0x00, 0x0b, /* Value length + value */ 'x', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n', @@ -158,7 +158,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x00, 0x04, /* Value length + value */ 0x00, 0x00, 0x52, 0x08, IPP_TAG_MEMBERNAME, - /* memberAttrName tag */ + /* memberAttrName tag */ 0x00, 0x00, /* No name */ 0x00, 0x0b, /* Value length + value */ 'y', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n', @@ -167,7 +167,7 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x00, 0x04, /* Value length + value */ 0x00, 0x00, 0x74, 0x04, IPP_TAG_END_COLLECTION, - /* endCollection tag */ + /* endCollection tag */ 0x00, 0x00, /* No name */ 0x00, 0x00, /* No value */ IPP_TAG_MEMBERNAME, /* memberAttrName tag */ @@ -188,7 +188,72 @@ static ipp_uchar_t collection[] = /* Collection buffer */ 0x00, 0x06, /* Value length + value */ 'g', 'l', 'o', 's', 's', 'y', IPP_TAG_END_COLLECTION, - /* endCollection tag */ + /* endCollection tag */ + 0x00, 0x00, /* No name */ + 0x00, 0x00, /* No value */ + + IPP_TAG_END /* end tag */ + }; +static ipp_uchar_t bad_collection[] = /* Collection buffer (bad encoding) */ + { + 0x01, 0x01, /* IPP version */ + 0x00, 0x02, /* Print-Job operation */ + 0x00, 0x00, 0x00, 0x01, + /* Request ID */ + + IPP_TAG_OPERATION, + + IPP_TAG_CHARSET, + 0x00, 0x12, /* Name length + name */ + 'a','t','t','r','i','b','u','t','e','s','-', + 'c','h','a','r','s','e','t', + 0x00, 0x05, /* Value length + value */ + 'u','t','f','-','8', + + IPP_TAG_LANGUAGE, + 0x00, 0x1b, /* Name length + name */ + 'a','t','t','r','i','b','u','t','e','s','-', + 'n','a','t','u','r','a','l','-','l','a','n', + 'g','u','a','g','e', + 0x00, 0x02, /* Value length + value */ + 'e','n', + + IPP_TAG_URI, + 0x00, 0x0b, /* Name length + name */ + 'p','r','i','n','t','e','r','-','u','r','i', + 0x00, 0x1c, /* Value length + value */ + 'i','p','p',':','/','/','l','o','c','a','l', + 'h','o','s','t','/','p','r','i','n','t','e', + 'r','s','/','f','o','o', + + IPP_TAG_JOB, /* job group tag */ + + IPP_TAG_BEGIN_COLLECTION, + /* begCollection tag */ + 0x00, 0x09, /* Name length + name */ + 'm', 'e', 'd', 'i', 'a', '-', 'c', 'o', 'l', + 0x00, 0x00, /* No value */ + IPP_TAG_BEGIN_COLLECTION, + /* begCollection tag */ + 0x00, 0x0a, /* Name length + name */ + 'm', 'e', 'd', 'i', 'a', '-', 's', 'i', 'z', 'e', + 0x00, 0x00, /* No value */ + IPP_TAG_INTEGER, /* integer tag */ + 0x00, 0x0b, /* Name length + name */ + 'x', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n', + 0x00, 0x04, /* Value length + value */ + 0x00, 0x00, 0x54, 0x56, + IPP_TAG_INTEGER, /* integer tag */ + 0x00, 0x0b, /* Name length + name */ + 'y', '-', 'd', 'i', 'm', 'e', 'n', 's', 'i', 'o', 'n', + 0x00, 0x04, /* Value length + value */ + 0x00, 0x00, 0x6d, 0x24, + IPP_TAG_END_COLLECTION, + /* endCollection tag */ + 0x00, 0x00, /* No name */ + 0x00, 0x00, /* No value */ + IPP_TAG_END_COLLECTION, + /* endCollection tag */ 0x00, 0x00, /* No name */ 0x00, 0x00, /* No value */ @@ -200,7 +265,7 @@ static ipp_uchar_t mixed[] = /* Mixed value buffer */ 0x01, 0x01, /* IPP version */ 0x00, 0x02, /* Print-Job operation */ 0x00, 0x00, 0x00, 0x01, - /* Request ID */ + /* Request ID */ IPP_TAG_OPERATION, @@ -590,11 +655,32 @@ main(int argc, /* I - Number of command-line arguments */ ippDelete(request); /* + * Read the bad collection data and confirm we get an error... + */ + + fputs("Read Bad Collection from Memory: ", stdout); + + request = ippNew(); + data.rpos = 0; + data.wused = sizeof(bad_collection); + data.wsize = sizeof(bad_collection); + data.wbuffer = bad_collection; + + while ((state = ippReadIO(&data, (ipp_iocb_t)read_cb, 1, NULL, request)) != IPP_STATE_DATA) + if (state == IPP_STATE_ERROR) + break; + + if (state != IPP_STATE_ERROR) + puts("FAIL (read successful)"); + else + puts("PASS"); + + /* * Read the mixed data and confirm we converted everything to rangeOfInteger * values... */ - printf("Read Mixed integer/rangeOfInteger from Memory: "); + fputs("Read Mixed integer/rangeOfInteger from Memory: ", stdout); request = ippNew(); data.rpos = 0; diff --git a/cups/testppd.c b/cups/testppd.c index a127a79..776304b 100644 --- a/cups/testppd.c +++ b/cups/testppd.c @@ -1054,6 +1054,10 @@ main(int argc, /* I - Number of command-line arguments */ { switch (cparam->type) { + case PPD_CUSTOM_UNKNOWN : + printf(" %s(%s): PPD_CUSTOM_UNKNOWN (error)\n", cparam->name, cparam->text); + break; + case PPD_CUSTOM_CURVE : printf(" %s(%s): PPD_CUSTOM_CURVE (%g to %g)\n", cparam->name, cparam->text, diff --git a/doc/cups.css b/doc/cups.css index da6ac15..79774b1 100644 --- a/doc/cups.css +++ b/doc/cups.css @@ -76,6 +76,7 @@ float: left; margin-left: 0.5%; margin-right: 0; + padding-bottom: 40px; width: 33%; } .row .thirds:first-child { @@ -86,6 +87,7 @@ float: left; margin-left: 0.5%; margin-right: 0; + padding-bottom: 40px; width: 49.75%; } .row .halves:first-child { diff --git a/doc/de/index.html.in b/doc/de/index.html.in index cbae07b..cdc29b1 100644 --- a/doc/de/index.html.in +++ b/doc/de/index.html.in @@ -50,6 +50,6 @@ </div> </div> </div> - <div class="footer">CUPS und das CUPS Logo sind Warenzeichen der <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2018 Apple Inc. Alle Rechte vorbehalten.</div> + <div class="footer">CUPS und das CUPS Logo sind Warenzeichen der <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2019 Apple Inc. Alle Rechte vorbehalten.</div> </body> </html> diff --git a/doc/es/index.html.in b/doc/es/index.html.in index 6c12f4f..6343c38 100644 --- a/doc/es/index.html.in +++ b/doc/es/index.html.in @@ -50,6 +50,6 @@ </div> </div> </div> - <div class="footer">CUPS y el logo de CUPS son marcas registradas de <a href="http://www.apple.com">Apple Inc.</a> Derechos de autor © 2007-2018 Apple Inc. Todos los derechos reservados.</div> + <div class="footer">CUPS y el logo de CUPS son marcas registradas de <a href="http://www.apple.com">Apple Inc.</a> Derechos de autor © 2007-2019 Apple Inc. Todos los derechos reservados.</div> </body> </html> diff --git a/doc/help/man-cupsd.conf.html b/doc/help/man-cupsd.conf.html index 4ba6ecf..8850f35 100644 --- a/doc/help/man-cupsd.conf.html +++ b/doc/help/man-cupsd.conf.html @@ -219,7 +219,7 @@ The value "0" disables log rotation. The default is "1048576" (1MB). <dt><a name="MultipleOperationTimeout"></a><b>MultipleOperationTimeout </b><i>seconds</i> <dd style="margin-left: 5.0em">Specifies the maximum amount of time to allow between files in a multiple file print job. -The default is "300" (5 minutes). +The default is "900" (15 minutes). <dt><a name="Policy"></a><b><Policy </b><i>name</i><b>> </b>... <b></Policy></b> <dd style="margin-left: 5.0em">Specifies access control for the named policy. <dt><a name="Port"></a><b>Port </b><i>number</i> @@ -294,7 +294,7 @@ The <i>DenyTLS1.0</i> option disables TLS v1.0 support - this sets the minimum p The default is "No". <dt><a name="Timeout"></a><b>Timeout </b><i>seconds</i> <dd style="margin-left: 5.0em">Specifies the HTTP request timeout. -The default is "300" (5 minutes). +The default is "900" (15 minutes). <dt><a name="WebInterface"></a><b>WebInterface yes</b> <dd style="margin-left: 5.0em"><dt><b>WebInterface no</b> <dd style="margin-left: 5.0em">Specifies whether the web interface is enabled. @@ -601,7 +601,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-2018 by Apple Inc. +Copyright © 2007-2019 by Apple Inc. </body> </html> diff --git a/doc/help/man-ipptoolfile.html b/doc/help/man-ipptoolfile.html index c426af7..d8cae81 100644 --- a/doc/help/man-ipptoolfile.html +++ b/doc/help/man-ipptoolfile.html @@ -230,7 +230,7 @@ The following predicates are understood following the <b>EXPECT</b> test directi <dd style="margin-left: 5.0em">Makes the <b>EXPECT</b> conditions apply only if the specified variable is not defined. <dt><b>IN-GROUP </b><i>tag</i> <dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to be in the specified group tag. -<dt><b>OF-TYPE </b><i>tag[,tag,...]</i> +<dt><b>OF-TYPE </b><i>tag[|tag,...]</i> <dd style="margin-left: 5.0em">Requires the <b>EXPECT</b> attribute to use one of the specified value tag(s). <dt><b>REPEAT-LIMIT </b><i>number</i> <dd style="margin-left: 5.0em"><br> @@ -532,7 +532,7 @@ IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp-registrations)"> PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp)">http://www.pwg.org/ipp)</a>, RFC 8011 (<a href="http://tools.ietf.org/html/rfc8011">http://tools.ietf.org/html/rfc8011</a>) <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2> -Copyright © 2007-2017 by Apple Inc. +Copyright © 2007-2019 by Apple Inc. </body> </html> diff --git a/doc/index.html.in b/doc/index.html.in index 0cb0164..48f18ad 100644 --- a/doc/index.html.in +++ b/doc/index.html.in @@ -50,6 +50,6 @@ </div> </div> </div> - <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2018 Apple Inc. All rights reserved.</div> + <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2019 Apple Inc. All rights reserved.</div> </body> </html> diff --git a/doc/ja/index.html.in b/doc/ja/index.html.in index 08549f9..eacc157 100644 --- a/doc/ja/index.html.in +++ b/doc/ja/index.html.in @@ -50,6 +50,6 @@ </div> </div> </div> - <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2018 Apple Inc. All rights reserved.</div> + <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2019 Apple Inc. All rights reserved.</div> </body> </html> diff --git a/doc/pt_BR/index.html.in b/doc/pt_BR/index.html.in index ace8226..b3ea358 100644 --- a/doc/pt_BR/index.html.in +++ b/doc/pt_BR/index.html.in @@ -51,6 +51,6 @@ </div> </div> </div> - <div class="footer">CUPS e o logo do CUPS são marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2018 Apple Inc. Todos os direitos reservados.</div> + <div class="footer">CUPS e o logo do CUPS são marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2019 Apple Inc. Todos os direitos reservados.</div> </body> </html> diff --git a/doc/ru/index.html.in b/doc/ru/index.html.in index 7bfc5a3..47dc6d8 100644 --- a/doc/ru/index.html.in +++ b/doc/ru/index.html.in @@ -51,6 +51,6 @@ </div> </div> </div> - <div class="footer">CUPS а также логотип CUPS являются зарегистрированными торговыми марками <A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2018) компании Apple Inc. Все права защищены.</div> + <div class="footer">CUPS а также логотип CUPS являются зарегистрированными торговыми марками <A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2019) компании Apple Inc. Все права защищены.</div> </body> </html> diff --git a/filter/rastertolabel.c b/filter/rastertolabel.c index 6ad6c62..b44f490 100644 --- a/filter/rastertolabel.c +++ b/filter/rastertolabel.c @@ -1,7 +1,7 @@ /* * Label printer filter for CUPS. * - * Copyright 2007-2016 by Apple Inc. + * Copyright 2007-2019 by Apple Inc. * Copyright 2001-2007 by Easy Software Products. * * These coded instructions, statements, and computer programs are the @@ -619,7 +619,14 @@ EndPage(ppd_file_t *ppd, /* I - PPD file */ */ puts("^XZ"); + + /* + * Delete the label image... + */ + + puts("^XA"); puts("^IDR:CUPS.GRF^FS"); + puts("^XZ"); /* * Cut the label as needed... diff --git a/locale/cups.pot b/locale/cups.pot index 46edb9d..39ea967 100644 --- a/locale/cups.pot +++ b/locale/cups.pot @@ -26,9 +26,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: CUPS 2.2.9\n" +"Project-Id-Version: CUPS 2.2.11\n" "Report-Msgid-Bugs-To: https://github.com/apple/cups/issues\n" -"POT-Creation-Date: 2018-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -976,23 +976,23 @@ msgstr "" msgid " ( expressions ) Group expressions." msgstr "" -#: systemv/cupsctl.c:203 +#: systemv/cupsctl.c:244 msgid " --[no-]debug-logging Turn debug logging on/off." msgstr "" -#: systemv/cupsctl.c:205 +#: systemv/cupsctl.c:246 msgid " --[no-]remote-admin Turn remote administration on/off." msgstr "" -#: systemv/cupsctl.c:207 +#: systemv/cupsctl.c:248 msgid " --[no-]remote-any Allow/prevent access from the Internet." msgstr "" -#: systemv/cupsctl.c:209 +#: systemv/cupsctl.c:250 msgid " --[no-]share-printers Turn printer sharing on/off." msgstr "" -#: systemv/cupsctl.c:211 +#: systemv/cupsctl.c:252 msgid " --[no-]user-cancel-any Allow/prevent users to cancel any job." msgstr "" @@ -1128,7 +1128,7 @@ msgstr "" msgid " -D name=value Set named variable to value." msgstr "" -#: systemv/cupsaddsmb.c:277 systemv/cupsctl.c:198 +#: systemv/cupsaddsmb.c:277 systemv/cupsctl.c:239 msgid " -E Encrypt the connection." msgstr "" @@ -1136,7 +1136,7 @@ msgstr "" msgid " -E Test with encryption using HTTP Upgrade to TLS." msgstr "" -#: scheduler/main.c:2106 +#: scheduler/main.c:2100 msgid " -F Run in the foreground but detach from console." msgstr "" @@ -1188,7 +1188,7 @@ msgstr "" msgid " -T seconds Set the receive/send timeout in seconds." msgstr "" -#: scheduler/cupsfilter.c:1484 systemv/cupsaddsmb.c:280 systemv/cupsctl.c:199 +#: scheduler/cupsfilter.c:1484 systemv/cupsaddsmb.c:280 systemv/cupsctl.c:240 msgid " -U username Specify username." msgstr "" @@ -1220,7 +1220,7 @@ msgstr "" msgid " -c cups-files.conf Set cups-files.conf file to use." msgstr "" -#: scheduler/main.c:2104 +#: scheduler/main.c:2098 msgid " -c cupsd.conf Set cupsd.conf file to use." msgstr "" @@ -1244,7 +1244,7 @@ msgstr "" msgid " -e Use every filter from the PPD file." msgstr "" -#: scheduler/main.c:2105 +#: scheduler/main.c:2099 msgid " -f Run in the foreground." msgstr "" @@ -1252,7 +1252,7 @@ msgstr "" msgid " -f filename Set default request filename." msgstr "" -#: scheduler/main.c:2107 +#: scheduler/main.c:2101 msgid " -h Show this usage message." msgstr "" @@ -1264,7 +1264,7 @@ msgstr "" msgid " -h regex Match hostname to regular expression." msgstr "" -#: systemv/cupsaddsmb.c:282 systemv/cupsctl.c:200 +#: systemv/cupsaddsmb.c:282 systemv/cupsctl.c:241 msgid " -h server[:port] Specify server address." msgstr "" @@ -1288,7 +1288,7 @@ msgstr "" msgid " -l Produce plain text output." msgstr "" -#: scheduler/main.c:2109 +#: scheduler/main.c:2103 msgid " -l Run cupsd on demand." msgstr "" @@ -1320,7 +1320,7 @@ msgstr "" msgid " -o filename.drv Set driver information file (otherwise ppdi.drv)." msgstr "" -#: ppdc/ppdmerge.cxx:362 +#: ppdc/ppdmerge.cxx:360 msgid " -o filename.ppd[.gz] Set output file (otherwise stdout)." msgstr "" @@ -1356,7 +1356,7 @@ msgstr "" msgid " -s Print service name if true." msgstr "" -#: scheduler/main.c:2111 +#: scheduler/main.c:2105 msgid " -s cups-files.conf Set cups-files.conf file to use." msgstr "" @@ -1368,7 +1368,7 @@ msgstr "" msgid " -t Test PPDs instead of generating them." msgstr "" -#: scheduler/main.c:2112 +#: scheduler/main.c:2106 msgid " -t Test the configuration file." msgstr "" @@ -1555,191 +1555,191 @@ msgstr "" msgid " PASS" msgstr "" -#: cups/ipp.c:5145 +#: cups/ipp.c:5129 #, c-format msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 8011 section 5.1.6)." msgstr "" -#: cups/ipp.c:5152 +#: cups/ipp.c:5136 #, c-format msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 8011 section 5.1.6)." msgstr "" -#: cups/ipp.c:4763 +#: cups/ipp.c:4759 #, c-format msgid "\"%s\": Bad attribute name - bad length %d (RFC 8011 section 5.1.4)." msgstr "" -#: cups/ipp.c:4755 +#: cups/ipp.c:4751 #, c-format msgid "\"%s\": Bad attribute name - invalid character (RFC 8011 section 5.1.4)." msgstr "" -#: cups/ipp.c:4781 +#: cups/ipp.c:4777 #, c-format msgid "\"%s\": Bad boolen value %d (RFC 8011 section 5.1.21)." msgstr "" -#: cups/ipp.c:5204 +#: cups/ipp.c:5188 #, c-format msgid "\"%s\": Bad charset value \"%s\" - bad characters (RFC 8011 section 5.1.8)." msgstr "" -#: cups/ipp.c:5213 +#: cups/ipp.c:5197 #, c-format msgid "\"%s\": Bad charset value \"%s\" - bad length %d (RFC 8011 section 5.1.8)." msgstr "" -#: cups/ipp.c:4881 +#: cups/ipp.c:4877 #, c-format msgid "\"%s\": Bad dateTime UTC hours %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4889 +#: cups/ipp.c:4885 #, c-format msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4873 +#: cups/ipp.c:4869 #, c-format msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4833 +#: cups/ipp.c:4829 #, c-format msgid "\"%s\": Bad dateTime day %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4865 +#: cups/ipp.c:4861 #, c-format msgid "\"%s\": Bad dateTime deciseconds %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4841 +#: cups/ipp.c:4837 #, c-format msgid "\"%s\": Bad dateTime hours %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4849 +#: cups/ipp.c:4845 #, c-format msgid "\"%s\": Bad dateTime minutes %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4825 +#: cups/ipp.c:4821 #, c-format msgid "\"%s\": Bad dateTime month %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4857 +#: cups/ipp.c:4853 #, c-format msgid "\"%s\": Bad dateTime seconds %u (RFC 8011 section 5.1.15)." msgstr "" -#: cups/ipp.c:4795 +#: cups/ipp.c:4791 #, c-format msgid "\"%s\": Bad enum value %d - out of range (RFC 8011 section 5.1.5)." msgstr "" -#: cups/ipp.c:5124 +#: cups/ipp.c:5108 #, c-format msgid "\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 8011 section 5.1.4)." msgstr "" -#: cups/ipp.c:5115 +#: cups/ipp.c:5099 #, c-format msgid "\"%s\": Bad keyword value \"%s\" - invalid character (RFC 8011 section 5.1.4)." msgstr "" -#: cups/ipp.c:5313 +#: cups/ipp.c:5297 #, c-format msgid "\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 8011 section 5.1.10)." msgstr "" -#: cups/ipp.c:5323 +#: cups/ipp.c:5307 #, c-format msgid "\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 8011 section 5.1.10)." msgstr "" -#: cups/ipp.c:5087 +#: cups/ipp.c:5071 #, c-format msgid "\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.3)." msgstr "" -#: cups/ipp.c:5082 +#: cups/ipp.c:5066 #, c-format msgid "\"%s\": Bad name value \"%s\" - bad control character (PWG 5100.14 section 8.1)." msgstr "" -#: cups/ipp.c:5095 +#: cups/ipp.c:5079 #, c-format msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 8011 section 5.1.3)." msgstr "" -#: cups/ipp.c:5259 +#: cups/ipp.c:5243 #, c-format msgid "\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 8011 section 5.1.9)." msgstr "" -#: cups/ipp.c:5269 +#: cups/ipp.c:5253 #, c-format msgid "\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 8011 section 5.1.9)." msgstr "" -#: cups/ipp.c:4809 +#: cups/ipp.c:4805 #, c-format msgid "\"%s\": Bad octetString value - bad length %d (RFC 8011 section 5.1.20)." msgstr "" -#: cups/ipp.c:4952 +#: cups/ipp.c:4948 #, c-format msgid "\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 8011 section 5.1.14)." msgstr "" -#: cups/ipp.c:4933 +#: cups/ipp.c:4929 #, c-format msgid "\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 8011 section 5.1.16)." msgstr "" -#: cups/ipp.c:4902 +#: cups/ipp.c:4898 #, 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:4917 +#: cups/ipp.c:4913 #, 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:5022 +#: cups/ipp.c:5012 #, c-format msgid "\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 8011 section 5.1.2)." msgstr "" -#: cups/ipp.c:5017 +#: cups/ipp.c:5007 #, c-format msgid "\"%s\": Bad text value \"%s\" - bad control character (PWG 5100.14 section 8.3)." msgstr "" -#: cups/ipp.c:5030 +#: cups/ipp.c:5020 #, c-format msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 8011 section 5.1.2)." msgstr "" -#: cups/ipp.c:5175 +#: cups/ipp.c:5159 #, c-format msgid "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 8011 section 5.1.7)." msgstr "" -#: cups/ipp.c:5184 +#: cups/ipp.c:5168 #, c-format msgid "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 8011 section 5.1.7)." msgstr "" -#: scheduler/ipp.c:377 +#: scheduler/ipp.c:375 msgid "\"requesting-user-name\" attribute in wrong group." msgstr "" -#: scheduler/ipp.c:383 scheduler/ipp.c:398 +#: scheduler/ipp.c:381 scheduler/ipp.c:396 msgid "\"requesting-user-name\" attribute with wrong syntax." msgstr "" @@ -1788,7 +1788,7 @@ msgstr "" msgid "%s accepting requests since %s" msgstr "" -#: scheduler/ipp.c:10349 +#: scheduler/ipp.c:10352 #, c-format msgid "%s cannot be changed." msgstr "" @@ -1824,7 +1824,7 @@ msgstr "" msgid "%s not accepting requests since %s -" msgstr "" -#: scheduler/ipp.c:620 +#: scheduler/ipp.c:618 #, c-format msgid "%s not supported." msgstr "" @@ -1847,8 +1847,8 @@ msgstr "" #. TRANSLATORS: Message is "subject: error" #: cups/langprintf.c:75 scheduler/cupsfilter.c:724 systemv/lpadmin.c:801 #: systemv/lpadmin.c:852 systemv/lpadmin.c:902 systemv/lpadmin.c:958 -#: systemv/lpadmin.c:1056 systemv/lpadmin.c:1108 systemv/lpadmin.c:1150 -#: systemv/lpadmin.c:1164 systemv/lpadmin.c:1614 +#: systemv/lpadmin.c:1056 systemv/lpadmin.c:1108 systemv/lpadmin.c:1151 +#: systemv/lpadmin.c:1165 systemv/lpadmin.c:1615 #, c-format msgid "%s: %s" msgstr "" @@ -1858,7 +1858,7 @@ msgstr "" msgid "%s: %s failed: %s" msgstr "" -#: systemv/lpadmin.c:1225 +#: systemv/lpadmin.c:1224 #, c-format msgid "%s: Bad printer URI \"%s\"." msgstr "" @@ -2126,7 +2126,7 @@ msgstr "" msgid "%s: Sorry, no encryption support." msgstr "" -#: systemv/lpadmin.c:1232 +#: systemv/lpadmin.c:1231 #, c-format msgid "%s: Unable to connect to \"%s:%d\": %s" msgstr "" @@ -2142,7 +2142,7 @@ msgstr "" msgid "%s: Unable to contact server." msgstr "" -#: systemv/lpadmin.c:1262 +#: systemv/lpadmin.c:1261 #, c-format msgid "%s: Unable to create PPD file: %s" msgstr "" @@ -2157,17 +2157,17 @@ msgstr "" msgid "%s: Unable to open \"%s\": %s" msgstr "" -#: ppdc/ppdmerge.cxx:88 +#: ppdc/ppdmerge.cxx:89 #, c-format msgid "%s: Unable to open %s: %s" msgstr "" -#: scheduler/cupsfilter.c:672 ppdc/ppdmerge.cxx:104 +#: scheduler/cupsfilter.c:672 ppdc/ppdmerge.cxx:105 #, c-format msgid "%s: Unable to open PPD file: %s on line %d." msgstr "" -#: systemv/lpadmin.c:1247 +#: systemv/lpadmin.c:1246 #, c-format msgid "%s: Unable to query printer: %s" msgstr "" @@ -2177,7 +2177,7 @@ msgstr "" msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"." msgstr "" -#: systemv/lpadmin.c:1216 +#: systemv/lpadmin.c:1215 #, c-format msgid "%s: Unable to resolve \"%s\"." msgstr "" @@ -2562,23 +2562,23 @@ msgstr "" msgid "2 inches/sec." msgstr "" -#: cups/ppd-cache.c:3012 +#: cups/ppd-cache.c:2996 msgid "2-Hole Punch (Landscape)" msgstr "" -#: cups/ppd-cache.c:3013 +#: cups/ppd-cache.c:2997 msgid "2-Hole Punch (Portrait)" msgstr "" -#: cups/ppd-cache.c:3011 +#: cups/ppd-cache.c:2995 msgid "2-Hole Punch (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:3010 +#: cups/ppd-cache.c:2994 msgid "2-Hole Punch (Reverse Portrait)" msgstr "" -#: cups/ppd-cache.c:3735 ppdc/sample.c:262 +#: cups/ppd-cache.c:3737 ppdc/sample.c:262 msgid "2-Sided Printing" msgstr "" @@ -2730,19 +2730,19 @@ msgstr "" msgid "3 x 5" msgstr "" -#: cups/ppd-cache.c:3023 +#: cups/ppd-cache.c:3007 msgid "3-Hole Punch (Landscape)" msgstr "" -#: cups/ppd-cache.c:3021 +#: cups/ppd-cache.c:3005 msgid "3-Hole Punch (Portrait)" msgstr "" -#: cups/ppd-cache.c:3020 +#: cups/ppd-cache.c:3004 msgid "3-Hole Punch (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:3022 +#: cups/ppd-cache.c:3006 msgid "3-Hole Punch (Reverse Portrait)" msgstr "" @@ -2834,19 +2834,19 @@ msgstr "" msgid "4 inches/sec." msgstr "" -#: cups/ppd-cache.c:3017 +#: cups/ppd-cache.c:3001 msgid "4-Hole Punch (Landscape)" msgstr "" -#: cups/ppd-cache.c:3015 +#: cups/ppd-cache.c:2999 msgid "4-Hole Punch (Portrait)" msgstr "" -#: cups/ppd-cache.c:3014 +#: cups/ppd-cache.c:2998 msgid "4-Hole Punch (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:3016 +#: cups/ppd-cache.c:3000 msgid "4-Hole Punch (Reverse Portrait)" msgstr "" @@ -3090,12 +3090,12 @@ msgstr "" msgid "A Samba username is required to export printer drivers" msgstr "" -#: scheduler/ipp.c:2298 +#: scheduler/ipp.c:2296 #, c-format msgid "A class named \"%s\" already exists." msgstr "" -#: scheduler/ipp.c:902 +#: scheduler/ipp.c:900 #, c-format msgid "A printer named \"%s\" already exists." msgstr "" @@ -3244,7 +3244,7 @@ msgstr "" msgid "Accepted" msgstr "" -#: cups/ppd-cache.c:2993 +#: cups/ppd-cache.c:2977 msgid "Accordian Fold" msgstr "" @@ -3269,19 +3269,19 @@ msgstr "" msgid "Administration" msgstr "" -#: cups/ppd-cache.c:3483 +#: cups/ppd-cache.c:3485 msgid "Advanced Photo Paper" msgstr "" -#: cups/ppd-cache.c:3396 +#: cups/ppd-cache.c:3398 msgid "Alternate" msgstr "" -#: cups/ppd-cache.c:3404 +#: cups/ppd-cache.c:3406 msgid "Alternate Roll" msgstr "" -#: cups/ppd-cache.c:3477 +#: cups/ppd-cache.c:3479 msgid "Aluminum" msgstr "" @@ -3297,43 +3297,43 @@ msgstr "" msgid "Applicator" msgstr "" -#: cups/ppd-cache.c:3511 +#: cups/ppd-cache.c:3513 msgid "Archival Envelope" msgstr "" -#: cups/ppd-cache.c:3523 +#: cups/ppd-cache.c:3525 msgid "Archival Fabric" msgstr "" -#: cups/ppd-cache.c:3600 +#: cups/ppd-cache.c:3602 msgid "Archival Paper" msgstr "" -#: cups/ppd-cache.c:3572 +#: cups/ppd-cache.c:3574 msgid "Archival Photo Paper" msgstr "" -#: scheduler/ipp.c:997 +#: scheduler/ipp.c:995 #, c-format msgid "Attempt to set %s printer-state to bad value %d." msgstr "" -#: scheduler/ipp.c:5455 scheduler/ipp.c:5481 +#: scheduler/ipp.c:5458 scheduler/ipp.c:5484 #, c-format msgid "Attribute \"%s\" is in the wrong group." msgstr "" -#: scheduler/ipp.c:5457 scheduler/ipp.c:5483 +#: scheduler/ipp.c:5460 scheduler/ipp.c:5486 #, c-format msgid "Attribute \"%s\" is the wrong value type." msgstr "" -#: scheduler/ipp.c:239 +#: scheduler/ipp.c:237 #, c-format msgid "Attribute groups are out of order (%x < %x)." msgstr "" -#: cups/ppd-cache.c:3394 cups/ppd-cache.c:3478 cups/ppd-cache.c:3801 +#: cups/ppd-cache.c:3396 cups/ppd-cache.c:3480 cups/ppd-cache.c:3803 msgid "Automatic" msgstr "" @@ -3385,21 +3385,21 @@ msgstr "" msgid "B9" msgstr "" -#: cups/ppd-cache.c:3479 +#: cups/ppd-cache.c:3481 msgid "Back Print Film" msgstr "" -#: scheduler/ipp.c:10358 +#: scheduler/ipp.c:10361 #, c-format msgid "Bad '%s' value." msgstr "" -#: scheduler/ipp.c:11306 +#: scheduler/ipp.c:11309 #, c-format msgid "Bad 'document-format' value \"%s\"." msgstr "" -#: cups/ppd.c:337 +#: cups/ppd.c:318 msgid "Bad CloseUI/JCLCloseUI" msgstr "" @@ -3407,32 +3407,32 @@ msgstr "" msgid "Bad NULL dests pointer" msgstr "" -#: cups/ppd.c:320 +#: cups/ppd.c:301 msgid "Bad OpenGroup" msgstr "" -#: cups/ppd.c:322 +#: cups/ppd.c:303 msgid "Bad OpenUI/JCLOpenUI" msgstr "" -#: cups/ppd.c:324 +#: cups/ppd.c:305 msgid "Bad OrderDependency" msgstr "" -#: cups/ppd-cache.c:458 cups/ppd-cache.c:505 cups/ppd-cache.c:543 -#: cups/ppd-cache.c:549 cups/ppd-cache.c:565 cups/ppd-cache.c:581 -#: cups/ppd-cache.c:590 cups/ppd-cache.c:598 cups/ppd-cache.c:615 -#: cups/ppd-cache.c:623 cups/ppd-cache.c:638 cups/ppd-cache.c:646 -#: cups/ppd-cache.c:667 cups/ppd-cache.c:679 cups/ppd-cache.c:694 -#: cups/ppd-cache.c:706 cups/ppd-cache.c:728 cups/ppd-cache.c:736 -#: cups/ppd-cache.c:754 cups/ppd-cache.c:762 cups/ppd-cache.c:777 -#: cups/ppd-cache.c:785 cups/ppd-cache.c:803 cups/ppd-cache.c:811 -#: cups/ppd-cache.c:838 cups/ppd-cache.c:908 cups/ppd-cache.c:916 -#: cups/ppd-cache.c:924 +#: cups/ppd-cache.c:458 cups/ppd-cache.c:505 cups/ppd-cache.c:539 +#: cups/ppd-cache.c:545 cups/ppd-cache.c:561 cups/ppd-cache.c:577 +#: cups/ppd-cache.c:586 cups/ppd-cache.c:594 cups/ppd-cache.c:611 +#: cups/ppd-cache.c:619 cups/ppd-cache.c:634 cups/ppd-cache.c:642 +#: cups/ppd-cache.c:663 cups/ppd-cache.c:675 cups/ppd-cache.c:690 +#: cups/ppd-cache.c:702 cups/ppd-cache.c:724 cups/ppd-cache.c:732 +#: cups/ppd-cache.c:750 cups/ppd-cache.c:758 cups/ppd-cache.c:773 +#: cups/ppd-cache.c:781 cups/ppd-cache.c:799 cups/ppd-cache.c:807 +#: cups/ppd-cache.c:834 cups/ppd-cache.c:902 cups/ppd-cache.c:910 +#: cups/ppd-cache.c:918 msgid "Bad PPD cache file." msgstr "" -#: scheduler/ipp.c:2673 +#: scheduler/ipp.c:2670 msgid "Bad PPD file." msgstr "" @@ -3444,7 +3444,7 @@ msgstr "" msgid "Bad SNMP version number" msgstr "" -#: cups/ppd.c:325 +#: cups/ppd.c:306 msgid "Bad UIConstraints" msgstr "" @@ -3452,31 +3452,31 @@ msgstr "" msgid "Bad arguments to function" msgstr "" -#: scheduler/ipp.c:1382 +#: scheduler/ipp.c:1380 #, c-format msgid "Bad copies value %d." msgstr "" -#: cups/ppd.c:333 +#: cups/ppd.c:314 msgid "Bad custom parameter" msgstr "" -#: cups/http-support.c:1750 scheduler/ipp.c:2378 +#: cups/http-support.c:1750 scheduler/ipp.c:2376 #, c-format msgid "Bad device-uri \"%s\"." msgstr "" -#: scheduler/ipp.c:2423 +#: scheduler/ipp.c:2421 #, c-format msgid "Bad device-uri scheme \"%s\"." msgstr "" -#: scheduler/ipp.c:8504 scheduler/ipp.c:8522 scheduler/ipp.c:9750 +#: scheduler/ipp.c:8507 scheduler/ipp.c:8525 scheduler/ipp.c:9753 #, c-format msgid "Bad document-format \"%s\"." msgstr "" -#: scheduler/ipp.c:9768 +#: scheduler/ipp.c:9771 #, c-format msgid "Bad document-format-default \"%s\"." msgstr "" @@ -3489,56 +3489,56 @@ msgstr "" msgid "Bad hostname/address in URI" msgstr "" -#: scheduler/ipp.c:1564 +#: scheduler/ipp.c:1562 #, c-format msgid "Bad job-name value: %s" msgstr "" -#: scheduler/ipp.c:1550 +#: scheduler/ipp.c:1548 msgid "Bad job-name value: Wrong type or count." msgstr "" -#: scheduler/ipp.c:10396 +#: scheduler/ipp.c:10399 msgid "Bad job-priority value." msgstr "" -#: scheduler/ipp.c:1412 +#: scheduler/ipp.c:1410 #, c-format msgid "Bad job-sheets value \"%s\"." msgstr "" -#: scheduler/ipp.c:1396 +#: scheduler/ipp.c:1394 msgid "Bad job-sheets value type." msgstr "" -#: scheduler/ipp.c:10426 +#: scheduler/ipp.c:10429 msgid "Bad job-state value." msgstr "" -#: scheduler/ipp.c:3014 scheduler/ipp.c:3476 scheduler/ipp.c:6286 -#: scheduler/ipp.c:6433 scheduler/ipp.c:7930 scheduler/ipp.c:8202 -#: scheduler/ipp.c:9068 scheduler/ipp.c:9292 scheduler/ipp.c:9644 -#: scheduler/ipp.c:10257 +#: scheduler/ipp.c:3011 scheduler/ipp.c:3473 scheduler/ipp.c:6289 +#: scheduler/ipp.c:6436 scheduler/ipp.c:7933 scheduler/ipp.c:8205 +#: scheduler/ipp.c:9071 scheduler/ipp.c:9295 scheduler/ipp.c:9647 +#: scheduler/ipp.c:10260 #, c-format msgid "Bad job-uri \"%s\"." msgstr "" -#: scheduler/ipp.c:2064 scheduler/ipp.c:5806 +#: scheduler/ipp.c:2062 scheduler/ipp.c:5809 #, c-format msgid "Bad notify-pull-method \"%s\"." msgstr "" -#: scheduler/ipp.c:2028 scheduler/ipp.c:5770 +#: scheduler/ipp.c:2026 scheduler/ipp.c:5773 #, c-format msgid "Bad notify-recipient-uri \"%s\"." msgstr "" -#: scheduler/ipp.c:5881 +#: scheduler/ipp.c:5884 #, c-format msgid "Bad notify-user-data \"%s\"." msgstr "" -#: scheduler/ipp.c:1428 +#: scheduler/ipp.c:1426 #, c-format msgid "Bad number-up value %d." msgstr "" @@ -3548,7 +3548,7 @@ msgstr "" msgid "Bad option + choice on line %d." msgstr "" -#: scheduler/ipp.c:1445 +#: scheduler/ipp.c:1443 #, c-format msgid "Bad page-ranges values %d-%d." msgstr "" @@ -3557,12 +3557,12 @@ msgstr "" msgid "Bad port number in URI" msgstr "" -#: scheduler/ipp.c:2469 +#: scheduler/ipp.c:2467 #, c-format msgid "Bad port-monitor \"%s\"." msgstr "" -#: scheduler/ipp.c:2550 +#: scheduler/ipp.c:2548 #, c-format msgid "Bad printer-state value %d." msgstr "" @@ -3571,12 +3571,12 @@ msgstr "" msgid "Bad printer-uri." msgstr "" -#: scheduler/ipp.c:213 +#: scheduler/ipp.c:211 #, c-format msgid "Bad request ID %d." msgstr "" -#: scheduler/ipp.c:203 +#: scheduler/ipp.c:201 #, c-format msgid "Bad request version number %d.%d." msgstr "" @@ -3597,7 +3597,7 @@ msgstr "" msgid "Bad username in URI" msgstr "" -#: cups/ppd.c:335 +#: cups/ppd.c:316 msgid "Bad value string" msgstr "" @@ -3605,7 +3605,7 @@ msgstr "" msgid "Bad/empty URI" msgstr "" -#: cups/ppd-cache.c:2978 +#: cups/ppd-cache.c:2962 msgid "Bale" msgstr "" @@ -3613,27 +3613,27 @@ msgstr "" msgid "Banners" msgstr "" -#: cups/ppd-cache.c:2979 +#: cups/ppd-cache.c:2963 msgid "Bind" msgstr "" -#: cups/ppd-cache.c:2983 +#: cups/ppd-cache.c:2967 msgid "Bind (Landscape)" msgstr "" -#: cups/ppd-cache.c:2981 +#: cups/ppd-cache.c:2965 msgid "Bind (Portrait)" msgstr "" -#: cups/ppd-cache.c:2980 +#: cups/ppd-cache.c:2964 msgid "Bind (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:2982 +#: cups/ppd-cache.c:2966 msgid "Bind (Reverse Portrait)" msgstr "" -#: cups/ppd-cache.c:3512 +#: cups/ppd-cache.c:3514 msgid "Bond Envelope" msgstr "" @@ -3641,11 +3641,11 @@ msgstr "" msgid "Bond Paper" msgstr "" -#: cups/ppd-cache.c:4061 +#: cups/ppd-cache.c:4063 msgid "Booklet" msgstr "" -#: cups/ppd-cache.c:2984 +#: cups/ppd-cache.c:2968 msgid "Booklet Maker" msgstr "" @@ -3654,19 +3654,19 @@ msgstr "" msgid "Boolean expected for waiteof option \"%s\"." msgstr "" -#: cups/ppd-cache.c:3407 +#: cups/ppd-cache.c:3409 msgid "Bottom" msgstr "" -#: cups/ppd-cache.c:3802 +#: cups/ppd-cache.c:3804 msgid "Bottom Tray" msgstr "" -#: filter/pstops.c:2032 +#: filter/pstops.c:2031 msgid "Buffer overflow detected, aborting." msgstr "" -#: cups/ppd-cache.c:3482 +#: cups/ppd-cache.c:3484 msgid "CD" msgstr "" @@ -3686,23 +3686,23 @@ msgstr "" msgid "Cancel RSS Subscription" msgstr "" -#: backend/ipp.c:2271 +#: backend/ipp.c:2272 msgid "Canceling print job." msgstr "" -#: scheduler/ipp.c:973 scheduler/ipp.c:2525 +#: scheduler/ipp.c:971 scheduler/ipp.c:2523 msgid "Cannot change printer-is-shared for remote queues." msgstr "" -#: scheduler/ipp.c:2512 +#: scheduler/ipp.c:2510 msgid "Cannot share a remote Kerberized printer." msgstr "" -#: cups/ppd-cache.c:3480 +#: cups/ppd-cache.c:3482 msgid "Cardboard" msgstr "" -#: cups/ppd-cache.c:3481 +#: cups/ppd-cache.c:3483 msgid "Cardstock" msgstr "" @@ -3710,11 +3710,11 @@ msgstr "" msgid "Cassette" msgstr "" -#: cups/ppd-cache.c:3411 +#: cups/ppd-cache.c:3413 msgid "Center" msgstr "" -#: cups/ppd-cache.c:3803 +#: cups/ppd-cache.c:3805 msgid "Center Tray" msgstr "" @@ -3723,7 +3723,7 @@ msgstr "" msgid "Change Settings" msgstr "" -#: scheduler/ipp.c:2076 scheduler/ipp.c:5818 +#: scheduler/ipp.c:2074 scheduler/ipp.c:5821 #, c-format msgid "Character set \"%s\" not supported." msgstr "" @@ -3736,32 +3736,32 @@ msgstr "" msgid "Clean Print Heads" msgstr "" -#: scheduler/ipp.c:3928 +#: scheduler/ipp.c:3925 msgid "Close-Job doesn't support the job-uri attribute." msgstr "" -#: cups/ppd-cache.c:2985 +#: cups/ppd-cache.c:2969 msgid "Coat" msgstr "" -#: cups/ppd-cache.c:3513 +#: cups/ppd-cache.c:3515 msgid "Coated Envelope" msgstr "" -#: cups/ppd-cache.c:3601 +#: cups/ppd-cache.c:3603 msgid "Coated Paper" msgstr "" -#: cups/ppd-cache.c:3694 ppdc/sample.c:276 +#: cups/ppd-cache.c:3696 ppdc/sample.c:276 msgid "Color" msgstr "" -#: cups/ppd-cache.c:3668 cups/ppd-cache.c:3680 cups/ppd-cache.c:3692 -#: cups/ppd-cache.c:3703 ppdc/sample.c:274 +#: cups/ppd-cache.c:3670 cups/ppd-cache.c:3682 cups/ppd-cache.c:3694 +#: cups/ppd-cache.c:3705 ppdc/sample.c:274 msgid "Color Mode" msgstr "" -#: cups/ppd-cache.c:3548 +#: cups/ppd-cache.c:3550 msgid "Colored Labels" msgstr "" @@ -3788,15 +3788,15 @@ msgstr "" msgid "Continue" msgstr "" -#: cups/ppd-cache.c:3496 ppdc/sample.c:360 +#: cups/ppd-cache.c:3498 ppdc/sample.c:360 msgid "Continuous" msgstr "" -#: cups/ppd-cache.c:3497 +#: cups/ppd-cache.c:3499 msgid "Continuous Long" msgstr "" -#: cups/ppd-cache.c:3498 +#: cups/ppd-cache.c:3500 msgid "Continuous Short" msgstr "" @@ -3808,15 +3808,15 @@ msgstr "" msgid "Copying print data." msgstr "" -#: cups/ppd-cache.c:3514 +#: cups/ppd-cache.c:3516 msgid "Cotton Envelope" msgstr "" -#: cups/ppd-cache.c:3602 +#: cups/ppd-cache.c:3604 msgid "Cotton Paper" msgstr "" -#: cups/ppd-cache.c:2986 +#: cups/ppd-cache.c:2970 msgid "Cover" msgstr "" @@ -3824,15 +3824,15 @@ msgstr "" msgid "Created" msgstr "" -#: cups/tls-darwin.c:730 cups/tls-gnutls.c:562 +#: cups/tls-darwin.c:730 cups/tls-gnutls.c:587 msgid "Credentials do not validate against site CA certificate." msgstr "" -#: cups/tls-darwin.c:741 cups/tls-gnutls.c:579 +#: cups/tls-darwin.c:741 cups/tls-gnutls.c:604 msgid "Credentials have expired." msgstr "" -#: cups/ppd.c:1154 cups/ppd.c:1194 cups/ppd.c:1439 cups/ppd.c:1542 +#: cups/ppd.c:1133 cups/ppd.c:1173 cups/ppd.c:1382 cups/ppd.c:1485 msgid "Custom" msgstr "" @@ -3848,7 +3848,7 @@ msgstr "" msgid "Cut" msgstr "" -#: cups/ppd-cache.c:3042 +#: cups/ppd-cache.c:3026 msgid "Cut Media" msgstr "" @@ -3856,7 +3856,7 @@ msgstr "" msgid "Cutter" msgstr "" -#: cups/ppd-cache.c:3507 +#: cups/ppd-cache.c:3509 msgid "DVD" msgstr "" @@ -3872,7 +3872,7 @@ msgstr "" msgid "Data file sent successfully." msgstr "" -#: cups/ppd-cache.c:3705 +#: cups/ppd-cache.c:3707 msgid "Deep Color" msgstr "" @@ -3888,7 +3888,7 @@ msgstr "" msgid "DeskJet Series" msgstr "" -#: scheduler/ipp.c:1311 +#: scheduler/ipp.c:1309 #, c-format msgid "Destination \"%s\" is not accepting jobs." msgstr "" @@ -3908,27 +3908,27 @@ msgstr "" msgid "Direct Thermal Media" msgstr "" -#: cups/file.c:256 +#: cups/file.c:289 #, c-format msgid "Directory \"%s\" contains a relative path." msgstr "" -#: cups/file.c:228 +#: cups/file.c:261 #, c-format msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)." msgstr "" -#: cups/file.c:245 +#: cups/file.c:278 #, c-format msgid "Directory \"%s\" is a file." msgstr "" -#: cups/file.c:216 +#: cups/file.c:249 #, c-format msgid "Directory \"%s\" not available: %s" msgstr "" -#: cups/file.c:201 +#: cups/file.c:234 #, c-format msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)." msgstr "" @@ -3937,45 +3937,45 @@ msgstr "" msgid "Disabled" msgstr "" -#: cups/ppd-cache.c:3400 +#: cups/ppd-cache.c:3402 msgid "Disc" msgstr "" -#: scheduler/ipp.c:6335 +#: scheduler/ipp.c:6338 #, c-format msgid "Document #%d does not exist in job #%d." msgstr "" -#: cups/ppd-cache.c:2994 +#: cups/ppd-cache.c:2978 msgid "Double Gate Fold" msgstr "" -#: cups/ppd-cache.c:3035 +#: cups/ppd-cache.c:3019 msgid "Double Staple (Landscape)" msgstr "" -#: cups/ppd-cache.c:3033 +#: cups/ppd-cache.c:3017 msgid "Double Staple (Portrait)" msgstr "" -#: cups/ppd-cache.c:3032 +#: cups/ppd-cache.c:3016 msgid "Double Staple (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:3034 +#: cups/ppd-cache.c:3018 msgid "Double Staple (Reverse Portrait)" msgstr "" -#: cups/ppd-cache.c:3505 +#: cups/ppd-cache.c:3507 msgid "Double Wall Cardboard" msgstr "" -#: cups/ppd-cache.c:4119 cups/ppd-cache.c:4121 cups/ppd-cache.c:4184 -#: cups/ppd-cache.c:4221 +#: cups/ppd-cache.c:4121 cups/ppd-cache.c:4123 cups/ppd-cache.c:4186 +#: cups/ppd-cache.c:4223 msgid "Draft" msgstr "" -#: cups/ppd-cache.c:3506 +#: cups/ppd-cache.c:3508 msgid "Dry Film" msgstr "" @@ -4001,7 +4001,7 @@ msgstr "" msgid "Edit Configuration File" msgstr "" -#: cups/ppd-cache.c:3508 +#: cups/ppd-cache.c:3510 msgid "Embossing Foil" msgstr "" @@ -4009,11 +4009,11 @@ msgstr "" msgid "Empty PPD file." msgstr "" -#: cups/http.c:4641 +#: cups/http.c:4688 msgid "Encryption is not supported." msgstr "" -#: cups/ppd-cache.c:3509 +#: cups/ppd-cache.c:3511 msgid "End Board" msgstr "" @@ -4022,7 +4022,7 @@ msgstr "" msgid "Ending Banner" msgstr "" -#: cups/ppd-cache.c:2995 +#: cups/ppd-cache.c:2979 msgid "Engineering Z Fold" msgstr "" @@ -4034,7 +4034,7 @@ msgstr "" 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 "" -#: cups/ppd-cache.c:3399 cups/ppd-cache.c:3510 +#: cups/ppd-cache.c:3401 cups/ppd-cache.c:3512 msgid "Envelope" msgstr "" @@ -4323,11 +4323,11 @@ msgstr "" msgid "Every Label" msgstr "" -#: cups/ppd-cache.c:3488 +#: cups/ppd-cache.c:3490 msgid "Everyday Glossy Photo Paper" msgstr "" -#: cups/ppd-cache.c:3489 +#: cups/ppd-cache.c:3491 msgid "Everyday Matte Paper" msgstr "" @@ -4347,7 +4347,7 @@ msgstr "" msgid "Expressions:" msgstr "" -#: cups/ppd-cache.c:3490 +#: cups/ppd-cache.c:3492 msgid "Extra Heavyweight Paper" msgstr "" @@ -4361,43 +4361,43 @@ msgstr "" msgid "FAIL" msgstr "" -#: cups/ppd-cache.c:3522 +#: cups/ppd-cache.c:3524 msgid "Fabric" msgstr "" -#: cups/ppd-cache.c:3804 +#: cups/ppd-cache.c:3806 msgid "Face Down" msgstr "" -#: cups/ppd-cache.c:3805 +#: cups/ppd-cache.c:3807 msgid "Face Up" msgstr "" -#: cups/ppd-cache.c:3670 +#: cups/ppd-cache.c:3672 msgid "Fast Grayscale" msgstr "" -#: cups/file.c:260 +#: cups/file.c:293 #, c-format msgid "File \"%s\" contains a relative path." msgstr "" -#: cups/file.c:235 +#: cups/file.c:268 #, c-format msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)." msgstr "" -#: cups/file.c:249 +#: cups/file.c:282 #, c-format msgid "File \"%s\" is a directory." msgstr "" -#: cups/file.c:221 +#: cups/file.c:254 #, c-format msgid "File \"%s\" not available: %s" msgstr "" -#: cups/file.c:207 +#: cups/file.c:240 #, c-format msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)." msgstr "" @@ -4406,16 +4406,16 @@ msgstr "" msgid "File Folder" msgstr "" -#: scheduler/ipp.c:2399 +#: scheduler/ipp.c:2397 #, c-format msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"." msgstr "" -#: cups/ppd-cache.c:3529 +#: cups/ppd-cache.c:3531 msgid "Film" msgstr "" -#: cups/ppd-cache.c:3515 +#: cups/ppd-cache.c:3517 msgid "Fine Envelope" msgstr "" @@ -4425,23 +4425,23 @@ msgstr "" msgid "Finished page %d." msgstr "" -#: cups/ppd-cache.c:3530 +#: cups/ppd-cache.c:3532 msgid "Flexo Base" msgstr "" -#: cups/ppd-cache.c:3531 +#: cups/ppd-cache.c:3533 msgid "Flexo Photo Polymer" msgstr "" -#: cups/ppd-cache.c:3532 +#: cups/ppd-cache.c:3534 msgid "Flute" msgstr "" -#: cups/ppd-cache.c:3533 +#: cups/ppd-cache.c:3535 msgid "Foil" msgstr "" -#: cups/ppd-cache.c:2992 cups/ppd-cache.c:3970 +#: cups/ppd-cache.c:2976 cups/ppd-cache.c:3972 msgid "Fold" msgstr "" @@ -4457,15 +4457,15 @@ msgstr "" msgid "Found" msgstr "" -#: cups/ppd-cache.c:3534 +#: cups/ppd-cache.c:3536 msgid "Full Cut Tabs" msgstr "" -#: cups/ppd-cache.c:2996 +#: cups/ppd-cache.c:2980 msgid "Gate Fold" msgstr "" -#: cups/ppd.c:785 cups/ppd.c:1343 +#: cups/ppd.c:764 cups/ppd.c:1286 msgid "General" msgstr "" @@ -4477,39 +4477,39 @@ msgstr "" msgid "Get-Response-PDU uses indefinite length" msgstr "" -#: cups/ppd-cache.c:3535 +#: cups/ppd-cache.c:3537 msgid "Glass" msgstr "" -#: cups/ppd-cache.c:3536 +#: cups/ppd-cache.c:3538 msgid "Glass Colored" msgstr "" -#: cups/ppd-cache.c:3537 +#: cups/ppd-cache.c:3539 msgid "Glass Opaque" msgstr "" -#: cups/ppd-cache.c:3538 +#: cups/ppd-cache.c:3540 msgid "Glass Surfaced" msgstr "" -#: cups/ppd-cache.c:3539 +#: cups/ppd-cache.c:3541 msgid "Glass Textured" msgstr "" -#: cups/ppd-cache.c:3484 +#: cups/ppd-cache.c:3486 msgid "Glossy Brochure Paper" msgstr "" -#: cups/ppd-cache.c:3524 +#: cups/ppd-cache.c:3526 msgid "Glossy Fabric" msgstr "" -#: cups/ppd-cache.c:3549 +#: cups/ppd-cache.c:3551 msgid "Glossy Labels" msgstr "" -#: cups/ppd-cache.c:3500 +#: cups/ppd-cache.c:3502 msgid "Glossy Optical Disc" msgstr "" @@ -4517,22 +4517,22 @@ msgstr "" msgid "Glossy Paper" msgstr "" -#: cups/ppd-cache.c:3574 +#: cups/ppd-cache.c:3576 msgid "Glossy Photo Paper" msgstr "" -#: scheduler/ipp.c:2992 scheduler/ipp.c:3402 scheduler/ipp.c:3940 -#: scheduler/ipp.c:6264 scheduler/ipp.c:6411 scheduler/ipp.c:7907 -#: scheduler/ipp.c:9046 scheduler/ipp.c:9270 scheduler/ipp.c:9622 -#: scheduler/ipp.c:10235 +#: scheduler/ipp.c:2989 scheduler/ipp.c:3399 scheduler/ipp.c:3937 +#: scheduler/ipp.c:6267 scheduler/ipp.c:6414 scheduler/ipp.c:7910 +#: scheduler/ipp.c:9049 scheduler/ipp.c:9273 scheduler/ipp.c:9625 +#: scheduler/ipp.c:10238 msgid "Got a printer-uri attribute but no job-id." msgstr "" -#: cups/ppd-cache.c:3540 +#: cups/ppd-cache.c:3542 msgid "Gravure Cylinder" msgstr "" -#: cups/ppd-cache.c:3682 ppdc/sample.c:275 +#: cups/ppd-cache.c:3684 ppdc/sample.c:275 msgid "Grayscale" msgstr "" @@ -4540,15 +4540,15 @@ msgstr "" msgid "HP" msgstr "" -#: cups/ppd-cache.c:3402 +#: cups/ppd-cache.c:3404 msgid "Hagaki" msgstr "" -#: cups/ppd-cache.c:2997 +#: cups/ppd-cache.c:2981 msgid "Half Fold" msgstr "" -#: cups/ppd-cache.c:2998 +#: cups/ppd-cache.c:2982 msgid "Half Z Fold" msgstr "" @@ -4560,15 +4560,15 @@ msgstr "" msgid "Hash buffer too small." msgstr "" -#: cups/ppd-cache.c:3605 +#: cups/ppd-cache.c:3607 msgid "Heavyweight Coated Paper" msgstr "" -#: cups/ppd-cache.c:3516 +#: cups/ppd-cache.c:3518 msgid "Heavyweight Envelope" msgstr "" -#: cups/ppd-cache.c:3604 +#: cups/ppd-cache.c:3606 msgid "Heavyweight Paper" msgstr "" @@ -4576,115 +4576,115 @@ msgstr "" msgid "Help file not in index." msgstr "" -#: cups/ppd-cache.c:4126 cups/ppd-cache.c:4195 cups/ppd-cache.c:4226 +#: cups/ppd-cache.c:4128 cups/ppd-cache.c:4197 cups/ppd-cache.c:4228 msgid "High" msgstr "" -#: cups/ppd-cache.c:3525 +#: cups/ppd-cache.c:3527 msgid "High Gloss Fabric" msgstr "" -#: cups/ppd-cache.c:3550 +#: cups/ppd-cache.c:3552 msgid "High Gloss Labels" msgstr "" -#: cups/ppd-cache.c:3501 +#: cups/ppd-cache.c:3503 msgid "High Gloss Optical Disc" msgstr "" -#: cups/ppd-cache.c:3575 +#: cups/ppd-cache.c:3577 msgid "High Gloss Photo Paper" msgstr "" -#: cups/ipp.c:3097 cups/ipp.c:3124 cups/ipp.c:3147 +#: cups/ipp.c:3093 cups/ipp.c:3120 cups/ipp.c:3143 msgid "IPP 1setOf attribute with incompatible value tags." msgstr "" -#: cups/ipp.c:3060 +#: cups/ipp.c:3056 msgid "IPP attribute has no name." msgstr "" -#: cups/ipp.c:6932 +#: cups/ipp.c:6916 msgid "IPP attribute is not a member of the message." msgstr "" -#: cups/ipp.c:3510 +#: cups/ipp.c:3506 msgid "IPP begCollection value not 0 bytes." msgstr "" -#: cups/ipp.c:3288 +#: cups/ipp.c:3284 msgid "IPP boolean value not 1 byte." msgstr "" -#: cups/ipp.c:3353 +#: cups/ipp.c:3349 msgid "IPP date value not 11 bytes." msgstr "" -#: cups/ipp.c:3531 +#: cups/ipp.c:3527 msgid "IPP endCollection value not 0 bytes." msgstr "" -#: cups/ipp.c:3263 +#: cups/ipp.c:3259 msgid "IPP enum value not 4 bytes." msgstr "" -#: cups/ipp.c:2983 +#: cups/ipp.c:2979 msgid "IPP extension tag larger than 0x7FFFFFFF." msgstr "" -#: cups/ipp.c:3260 +#: cups/ipp.c:3256 msgid "IPP integer value not 4 bytes." msgstr "" -#: cups/ipp.c:3463 +#: cups/ipp.c:3459 msgid "IPP language length overflows value." msgstr "" -#: cups/ipp.c:3472 +#: cups/ipp.c:3468 msgid "IPP language length too large." msgstr "" -#: cups/ipp.c:3174 +#: cups/ipp.c:3170 msgid "IPP member name is not empty." msgstr "" -#: cups/ipp.c:3557 +#: cups/ipp.c:3553 msgid "IPP memberName value is empty." msgstr "" -#: cups/ipp.c:3549 +#: cups/ipp.c:3545 msgid "IPP memberName with no attribute." msgstr "" -#: cups/ipp.c:3043 +#: cups/ipp.c:3039 msgid "IPP name larger than 32767 bytes." msgstr "" -#: cups/ipp.c:3430 +#: cups/ipp.c:3426 msgid "IPP nameWithLanguage value less than minimum 4 bytes." msgstr "" -#: cups/ipp.c:3587 +#: cups/ipp.c:3583 msgid "IPP octetString length too large." msgstr "" -#: cups/ipp.c:3398 +#: cups/ipp.c:3394 msgid "IPP rangeOfInteger value not 8 bytes." msgstr "" -#: cups/ipp.c:3371 +#: cups/ipp.c:3367 msgid "IPP resolution value not 9 bytes." msgstr "" -#: cups/ipp.c:3490 +#: cups/ipp.c:3486 msgid "IPP string length overflows value." msgstr "" -#: cups/ipp.c:3426 +#: cups/ipp.c:3422 msgid "IPP textWithLanguage value less than minimum 4 bytes." msgstr "" -#: cups/ipp.c:3246 +#: cups/ipp.c:3242 msgid "IPP value larger than 32767 bytes." msgstr "" @@ -4692,43 +4692,43 @@ msgstr "" msgid "ISOLatin1" msgstr "" -#: cups/ppd.c:328 +#: cups/ppd.c:309 msgid "Illegal control character" msgstr "" -#: cups/ppd.c:329 +#: cups/ppd.c:310 msgid "Illegal main keyword string" msgstr "" -#: cups/ppd.c:330 +#: cups/ppd.c:311 msgid "Illegal option keyword string" msgstr "" -#: cups/ppd.c:331 +#: cups/ppd.c:312 msgid "Illegal translation string" msgstr "" -#: cups/ppd.c:332 +#: cups/ppd.c:313 msgid "Illegal whitespace character" msgstr "" -#: cups/ppd-cache.c:3541 +#: cups/ppd-cache.c:3543 msgid "Image Setter Paper" msgstr "" -#: cups/ppd-cache.c:3542 +#: cups/ppd-cache.c:3544 msgid "Imaging Cylinder" msgstr "" -#: cups/ppd-cache.c:3517 +#: cups/ppd-cache.c:3519 msgid "Inkjet Envelope" msgstr "" -#: cups/ppd-cache.c:3551 +#: cups/ppd-cache.c:3553 msgid "Inkjet Labels" msgstr "" -#: cups/ppd-cache.c:3606 +#: cups/ppd-cache.c:3608 msgid "Inkjet Paper" msgstr "" @@ -4752,7 +4752,7 @@ msgstr "" msgid "Internal Server Error" msgstr "" -#: cups/ppd.c:319 +#: cups/ppd.c:300 msgid "Internal error" msgstr "" @@ -4768,19 +4768,19 @@ msgstr "" msgid "Internet Printing Protocol" msgstr "" -#: cups/ipp.c:3003 +#: cups/ipp.c:2999 msgid "Invalid group tag." msgstr "" -#: cups/pwg-media.c:291 cups/pwg-media.c:310 +#: cups/pwg-media.c:292 cups/pwg-media.c:311 msgid "Invalid media name arguments." msgstr "" -#: cups/dest-options.c:1099 +#: cups/dest-options.c:1108 msgid "Invalid media size." msgstr "" -#: scheduler/ipp.c:2719 scheduler/ipp.c:7078 +#: scheduler/ipp.c:2716 scheduler/ipp.c:7081 msgid "Invalid ppd-name value." msgstr "" @@ -4789,7 +4789,7 @@ msgstr "" msgid "Invalid printer command \"%s\"." msgstr "" -#: cups/ppd.c:1461 +#: cups/ppd.c:1404 msgid "JCL" msgstr "" @@ -4849,52 +4849,52 @@ msgstr "" msgid "JIS B9" msgstr "" -#: scheduler/ipp.c:9342 +#: scheduler/ipp.c:9345 #, c-format msgid "Job #%d cannot be restarted - no files." msgstr "" -#: scheduler/ipp.c:3032 scheduler/ipp.c:3266 scheduler/ipp.c:3325 -#: scheduler/ipp.c:3504 scheduler/ipp.c:3950 scheduler/ipp.c:5923 -#: scheduler/ipp.c:6304 scheduler/ipp.c:6451 scheduler/ipp.c:6788 -#: scheduler/ipp.c:7748 scheduler/ipp.c:7770 scheduler/ipp.c:7948 -#: scheduler/ipp.c:8176 scheduler/ipp.c:8219 scheduler/ipp.c:9086 -#: scheduler/ipp.c:9310 scheduler/ipp.c:9662 scheduler/ipp.c:10275 +#: scheduler/ipp.c:3029 scheduler/ipp.c:3263 scheduler/ipp.c:3322 +#: scheduler/ipp.c:3501 scheduler/ipp.c:3947 scheduler/ipp.c:5926 +#: scheduler/ipp.c:6307 scheduler/ipp.c:6454 scheduler/ipp.c:6791 +#: scheduler/ipp.c:7751 scheduler/ipp.c:7773 scheduler/ipp.c:7951 +#: scheduler/ipp.c:8179 scheduler/ipp.c:8222 scheduler/ipp.c:9089 +#: scheduler/ipp.c:9313 scheduler/ipp.c:9665 scheduler/ipp.c:10278 #, c-format msgid "Job #%d does not exist." msgstr "" -#: scheduler/ipp.c:3536 +#: scheduler/ipp.c:3533 #, c-format msgid "Job #%d is already aborted - can't cancel." msgstr "" -#: scheduler/ipp.c:3530 +#: scheduler/ipp.c:3527 #, c-format msgid "Job #%d is already canceled - can't cancel." msgstr "" -#: scheduler/ipp.c:3542 +#: scheduler/ipp.c:3539 #, c-format msgid "Job #%d is already completed - can't cancel." msgstr "" -#: scheduler/ipp.c:7974 scheduler/ipp.c:8261 scheduler/ipp.c:10290 +#: scheduler/ipp.c:7977 scheduler/ipp.c:8264 scheduler/ipp.c:10293 #, c-format msgid "Job #%d is finished and cannot be altered." msgstr "" -#: scheduler/ipp.c:9324 +#: scheduler/ipp.c:9327 #, c-format msgid "Job #%d is not complete." msgstr "" -#: scheduler/ipp.c:3047 +#: scheduler/ipp.c:3044 #, c-format msgid "Job #%d is not held for authentication." msgstr "" -#: scheduler/ipp.c:9100 +#: scheduler/ipp.c:9103 #, c-format msgid "Job #%d is not held." msgstr "" @@ -4915,7 +4915,7 @@ msgstr "" msgid "Job Stopped" msgstr "" -#: scheduler/ipp.c:10404 +#: scheduler/ipp.c:10407 msgid "Job is completed and cannot be changed." msgstr "" @@ -4923,11 +4923,11 @@ msgstr "" msgid "Job operation failed" msgstr "" -#: scheduler/ipp.c:10440 scheduler/ipp.c:10457 scheduler/ipp.c:10468 +#: scheduler/ipp.c:10443 scheduler/ipp.c:10460 scheduler/ipp.c:10471 msgid "Job state cannot be changed." msgstr "" -#: scheduler/ipp.c:9190 +#: scheduler/ipp.c:9193 msgid "Job subscriptions cannot be renewed." msgstr "" @@ -4935,7 +4935,7 @@ msgstr "" msgid "Jobs" msgstr "" -#: cups/ppd-cache.c:3005 +#: cups/ppd-cache.c:2989 msgid "Jog" msgstr "" @@ -4951,19 +4951,19 @@ msgstr "" msgid "Label Top" msgstr "" -#: cups/ppd-cache.c:3547 +#: cups/ppd-cache.c:3549 msgid "Labels" msgstr "" -#: cups/ppd-cache.c:3006 +#: cups/ppd-cache.c:2990 msgid "Laminate" msgstr "" -#: cups/ppd-cache.c:3557 +#: cups/ppd-cache.c:3559 msgid "Laminating Foil" msgstr "" -#: scheduler/ipp.c:2085 scheduler/ipp.c:5827 +#: scheduler/ipp.c:2083 scheduler/ipp.c:5830 #, c-format msgid "Language \"%s\" not supported." msgstr "" @@ -4972,11 +4972,11 @@ msgstr "" msgid "Large Address" msgstr "" -#: cups/ppd-cache.c:3397 +#: cups/ppd-cache.c:3399 msgid "Large Capacity" msgstr "" -#: cups/ppd-cache.c:3806 +#: cups/ppd-cache.c:3808 msgid "Large Capacity Tray" msgstr "" @@ -4984,19 +4984,19 @@ msgstr "" msgid "LaserJet Series PCL 4/5" msgstr "" -#: cups/ppd-cache.c:3409 +#: cups/ppd-cache.c:3411 msgid "Left" msgstr "" -#: cups/ppd-cache.c:2999 +#: cups/ppd-cache.c:2983 msgid "Left Gate Fold" msgstr "" -#: cups/ppd-cache.c:3807 +#: cups/ppd-cache.c:3809 msgid "Left Tray" msgstr "" -#: cups/ppd-cache.c:3000 +#: cups/ppd-cache.c:2984 msgid "Letter Fold" msgstr "" @@ -5008,7 +5008,7 @@ msgstr "" msgid "Letter Oversize Long Edge" msgstr "" -#: cups/ppd-cache.c:3558 cups/ppd-cache.c:3607 +#: cups/ppd-cache.c:3560 cups/ppd-cache.c:3609 msgid "Letterhead" msgstr "" @@ -5016,15 +5016,15 @@ msgstr "" msgid "Light" msgstr "" -#: cups/ppd-cache.c:3518 +#: cups/ppd-cache.c:3520 msgid "Lightweight Envelope" msgstr "" -#: cups/ppd-cache.c:3608 +#: cups/ppd-cache.c:3610 msgid "Lightweight Paper" msgstr "" -#: cups/ppd.c:327 +#: cups/ppd.c:308 msgid "Line longer than the maximum allowed (255 characters)" msgstr "" @@ -5036,67 +5036,67 @@ msgstr "" msgid "Load paper." msgstr "" -#: scheduler/ipp.c:5536 +#: scheduler/ipp.c:5539 msgid "Local printer created." msgstr "" -#: cups/ppd-cache.c:3735 ppdc/sample.c:264 +#: cups/ppd-cache.c:3737 ppdc/sample.c:264 msgid "Long-Edge (Portrait)" msgstr "" -#: cups/http-support.c:1877 +#: cups/http-support.c:1874 msgid "Looking for printer." msgstr "" -#: cups/ppd-cache.c:3808 +#: cups/ppd-cache.c:3810 msgid "Mailbox 1" msgstr "" -#: cups/ppd-cache.c:3817 +#: cups/ppd-cache.c:3819 msgid "Mailbox 10" msgstr "" -#: cups/ppd-cache.c:3809 +#: cups/ppd-cache.c:3811 msgid "Mailbox 2" msgstr "" -#: cups/ppd-cache.c:3810 +#: cups/ppd-cache.c:3812 msgid "Mailbox 3" msgstr "" -#: cups/ppd-cache.c:3811 +#: cups/ppd-cache.c:3813 msgid "Mailbox 4" msgstr "" -#: cups/ppd-cache.c:3812 +#: cups/ppd-cache.c:3814 msgid "Mailbox 5" msgstr "" -#: cups/ppd-cache.c:3813 +#: cups/ppd-cache.c:3815 msgid "Mailbox 6" msgstr "" -#: cups/ppd-cache.c:3814 +#: cups/ppd-cache.c:3816 msgid "Mailbox 7" msgstr "" -#: cups/ppd-cache.c:3815 +#: cups/ppd-cache.c:3817 msgid "Mailbox 8" msgstr "" -#: cups/ppd-cache.c:3816 +#: cups/ppd-cache.c:3818 msgid "Mailbox 9" msgstr "" -#: cups/ppd-cache.c:3395 +#: cups/ppd-cache.c:3397 msgid "Main" msgstr "" -#: cups/ppd-cache.c:3403 +#: cups/ppd-cache.c:3405 msgid "Main Roll" msgstr "" -#: cups/ppd-cache.c:3398 +#: cups/ppd-cache.c:3400 msgid "Manual" msgstr "" @@ -5104,35 +5104,35 @@ msgstr "" msgid "Manual Feed" msgstr "" -#: cups/ppd-cache.c:3485 +#: cups/ppd-cache.c:3487 msgid "Matte Brochure Paper" msgstr "" -#: cups/ppd-cache.c:3486 +#: cups/ppd-cache.c:3488 msgid "Matte Cover Paper" msgstr "" -#: cups/ppd-cache.c:3526 +#: cups/ppd-cache.c:3528 msgid "Matte Fabric" msgstr "" -#: cups/ppd-cache.c:3552 +#: cups/ppd-cache.c:3554 msgid "Matte Labels" msgstr "" -#: cups/ppd-cache.c:3502 +#: cups/ppd-cache.c:3504 msgid "Matte Optical Disc" msgstr "" -#: cups/ppd-cache.c:3576 +#: cups/ppd-cache.c:3578 msgid "Matte Photo Paper" msgstr "" -#: cups/ppd.c:832 cups/ppd.c:1398 +#: cups/ppd.c:811 cups/ppd.c:1341 msgid "Media Size" msgstr "" -#: cups/ppd.c:836 cups/ppd.c:1402 ppdc/sample.c:254 +#: cups/ppd.c:815 cups/ppd.c:1345 ppdc/sample.c:254 msgid "Media Source" msgstr "" @@ -5140,7 +5140,7 @@ msgstr "" msgid "Media Tracking" msgstr "" -#: cups/ppd.c:834 cups/ppd.c:1400 ppdc/sample.c:280 +#: cups/ppd.c:813 cups/ppd.c:1343 ppdc/sample.c:280 msgid "Media Type" msgstr "" @@ -5148,59 +5148,59 @@ msgstr "" msgid "Medium" msgstr "" -#: cups/ppd.c:316 +#: cups/ppd.c:297 msgid "Memory allocation error" msgstr "" -#: cups/ppd-cache.c:3559 +#: cups/ppd-cache.c:3561 msgid "Metal" msgstr "" -#: cups/ppd-cache.c:3560 +#: cups/ppd-cache.c:3562 msgid "Metal Glossy" msgstr "" -#: cups/ppd-cache.c:3561 +#: cups/ppd-cache.c:3563 msgid "Metal High Gloss" msgstr "" -#: cups/ppd-cache.c:3562 +#: cups/ppd-cache.c:3564 msgid "Metal Matte" msgstr "" -#: cups/ppd-cache.c:3563 +#: cups/ppd-cache.c:3565 msgid "Metal Satin" msgstr "" -#: cups/ppd-cache.c:3564 +#: cups/ppd-cache.c:3566 msgid "Metal Semi Gloss" msgstr "" -#: cups/ppd-cache.c:3492 +#: cups/ppd-cache.c:3494 msgid "Mid-Weight Paper" msgstr "" -#: cups/ppd-cache.c:3406 cups/ppd-cache.c:3818 +#: cups/ppd-cache.c:3408 cups/ppd-cache.c:3820 msgid "Middle" msgstr "" -#: cups/ppd.c:336 +#: cups/ppd.c:317 msgid "Missing CloseGroup" msgstr "" -#: cups/ppd.c:338 +#: cups/ppd.c:319 msgid "Missing CloseUI/JCLCloseUI" msgstr "" -#: cups/ppd.c:317 +#: cups/ppd.c:298 msgid "Missing PPD-Adobe-4.x header" msgstr "" -#: cups/ppd.c:326 +#: cups/ppd.c:307 msgid "Missing asterisk in column 1" msgstr "" -#: scheduler/ipp.c:6327 +#: scheduler/ipp.c:6330 msgid "Missing document-number attribute." msgstr "" @@ -5215,36 +5215,36 @@ msgstr "" msgid "Missing form variable" msgstr "" -#: scheduler/ipp.c:9716 +#: scheduler/ipp.c:9719 msgid "Missing last-document attribute in request." msgstr "" -#: cups/pwg-media.c:550 +#: cups/pwg-media.c:551 msgid "Missing media or media-col." msgstr "" -#: cups/pwg-media.c:469 +#: cups/pwg-media.c:470 msgid "Missing media-size in media-col." msgstr "" -#: scheduler/ipp.c:6928 +#: scheduler/ipp.c:6931 msgid "Missing notify-subscription-ids attribute." msgstr "" -#: cups/ppd.c:334 +#: cups/ppd.c:315 msgid "Missing option keyword" msgstr "" -#: scheduler/ipp.c:3173 scheduler/ipp.c:3198 +#: scheduler/ipp.c:3170 scheduler/ipp.c:3195 msgid "Missing requesting-user-name attribute." msgstr "" -#: scheduler/ipp.c:5453 scheduler/ipp.c:5479 +#: scheduler/ipp.c:5456 scheduler/ipp.c:5482 #, c-format msgid "Missing required attribute \"%s\"." msgstr "" -#: scheduler/ipp.c:359 +#: scheduler/ipp.c:357 msgid "Missing required attributes." msgstr "" @@ -5261,15 +5261,15 @@ msgstr "" msgid "Missing value on line %d." msgstr "" -#: cups/ppd.c:318 +#: cups/ppd.c:299 msgid "Missing value string" msgstr "" -#: cups/pwg-media.c:457 +#: cups/pwg-media.c:458 msgid "Missing x-dimension in media-size." msgstr "" -#: cups/pwg-media.c:463 +#: cups/pwg-media.c:464 msgid "Missing y-dimension in media-size." msgstr "" @@ -5294,7 +5294,7 @@ msgstr "" msgid "Modify Printer" msgstr "" -#: cups/ppd-cache.c:3565 +#: cups/ppd-cache.c:3567 msgid "Mounting Tape" msgstr "" @@ -5310,43 +5310,43 @@ msgstr "" msgid "Moved Permanently" msgstr "" -#: cups/ppd-cache.c:3566 +#: cups/ppd-cache.c:3568 msgid "Multi Layer" msgstr "" -#: cups/ppd-cache.c:3567 +#: cups/ppd-cache.c:3569 msgid "Multi Part Form" msgstr "" -#: cups/ppd-cache.c:3027 +#: cups/ppd-cache.c:3011 msgid "Multi-Hole Punch (Landscape)" msgstr "" -#: cups/ppd-cache.c:3025 +#: cups/ppd-cache.c:3009 msgid "Multi-Hole Punch (Portrait)" msgstr "" -#: cups/ppd-cache.c:3024 +#: cups/ppd-cache.c:3008 msgid "Multi-Hole Punch (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:3026 +#: cups/ppd-cache.c:3010 msgid "Multi-Hole Punch (Reverse Portrait)" msgstr "" -#: cups/ppd-cache.c:3413 +#: cups/ppd-cache.c:3415 msgid "Multipurpose" msgstr "" -#: cups/ppd-cache.c:3491 +#: cups/ppd-cache.c:3493 msgid "Multipurpose Paper" msgstr "" -#: cups/ppd-cache.c:3819 +#: cups/ppd-cache.c:3821 msgid "My Mailbox" msgstr "" -#: cups/ppd.c:315 +#: cups/ppd.c:296 msgid "NULL PPD file pointer" msgstr "" @@ -5354,7 +5354,7 @@ msgstr "" msgid "Name OID uses indefinite length" msgstr "" -#: scheduler/ipp.c:1066 +#: scheduler/ipp.c:1064 msgid "Nested classes are not allowed." msgstr "" @@ -5362,15 +5362,15 @@ msgstr "" msgid "Never" msgstr "" -#: cups/tls-darwin.c:672 cups/tls-gnutls.c:504 +#: cups/tls-darwin.c:672 cups/tls-gnutls.c:529 msgid "New credentials are not valid for name." msgstr "" -#: cups/tls-darwin.c:662 cups/tls-gnutls.c:494 +#: cups/tls-darwin.c:662 cups/tls-gnutls.c:519 msgid "New credentials are older than stored credentials." msgstr "" -#: cups/ppd.c:2010 +#: cups/ppd.c:1953 msgid "No" msgstr "" @@ -5378,7 +5378,7 @@ msgstr "" msgid "No Content" msgstr "" -#: cups/ppd-cache.c:3061 +#: cups/ppd-cache.c:3045 msgid "No IPP attributes." msgstr "" @@ -5402,20 +5402,20 @@ msgstr "" msgid "No active connection." msgstr "" -#: scheduler/ipp.c:3453 +#: scheduler/ipp.c:3450 #, c-format msgid "No active jobs on %s." msgstr "" -#: scheduler/ipp.c:219 +#: scheduler/ipp.c:217 msgid "No attributes in request." msgstr "" -#: scheduler/ipp.c:3074 +#: scheduler/ipp.c:3071 msgid "No authentication information provided." msgstr "" -#: cups/tls-darwin.c:612 cups/tls-gnutls.c:441 +#: cups/tls-darwin.c:612 cups/tls-gnutls.c:466 msgid "No common name specified." msgstr "" @@ -5423,11 +5423,11 @@ msgstr "" msgid "No community name" msgstr "" -#: scheduler/ipp.c:6127 +#: scheduler/ipp.c:6130 msgid "No default printer." msgstr "" -#: cgi-bin/ipp-var.c:422 scheduler/ipp.c:7508 +#: cgi-bin/ipp-var.c:422 scheduler/ipp.c:7511 msgid "No destinations added." msgstr "" @@ -5443,7 +5443,7 @@ msgstr "" msgid "No error-status" msgstr "" -#: scheduler/ipp.c:8466 scheduler/ipp.c:9730 +#: scheduler/ipp.c:8469 scheduler/ipp.c:9733 msgid "No file in print request." msgstr "" @@ -5472,15 +5472,15 @@ msgstr "" msgid "No printer-uri found for class" msgstr "" -#: scheduler/ipp.c:6534 +#: scheduler/ipp.c:6537 msgid "No printer-uri in request." msgstr "" -#: cups/http.c:2245 +#: cups/http.c:2257 msgid "No request URI." msgstr "" -#: cups/http.c:2262 +#: cups/http.c:2274 msgid "No request protocol version." msgstr "" @@ -5492,15 +5492,15 @@ msgstr "" msgid "No request-id" msgstr "" -#: cups/tls-darwin.c:692 cups/tls-gnutls.c:524 +#: cups/tls-darwin.c:692 cups/tls-gnutls.c:549 msgid "No stored credentials, not valid for name." msgstr "" -#: scheduler/ipp.c:5712 +#: scheduler/ipp.c:5715 msgid "No subscription attributes in request." msgstr "" -#: scheduler/ipp.c:7847 +#: scheduler/ipp.c:7850 msgid "No subscriptions found." msgstr "" @@ -5520,11 +5520,11 @@ msgstr "" msgid "Non-continuous (Web sensing)" msgstr "" -#: cups/ppd-cache.c:3923 cups/ppd-cache.c:3973 cups/ppd-cache.c:4023 +#: cups/ppd-cache.c:3925 cups/ppd-cache.c:3975 cups/ppd-cache.c:4025 msgid "None" msgstr "" -#: cups/ppd-cache.c:4123 cups/ppd-cache.c:4189 cups/ppd-cache.c:4223 +#: cups/ppd-cache.c:4125 cups/ppd-cache.c:4191 cups/ppd-cache.c:4225 #: ppdc/sample.c:238 msgid "Normal" msgstr "" @@ -5549,7 +5549,7 @@ msgstr "" msgid "Not Supported" msgstr "" -#: scheduler/ipp.c:1520 scheduler/ipp.c:11001 +#: scheduler/ipp.c:1518 scheduler/ipp.c:11004 msgid "Not allowed to print." msgstr "" @@ -5561,15 +5561,15 @@ msgstr "" msgid "Note: this program only validates the DSC comments, not the PostScript itself." msgstr "" -#: cups/http-support.c:1492 cups/http-support.c:1631 cups/ppd.c:313 +#: cups/http-support.c:1492 cups/http-support.c:1631 cups/ppd.c:294 msgid "OK" msgstr "" -#: cups/ppd-cache.c:3735 ppdc/sample.c:263 +#: cups/ppd-cache.c:3737 ppdc/sample.c:263 msgid "Off (1-Sided)" msgstr "" -#: cups/ppd-cache.c:3487 +#: cups/ppd-cache.c:3489 msgid "Office Recycled Paper" msgstr "" @@ -5581,7 +5581,7 @@ msgstr "" msgid "Online Help" msgstr "" -#: scheduler/ipp.c:5432 +#: scheduler/ipp.c:5435 msgid "Only local users can create a local printer." msgstr "" @@ -5590,11 +5590,11 @@ msgstr "" msgid "Open of %s failed: %s" msgstr "" -#: cups/ppd.c:321 +#: cups/ppd.c:302 msgid "OpenGroup without a CloseGroup first" msgstr "" -#: cups/ppd.c:323 +#: cups/ppd.c:304 msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first" msgstr "" @@ -5602,11 +5602,11 @@ msgstr "" msgid "Operation Policy" msgstr "" -#: cups/ppd-cache.c:3499 +#: cups/ppd-cache.c:3501 msgid "Optical Disc" msgstr "" -#: filter/pstops.c:2180 +#: filter/pstops.c:2179 #, c-format msgid "Option \"%s\" cannot be included via %%%%IncludeFeature." msgstr "" @@ -5615,15 +5615,15 @@ msgstr "" msgid "Options Installed" msgstr "" -#: scheduler/cupsfilter.c:1480 scheduler/main.c:2103 systemv/cupsaddsmb.c:276 -#: systemv/cupsctl.c:196 systemv/cupstestdsc.c:421 systemv/cupstestppd.c:3859 +#: scheduler/cupsfilter.c:1480 scheduler/main.c:2097 systemv/cupsaddsmb.c:276 +#: systemv/cupsctl.c:237 systemv/cupstestdsc.c:421 systemv/cupstestppd.c:3859 #: 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/ppdhtml.cxx:177 ppdc/ppdi.cxx:123 ppdc/ppdmerge.cxx:359 #: ppdc/ppdpo.cxx:247 msgid "Options:" msgstr "" -#: cups/ppd-cache.c:3568 +#: cups/ppd-cache.c:3570 msgid "Other" msgstr "" @@ -5631,11 +5631,11 @@ msgstr "" msgid "Out of date PPD cache file." msgstr "" -#: cups/ppd-cache.c:1863 +#: cups/ppd-cache.c:1851 msgid "Out of memory." msgstr "" -#: cups/ppd.c:838 cups/ppd.c:1404 +#: cups/ppd.c:817 cups/ppd.c:1347 msgid "Output Mode" msgstr "" @@ -5691,7 +5691,7 @@ msgstr "" msgid "Packet does not start with SEQUENCE" msgstr "" -#: cups/ppd-cache.c:3569 +#: cups/ppd-cache.c:3571 msgid "Paper" msgstr "" @@ -5711,7 +5711,7 @@ msgstr "" msgid "Paper tray is missing." msgstr "" -#: cups/ppd-cache.c:3001 +#: cups/ppd-cache.c:2985 msgid "Parallel Fold" msgstr "" @@ -5723,7 +5723,7 @@ msgstr "" msgid "ParamCustominTearInterval" msgstr "" -#: cups/auth.c:222 cups/auth.c:370 +#: cups/auth.c:245 cups/auth.c:404 #, c-format msgid "Password for %s on %s? " msgstr "" @@ -5745,15 +5745,15 @@ msgstr "" msgid "Peel-Off" msgstr "" -#: cups/ppd-cache.c:3553 +#: cups/ppd-cache.c:3555 msgid "Permanent Labels" msgstr "" -#: cups/ppd-cache.c:3401 ppdc/sample.c:160 +#: cups/ppd-cache.c:3403 ppdc/sample.c:160 msgid "Photo" msgstr "" -#: cups/ppd-cache.c:3573 +#: cups/ppd-cache.c:3575 msgid "Photo Film" msgstr "" @@ -5761,59 +5761,59 @@ msgstr "" msgid "Photo Labels" msgstr "" -#: cups/ppd-cache.c:3570 cups/ppd-cache.c:3571 +#: cups/ppd-cache.c:3572 cups/ppd-cache.c:3573 msgid "Photo Paper" msgstr "" -#: cups/ppd-cache.c:3543 cups/ppd-cache.c:3545 +#: cups/ppd-cache.c:3545 cups/ppd-cache.c:3547 msgid "Photo Paper Plus Glossy II" msgstr "" -#: cups/ppd-cache.c:3544 cups/ppd-cache.c:3546 +#: cups/ppd-cache.c:3546 cups/ppd-cache.c:3548 msgid "Photo Paper Pro Platinum" msgstr "" -#: cups/ppd-cache.c:3519 +#: cups/ppd-cache.c:3521 msgid "Plain Envelope" msgstr "" -#: cups/ppd-cache.c:3599 ppdc/sample.c:281 +#: cups/ppd-cache.c:3601 ppdc/sample.c:281 msgid "Plain Paper" msgstr "" -#: cups/ppd-cache.c:3579 +#: cups/ppd-cache.c:3581 msgid "Plastic" msgstr "" -#: cups/ppd-cache.c:3580 +#: cups/ppd-cache.c:3582 msgid "Plastic Archival" msgstr "" -#: cups/ppd-cache.c:3581 +#: cups/ppd-cache.c:3583 msgid "Plastic Colored" msgstr "" -#: cups/ppd-cache.c:3582 +#: cups/ppd-cache.c:3584 msgid "Plastic Glossy" msgstr "" -#: cups/ppd-cache.c:3583 +#: cups/ppd-cache.c:3585 msgid "Plastic High Gloss" msgstr "" -#: cups/ppd-cache.c:3584 +#: cups/ppd-cache.c:3586 msgid "Plastic Matte" msgstr "" -#: cups/ppd-cache.c:3585 +#: cups/ppd-cache.c:3587 msgid "Plastic Satin" msgstr "" -#: cups/ppd-cache.c:3586 +#: cups/ppd-cache.c:3588 msgid "Plastic Semi Gloss" msgstr "" -#: cups/ppd-cache.c:3587 +#: cups/ppd-cache.c:3589 msgid "Plate" msgstr "" @@ -5821,7 +5821,7 @@ msgstr "" msgid "Policies" msgstr "" -#: cups/ppd-cache.c:3588 +#: cups/ppd-cache.c:3590 msgid "Polyester" msgstr "" @@ -5849,23 +5849,23 @@ msgstr "" msgid "Postcard Long Edge" msgstr "" -#: cups/ppd-cache.c:3002 +#: cups/ppd-cache.c:2986 msgid "Poster Fold" msgstr "" -#: cups/ppd-cache.c:3589 +#: cups/ppd-cache.c:3591 msgid "Pre Cut Tabs" msgstr "" -#: cups/ppd-cache.c:3493 +#: cups/ppd-cache.c:3495 msgid "Premium Inkjet Paper" msgstr "" -#: cups/ppd-cache.c:3494 +#: cups/ppd-cache.c:3496 msgid "Premium Photo Glossy Paper" msgstr "" -#: cups/ppd-cache.c:3495 +#: cups/ppd-cache.c:3497 msgid "Premium Presentation Matte Paper" msgstr "" @@ -5873,11 +5873,11 @@ msgstr "" msgid "Preparing to print." msgstr "" -#: cups/ppd-cache.c:3520 +#: cups/ppd-cache.c:3522 msgid "Preprinted Envelope" msgstr "" -#: cups/ppd-cache.c:3609 +#: cups/ppd-cache.c:3611 msgid "Preprinted Paper" msgstr "" @@ -5893,7 +5893,7 @@ msgstr "" msgid "Print Mode" msgstr "" -#: cups/ppd-cache.c:4117 cups/ppd-cache.c:4179 cups/ppd-cache.c:4219 +#: cups/ppd-cache.c:4119 cups/ppd-cache.c:4181 cups/ppd-cache.c:4221 msgid "Print Quality" msgstr "" @@ -5921,15 +5921,15 @@ msgstr "" msgid "Print and Tear" msgstr "" -#: backend/socket.c:409 backend/usb-unix.c:182 +#: backend/socket.c:411 backend/usb-unix.c:182 msgid "Print file sent." msgstr "" -#: backend/ipp.c:2245 +#: backend/ipp.c:2246 msgid "Print job canceled at printer." msgstr "" -#: backend/ipp.c:2237 +#: backend/ipp.c:2238 msgid "Print job too large." msgstr "" @@ -5937,7 +5937,7 @@ msgstr "" msgid "Print job was not accepted." msgstr "" -#: scheduler/ipp.c:5498 +#: scheduler/ipp.c:5501 #, c-format msgid "Printer \"%s\" already exists." msgstr "" @@ -5966,15 +5966,15 @@ msgstr "" msgid "Printer Settings" msgstr "" -#: backend/ipp.c:2240 +#: backend/ipp.c:2241 msgid "Printer cannot print supplied content." msgstr "" -#: backend/ipp.c:2243 +#: backend/ipp.c:2244 msgid "Printer cannot print with supplied options." msgstr "" -#: cups/ppd-cache.c:4248 +#: cups/ppd-cache.c:4250 msgid "Printer does not support required IPP attributes or document formats." msgstr "" @@ -5992,11 +5992,11 @@ msgstr "" msgid "Printing page %d, %u%% complete." msgstr "" -#: cups/ppd-cache.c:3007 cups/ppd-cache.c:4020 +#: cups/ppd-cache.c:2991 cups/ppd-cache.c:4022 msgid "Punch" msgstr "" -#: cups/ppd-cache.c:3610 +#: cups/ppd-cache.c:3612 msgid "Punched Paper" msgstr "" @@ -6004,7 +6004,7 @@ msgstr "" msgid "Quarto" msgstr "" -#: scheduler/ipp.c:1515 scheduler/ipp.c:10996 +#: scheduler/ipp.c:1513 scheduler/ipp.c:10999 msgid "Quota limit reached." msgstr "" @@ -6012,11 +6012,11 @@ msgstr "" msgid "Rank Owner Job File(s) Total Size" msgstr "" -#: cups/ppd-cache.c:3412 +#: cups/ppd-cache.c:3414 msgid "Rear" msgstr "" -#: cups/ppd-cache.c:3820 +#: cups/ppd-cache.c:3822 msgid "Rear Tray" msgstr "" @@ -6042,7 +6042,7 @@ msgstr "" msgid "Request Entity Too Large" msgstr "" -#: cups/ppd.c:840 cups/ppd.c:1406 ppdc/sample.c:231 +#: cups/ppd.c:819 cups/ppd.c:1349 ppdc/sample.c:231 msgid "Resolution" msgstr "" @@ -6062,59 +6062,59 @@ msgstr "" msgid "Rewind" msgstr "" -#: cups/ppd-cache.c:3410 +#: cups/ppd-cache.c:3412 msgid "Right" msgstr "" -#: cups/ppd-cache.c:3003 +#: cups/ppd-cache.c:2987 msgid "Right Gate Fold" msgstr "" -#: cups/ppd-cache.c:3821 +#: cups/ppd-cache.c:3823 msgid "Right Tray" msgstr "" -#: cups/ppd-cache.c:3590 +#: cups/ppd-cache.c:3592 msgid "Roll" msgstr "" -#: cups/ppd-cache.c:3434 +#: cups/ppd-cache.c:3436 msgid "Roll 1" msgstr "" -#: cups/ppd-cache.c:3443 +#: cups/ppd-cache.c:3445 msgid "Roll 10" msgstr "" -#: cups/ppd-cache.c:3435 +#: cups/ppd-cache.c:3437 msgid "Roll 2" msgstr "" -#: cups/ppd-cache.c:3436 +#: cups/ppd-cache.c:3438 msgid "Roll 3" msgstr "" -#: cups/ppd-cache.c:3437 +#: cups/ppd-cache.c:3439 msgid "Roll 4" msgstr "" -#: cups/ppd-cache.c:3438 +#: cups/ppd-cache.c:3440 msgid "Roll 5" msgstr "" -#: cups/ppd-cache.c:3439 +#: cups/ppd-cache.c:3441 msgid "Roll 6" msgstr "" -#: cups/ppd-cache.c:3440 +#: cups/ppd-cache.c:3442 msgid "Roll 7" msgstr "" -#: cups/ppd-cache.c:3441 +#: cups/ppd-cache.c:3443 msgid "Roll 8" msgstr "" -#: cups/ppd-cache.c:3442 +#: cups/ppd-cache.c:3444 msgid "Roll 9" msgstr "" @@ -6131,31 +6131,31 @@ msgstr "" msgid "SSL/TLS Negotiation Error" msgstr "" -#: cups/ppd-cache.c:3028 +#: cups/ppd-cache.c:3012 msgid "Saddle Stitch" msgstr "" -#: cups/ppd-cache.c:3554 +#: cups/ppd-cache.c:3556 msgid "Satin Labels" msgstr "" -#: cups/ppd-cache.c:3503 +#: cups/ppd-cache.c:3505 msgid "Satin Optical Disc" msgstr "" -#: cups/ppd-cache.c:3577 +#: cups/ppd-cache.c:3579 msgid "Satin Photo Paper" msgstr "" -#: cups/ppd-cache.c:3591 +#: cups/ppd-cache.c:3593 msgid "Screen" msgstr "" -#: cups/ppd-cache.c:3592 +#: cups/ppd-cache.c:3594 msgid "Screen Paged" msgstr "" -#: cups/ppd-cache.c:3555 +#: cups/ppd-cache.c:3557 msgid "Security Labels" msgstr "" @@ -6163,35 +6163,35 @@ msgstr "" msgid "See Other" msgstr "" -#: scheduler/ipp.c:7132 scheduler/ipp.c:7151 +#: scheduler/ipp.c:7135 scheduler/ipp.c:7154 msgid "See remote printer." msgstr "" -#: cups/ppd-cache.c:3593 +#: cups/ppd-cache.c:3595 msgid "Self Adhesive" msgstr "" -#: cups/ppd-cache.c:3594 +#: cups/ppd-cache.c:3596 msgid "Self Adhesive Film" msgstr "" -#: cups/tls-darwin.c:747 cups/tls-gnutls.c:586 +#: cups/tls-darwin.c:747 cups/tls-gnutls.c:611 msgid "Self-signed credentials are blocked." msgstr "" -#: cups/ppd-cache.c:3527 +#: cups/ppd-cache.c:3529 msgid "Semi-Gloss Fabric" msgstr "" -#: cups/ppd-cache.c:3556 +#: cups/ppd-cache.c:3558 msgid "Semi-Gloss Labels" msgstr "" -#: cups/ppd-cache.c:3504 +#: cups/ppd-cache.c:3506 msgid "Semi-Gloss Optical Disc" msgstr "" -#: cups/ppd-cache.c:3578 +#: cups/ppd-cache.c:3580 msgid "Semi-Gloss Photo Paper" msgstr "" @@ -6215,7 +6215,7 @@ msgstr "" msgid "Server Stopped" msgstr "" -#: cups/tls-darwin.c:1191 cups/tls-gnutls.c:1282 +#: cups/tls-darwin.c:1191 cups/tls-gnutls.c:1307 msgid "Server credentials not set." msgstr "" @@ -6248,63 +6248,63 @@ msgstr "" msgid "Shipping Address" msgstr "" -#: cups/ppd-cache.c:3735 ppdc/sample.c:265 +#: cups/ppd-cache.c:3737 ppdc/sample.c:265 msgid "Short-Edge (Landscape)" msgstr "" -#: cups/ppd-cache.c:3595 +#: cups/ppd-cache.c:3597 msgid "Shrink Foil" msgstr "" -#: cups/ppd-cache.c:3408 +#: cups/ppd-cache.c:3410 msgid "Side" msgstr "" -#: cups/ppd-cache.c:3822 +#: cups/ppd-cache.c:3824 msgid "Side Tray" msgstr "" -#: cups/ppd-cache.c:3596 +#: cups/ppd-cache.c:3598 msgid "Single Face" msgstr "" -#: cups/ppd-cache.c:3019 +#: cups/ppd-cache.c:3003 msgid "Single Punch (Landscape)" msgstr "" -#: cups/ppd-cache.c:3018 +#: cups/ppd-cache.c:3002 msgid "Single Punch (Portrait)" msgstr "" -#: cups/ppd-cache.c:3008 +#: cups/ppd-cache.c:2992 msgid "Single Punch (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:3009 +#: cups/ppd-cache.c:2993 msgid "Single Punch (Reverse Portrait)" msgstr "" -#: cups/ppd-cache.c:3037 +#: cups/ppd-cache.c:3021 msgid "Single Staple (Landscape)" msgstr "" -#: cups/ppd-cache.c:3036 +#: cups/ppd-cache.c:3020 msgid "Single Staple (Portrait)" msgstr "" -#: cups/ppd-cache.c:3030 +#: cups/ppd-cache.c:3014 msgid "Single Staple (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:3031 +#: cups/ppd-cache.c:3015 msgid "Single Staple (Reverse Portrait)" msgstr "" -#: cups/ppd-cache.c:3597 +#: cups/ppd-cache.c:3599 msgid "Single Wall Cardboard" msgstr "" -#: cups/ppd-cache.c:3598 +#: cups/ppd-cache.c:3600 msgid "Sleeve" msgstr "" @@ -6317,43 +6317,43 @@ msgstr "" msgid "Spooling job, %.0f%% complete." msgstr "" -#: cups/ppd-cache.c:3823 +#: cups/ppd-cache.c:3825 msgid "Stacker 1" msgstr "" -#: cups/ppd-cache.c:3832 +#: cups/ppd-cache.c:3834 msgid "Stacker 10" msgstr "" -#: cups/ppd-cache.c:3824 +#: cups/ppd-cache.c:3826 msgid "Stacker 2" msgstr "" -#: cups/ppd-cache.c:3825 +#: cups/ppd-cache.c:3827 msgid "Stacker 3" msgstr "" -#: cups/ppd-cache.c:3826 +#: cups/ppd-cache.c:3828 msgid "Stacker 4" msgstr "" -#: cups/ppd-cache.c:3827 +#: cups/ppd-cache.c:3829 msgid "Stacker 5" msgstr "" -#: cups/ppd-cache.c:3828 +#: cups/ppd-cache.c:3830 msgid "Stacker 6" msgstr "" -#: cups/ppd-cache.c:3829 +#: cups/ppd-cache.c:3831 msgid "Stacker 7" msgstr "" -#: cups/ppd-cache.c:3830 +#: cups/ppd-cache.c:3832 msgid "Stacker 8" msgstr "" -#: cups/ppd-cache.c:3831 +#: cups/ppd-cache.c:3833 msgid "Stacker 9" msgstr "" @@ -6361,27 +6361,27 @@ msgstr "" msgid "Standard" msgstr "" -#: cups/ppd-cache.c:3029 cups/ppd-cache.c:3920 +#: cups/ppd-cache.c:3013 cups/ppd-cache.c:3922 msgid "Staple" msgstr "" -#: cups/ppd-cache.c:2987 +#: cups/ppd-cache.c:2971 msgid "Staple Edge" msgstr "" -#: cups/ppd-cache.c:2991 +#: cups/ppd-cache.c:2975 msgid "Staple Edge (Landscape)" msgstr "" -#: cups/ppd-cache.c:2989 +#: cups/ppd-cache.c:2973 msgid "Staple Edge (Portrait)" msgstr "" -#: cups/ppd-cache.c:2988 +#: cups/ppd-cache.c:2972 msgid "Staple Edge (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:2990 +#: cups/ppd-cache.c:2974 msgid "Staple Edge (Reverse Portrait)" msgstr "" @@ -6400,8 +6400,8 @@ msgstr "" msgid "Statement" msgstr "" -#: scheduler/ipp.c:3599 scheduler/ipp.c:6944 scheduler/ipp.c:7654 -#: scheduler/ipp.c:9178 +#: scheduler/ipp.c:3596 scheduler/ipp.c:6947 scheduler/ipp.c:7657 +#: scheduler/ipp.c:9181 #, c-format msgid "Subscription #%d does not exist." msgstr "" @@ -6426,7 +6426,7 @@ msgstr "" msgid "Switching Protocols" msgstr "" -#: cups/ppd-cache.c:3611 +#: cups/ppd-cache.c:3613 msgid "Tab Stock" msgstr "" @@ -6454,33 +6454,33 @@ msgstr "" msgid "Tear-Off Adjust Position" msgstr "" -#: scheduler/ipp.c:1351 +#: scheduler/ipp.c:1349 #, c-format msgid "The \"%s\" attribute is required for print jobs." msgstr "" -#: scheduler/ipp.c:6605 scheduler/ipp.c:6685 scheduler/ipp.c:6698 -#: scheduler/ipp.c:6710 scheduler/ipp.c:6725 +#: scheduler/ipp.c:6608 scheduler/ipp.c:6688 scheduler/ipp.c:6701 +#: scheduler/ipp.c:6713 scheduler/ipp.c:6728 #, c-format msgid "The %s attribute cannot be provided with job-ids." msgstr "" -#: scheduler/ipp.c:1330 +#: scheduler/ipp.c:1328 #, c-format msgid "The '%s' Job Status attribute cannot be supplied in a job creation request." msgstr "" -#: scheduler/ipp.c:5232 +#: scheduler/ipp.c:5230 #, c-format msgid "The '%s' operation attribute cannot be supplied in a Create-Job request." msgstr "" -#: scheduler/ipp.c:7174 +#: scheduler/ipp.c:7177 #, c-format msgid "The PPD file \"%s\" could not be found." msgstr "" -#: scheduler/ipp.c:7163 +#: scheduler/ipp.c:7166 #, c-format msgid "The PPD file \"%s\" could not be opened: %s" msgstr "" @@ -6510,11 +6510,11 @@ msgstr "" msgid "The fuser's temperature is low." msgstr "" -#: scheduler/ipp.c:2112 +#: scheduler/ipp.c:2110 msgid "The notify-lease-duration attribute cannot be used with job subscriptions." msgstr "" -#: scheduler/ipp.c:2095 scheduler/ipp.c:5837 +#: scheduler/ipp.c:2093 scheduler/ipp.c:5840 #, c-format msgid "The notify-user-data value is too large (%d > 63 octets)." msgstr "" @@ -6590,18 +6590,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:774 scheduler/ipp.c:1057 scheduler/ipp.c:3238 -#: scheduler/ipp.c:3419 scheduler/ipp.c:5215 scheduler/ipp.c:5671 -#: scheduler/ipp.c:6005 scheduler/ipp.c:6571 scheduler/ipp.c:7378 -#: scheduler/ipp.c:7434 scheduler/ipp.c:7760 scheduler/ipp.c:8035 -#: scheduler/ipp.c:8124 scheduler/ipp.c:8157 scheduler/ipp.c:8481 -#: scheduler/ipp.c:8888 scheduler/ipp.c:8970 scheduler/ipp.c:10144 -#: scheduler/ipp.c:10606 scheduler/ipp.c:10959 scheduler/ipp.c:11041 -#: scheduler/ipp.c:11370 +#: scheduler/ipp.c:772 scheduler/ipp.c:1055 scheduler/ipp.c:3235 +#: scheduler/ipp.c:3416 scheduler/ipp.c:5213 scheduler/ipp.c:5674 +#: scheduler/ipp.c:6008 scheduler/ipp.c:6574 scheduler/ipp.c:7381 +#: scheduler/ipp.c:7437 scheduler/ipp.c:7763 scheduler/ipp.c:8038 +#: scheduler/ipp.c:8127 scheduler/ipp.c:8160 scheduler/ipp.c:8484 +#: scheduler/ipp.c:8891 scheduler/ipp.c:8973 scheduler/ipp.c:10147 +#: scheduler/ipp.c:10609 scheduler/ipp.c:10962 scheduler/ipp.c:11044 +#: scheduler/ipp.c:11373 msgid "The printer or class does not exist." msgstr "" -#: scheduler/ipp.c:1269 +#: scheduler/ipp.c:1267 msgid "The printer or class is not shared." msgstr "" @@ -6625,20 +6625,20 @@ msgstr "" msgid "The printer's waste bin is full." msgstr "" -#: scheduler/ipp.c:880 scheduler/ipp.c:2276 +#: scheduler/ipp.c:878 scheduler/ipp.c:2274 #, c-format msgid "The printer-uri \"%s\" contains invalid characters." msgstr "" -#: scheduler/ipp.c:3215 +#: scheduler/ipp.c:3212 msgid "The printer-uri attribute is required." msgstr "" -#: scheduler/ipp.c:864 +#: scheduler/ipp.c:862 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"." msgstr "" -#: scheduler/ipp.c:2260 +#: scheduler/ipp.c:2258 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"." msgstr "" @@ -6650,12 +6650,12 @@ msgstr "" msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it." msgstr "" -#: scheduler/ipp.c:6669 +#: scheduler/ipp.c:6672 #, c-format msgid "The which-jobs value \"%s\" is not supported." msgstr "" -#: scheduler/ipp.c:5934 +#: scheduler/ipp.c:5937 msgid "There are too many subscriptions." msgstr "" @@ -6668,37 +6668,37 @@ msgstr "" msgid "Thermal Transfer Media" msgstr "" -#: scheduler/ipp.c:1509 +#: scheduler/ipp.c:1507 msgid "Too many active jobs." msgstr "" -#: scheduler/ipp.c:1403 +#: scheduler/ipp.c:1401 #, c-format msgid "Too many job-sheets values (%d > 2)." msgstr "" -#: scheduler/ipp.c:2587 +#: scheduler/ipp.c:2585 #, c-format msgid "Too many printer-state-reasons values (%d > %d)." msgstr "" -#: cups/ppd-cache.c:3405 +#: cups/ppd-cache.c:3407 msgid "Top" msgstr "" -#: cups/ppd-cache.c:3833 +#: cups/ppd-cache.c:3835 msgid "Top Tray" msgstr "" -#: cups/ppd-cache.c:3612 +#: cups/ppd-cache.c:3614 msgid "Tractor" msgstr "" -#: cups/ppd-cache.c:3613 +#: cups/ppd-cache.c:3615 msgid "Transfer" msgstr "" -#: cups/ppd-cache.c:3614 ppdc/sample.c:284 +#: cups/ppd-cache.c:3616 ppdc/sample.c:284 msgid "Transparency" msgstr "" @@ -6706,108 +6706,108 @@ msgstr "" msgid "Tray" msgstr "" -#: cups/ppd-cache.c:3414 cups/ppd-cache.c:3834 ppdc/sample.c:256 +#: cups/ppd-cache.c:3416 cups/ppd-cache.c:3836 ppdc/sample.c:256 msgid "Tray 1" msgstr "" -#: cups/ppd-cache.c:3423 cups/ppd-cache.c:3843 +#: cups/ppd-cache.c:3425 cups/ppd-cache.c:3845 msgid "Tray 10" msgstr "" -#: cups/ppd-cache.c:3424 +#: cups/ppd-cache.c:3426 msgid "Tray 11" msgstr "" -#: cups/ppd-cache.c:3425 +#: cups/ppd-cache.c:3427 msgid "Tray 12" msgstr "" -#: cups/ppd-cache.c:3426 +#: cups/ppd-cache.c:3428 msgid "Tray 13" msgstr "" -#: cups/ppd-cache.c:3427 +#: cups/ppd-cache.c:3429 msgid "Tray 14" msgstr "" -#: cups/ppd-cache.c:3428 +#: cups/ppd-cache.c:3430 msgid "Tray 15" msgstr "" -#: cups/ppd-cache.c:3429 +#: cups/ppd-cache.c:3431 msgid "Tray 16" msgstr "" -#: cups/ppd-cache.c:3430 +#: cups/ppd-cache.c:3432 msgid "Tray 17" msgstr "" -#: cups/ppd-cache.c:3431 +#: cups/ppd-cache.c:3433 msgid "Tray 18" msgstr "" -#: cups/ppd-cache.c:3432 +#: cups/ppd-cache.c:3434 msgid "Tray 19" msgstr "" -#: cups/ppd-cache.c:3415 cups/ppd-cache.c:3835 ppdc/sample.c:257 +#: cups/ppd-cache.c:3417 cups/ppd-cache.c:3837 ppdc/sample.c:257 msgid "Tray 2" msgstr "" -#: cups/ppd-cache.c:3433 +#: cups/ppd-cache.c:3435 msgid "Tray 20" msgstr "" -#: cups/ppd-cache.c:3416 cups/ppd-cache.c:3836 ppdc/sample.c:258 +#: cups/ppd-cache.c:3418 cups/ppd-cache.c:3838 ppdc/sample.c:258 msgid "Tray 3" msgstr "" -#: cups/ppd-cache.c:3417 cups/ppd-cache.c:3837 ppdc/sample.c:259 +#: cups/ppd-cache.c:3419 cups/ppd-cache.c:3839 ppdc/sample.c:259 msgid "Tray 4" msgstr "" -#: cups/ppd-cache.c:3418 cups/ppd-cache.c:3838 +#: cups/ppd-cache.c:3420 cups/ppd-cache.c:3840 msgid "Tray 5" msgstr "" -#: cups/ppd-cache.c:3419 cups/ppd-cache.c:3839 +#: cups/ppd-cache.c:3421 cups/ppd-cache.c:3841 msgid "Tray 6" msgstr "" -#: cups/ppd-cache.c:3420 cups/ppd-cache.c:3840 +#: cups/ppd-cache.c:3422 cups/ppd-cache.c:3842 msgid "Tray 7" msgstr "" -#: cups/ppd-cache.c:3421 cups/ppd-cache.c:3841 +#: cups/ppd-cache.c:3423 cups/ppd-cache.c:3843 msgid "Tray 8" msgstr "" -#: cups/ppd-cache.c:3422 cups/ppd-cache.c:3842 +#: cups/ppd-cache.c:3424 cups/ppd-cache.c:3844 msgid "Tray 9" msgstr "" -#: cups/ppd-cache.c:3041 +#: cups/ppd-cache.c:3025 msgid "Triple Staple (Landscape)" msgstr "" -#: cups/ppd-cache.c:3039 +#: cups/ppd-cache.c:3023 msgid "Triple Staple (Portrait)" msgstr "" -#: cups/ppd-cache.c:3038 +#: cups/ppd-cache.c:3022 msgid "Triple Staple (Reverse Landscape)" msgstr "" -#: cups/ppd-cache.c:3040 +#: cups/ppd-cache.c:3024 msgid "Triple Staple (Reverse Portrait)" msgstr "" -#: cups/ppd-cache.c:3615 +#: cups/ppd-cache.c:3617 msgid "Triple Wall Cardboard" msgstr "" -#: cups/tls-darwin.c:652 cups/tls-darwin.c:734 cups/tls-gnutls.c:484 -#: cups/tls-gnutls.c:566 +#: cups/tls-darwin.c:652 cups/tls-darwin.c:734 cups/tls-gnutls.c:509 +#: cups/tls-gnutls.c:591 msgid "Trust on first use is disabled." msgstr "" @@ -6875,7 +6875,7 @@ msgstr "" msgid "Unable to add document to print job." msgstr "" -#: scheduler/ipp.c:1584 +#: scheduler/ipp.c:1582 #, c-format msgid "Unable to add job for destination \"%s\"." msgstr "" @@ -6884,15 +6884,15 @@ msgstr "" msgid "Unable to add printer" msgstr "" -#: scheduler/ipp.c:1187 +#: scheduler/ipp.c:1185 msgid "Unable to allocate memory for file types." msgstr "" -#: filter/pstops.c:421 +#: filter/pstops.c:420 msgid "Unable to allocate memory for page info" msgstr "" -#: filter/pstops.c:415 +#: filter/pstops.c:414 msgid "Unable to allocate memory for pages array" msgstr "" @@ -6900,7 +6900,7 @@ msgstr "" msgid "Unable to cancel RSS subscription" msgstr "" -#: backend/ipp.c:2150 backend/ipp.c:2682 +#: backend/ipp.c:2150 backend/ipp.c:2683 msgid "Unable to cancel print job." msgstr "" @@ -6916,12 +6916,12 @@ msgstr "" msgid "Unable to change server settings" msgstr "" -#: cups/ipp.c:5303 +#: cups/ipp.c:5287 #, c-format msgid "Unable to compile mimeMediaType regular expression: %s." msgstr "" -#: cups/ipp.c:5249 +#: cups/ipp.c:5233 #, c-format msgid "Unable to compile naturalLanguage regular expression: %s." msgstr "" @@ -6954,12 +6954,12 @@ msgstr "" msgid "Unable to copy CUPS printer driver files (%d)." msgstr "" -#: scheduler/ipp.c:2690 +#: scheduler/ipp.c:2687 #, c-format msgid "Unable to copy PPD file - %s" msgstr "" -#: scheduler/ipp.c:2735 +#: scheduler/ipp.c:2732 msgid "Unable to copy PPD file." msgstr "" @@ -6973,7 +6973,7 @@ msgstr "" msgid "Unable to copy Windows 9x printer driver files (%d)." msgstr "" -#: cups/tls-darwin.c:618 cups/tls-gnutls.c:447 +#: cups/tls-darwin.c:618 cups/tls-gnutls.c:472 msgid "Unable to create credentials from array." msgstr "" @@ -6981,11 +6981,11 @@ msgstr "" msgid "Unable to create printer-uri" msgstr "" -#: scheduler/ipp.c:5508 +#: scheduler/ipp.c:5511 msgid "Unable to create printer." msgstr "" -#: cups/tls-darwin.c:1484 cups/tls-gnutls.c:1494 +#: cups/tls-darwin.c:1484 cups/tls-gnutls.c:1519 msgid "Unable to create server credentials." msgstr "" @@ -7045,7 +7045,7 @@ msgstr "" msgid "Unable to find destination for job" msgstr "" -#: cups/http-support.c:2101 +#: cups/http-support.c:2098 msgid "Unable to find printer." msgstr "" @@ -7053,7 +7053,7 @@ msgstr "" msgid "Unable to find server credentials." msgstr "" -#: backend/ipp.c:3345 +#: backend/ipp.c:3346 msgid "Unable to get backend exit status." msgstr "" @@ -7125,7 +7125,7 @@ msgstr "" msgid "Unable to move jobs" msgstr "" -#: cgi-bin/admin.c:3171 cups/ppd.c:314 +#: cgi-bin/admin.c:3171 cups/ppd.c:295 msgid "Unable to open PPD file" msgstr "" @@ -7137,7 +7137,7 @@ msgstr "" msgid "Unable to open device file" msgstr "" -#: scheduler/ipp.c:6348 +#: scheduler/ipp.c:6351 #, c-format msgid "Unable to open document #%d in job #%d." msgstr "" @@ -7148,7 +7148,7 @@ msgstr "" #: backend/ipp.c:386 backend/ipp.c:1605 backend/ipp.c:1818 backend/lpd.c:479 #: backend/socket.c:147 backend/usb.c:229 filter/gziptoany.c:71 -#: filter/pstops.c:268 +#: filter/pstops.c:267 msgid "Unable to open print file" msgstr "" @@ -7166,7 +7166,7 @@ msgstr "" msgid "Unable to read print data." msgstr "" -#: scheduler/ipp.c:8640 scheduler/ipp.c:9883 +#: scheduler/ipp.c:8643 scheduler/ipp.c:9886 msgid "Unable to rename job document file." msgstr "" @@ -7179,7 +7179,7 @@ msgstr "" msgid "Unable to run \"%s\": %s" msgstr "" -#: filter/pstops.c:533 +#: filter/pstops.c:532 msgid "Unable to see in file" msgstr "" @@ -7204,7 +7204,7 @@ msgstr "" msgid "Unable to set server default" msgstr "" -#: backend/ipp.c:3204 backend/ipp.c:3281 backend/ipp.c:3289 +#: backend/ipp.c:3205 backend/ipp.c:3282 backend/ipp.c:3290 msgid "Unable to start backend process." msgstr "" @@ -7233,11 +7233,11 @@ msgstr "" msgid "Units" msgstr "" -#: cups/http-support.c:1560 cups/http-support.c:1644 cups/ppd.c:343 +#: cups/http-support.c:1560 cups/http-support.c:1644 cups/ppd.c:324 msgid "Unknown" msgstr "" -#: filter/pstops.c:2188 +#: filter/pstops.c:2187 #, c-format msgid "Unknown choice \"%s\" for option \"%s\"." msgstr "" @@ -7261,7 +7261,7 @@ msgstr "" msgid "Unknown hash algorithm." msgstr "" -#: cups/dest-options.c:1024 +#: cups/dest-options.c:1033 msgid "Unknown media size name." msgstr "" @@ -7270,7 +7270,7 @@ msgstr "" msgid "Unknown option \"%s\" with value \"%s\"." msgstr "" -#: filter/pstops.c:2171 +#: filter/pstops.c:2170 #, c-format msgid "Unknown option \"%s\"." msgstr "" @@ -7280,21 +7280,21 @@ msgstr "" msgid "Unknown print mode: \"%s\"." msgstr "" -#: scheduler/ipp.c:10828 +#: scheduler/ipp.c:10831 #, c-format msgid "Unknown printer-error-policy \"%s\"." msgstr "" -#: scheduler/ipp.c:10811 +#: scheduler/ipp.c:10814 #, c-format msgid "Unknown printer-op-policy \"%s\"." msgstr "" -#: cups/http.c:2294 +#: cups/http.c:2306 msgid "Unknown request method." msgstr "" -#: cups/http.c:2314 +#: cups/http.c:2326 msgid "Unknown request version." msgstr "" @@ -7302,7 +7302,7 @@ msgstr "" msgid "Unknown scheme in URI" msgstr "" -#: cups/http-addrlist.c:822 +#: cups/http-addrlist.c:824 msgid "Unknown service name." msgstr "" @@ -7311,68 +7311,68 @@ msgstr "" msgid "Unknown version option value: \"%s\"." msgstr "" -#: scheduler/ipp.c:11287 +#: scheduler/ipp.c:11290 #, c-format msgid "Unsupported 'compression' value \"%s\"." msgstr "" -#: scheduler/ipp.c:11317 +#: scheduler/ipp.c:11320 #, c-format msgid "Unsupported 'document-format' value \"%s\"." msgstr "" -#: scheduler/ipp.c:7987 scheduler/ipp.c:10370 scheduler/ipp.c:11331 +#: scheduler/ipp.c:7990 scheduler/ipp.c:10373 scheduler/ipp.c:11334 msgid "Unsupported 'job-hold-until' value." msgstr "" -#: scheduler/ipp.c:11347 +#: scheduler/ipp.c:11350 msgid "Unsupported 'job-name' value." msgstr "" -#: scheduler/ipp.c:310 +#: scheduler/ipp.c:308 #, c-format msgid "Unsupported character set \"%s\"." msgstr "" -#: scheduler/ipp.c:8447 scheduler/ipp.c:9695 +#: scheduler/ipp.c:8450 scheduler/ipp.c:9698 #, c-format msgid "Unsupported compression \"%s\"." msgstr "" -#: scheduler/ipp.c:8583 scheduler/ipp.c:9848 +#: scheduler/ipp.c:8586 scheduler/ipp.c:9851 #, c-format msgid "Unsupported document-format \"%s\"." msgstr "" -#: scheduler/ipp.c:9831 +#: scheduler/ipp.c:9834 #, c-format msgid "Unsupported document-format \"%s/%s\"." msgstr "" -#: scheduler/ipp.c:1369 +#: scheduler/ipp.c:1367 #, c-format msgid "Unsupported format \"%s\"." msgstr "" -#: scheduler/ipp.c:1467 +#: scheduler/ipp.c:1465 msgid "Unsupported margins." msgstr "" -#: cups/pwg-media.c:544 +#: cups/pwg-media.c:545 msgid "Unsupported media value." msgstr "" -#: filter/pstops.c:2453 +#: filter/pstops.c:2452 #, c-format msgid "Unsupported number-up value %d, using number-up=1." msgstr "" -#: filter/pstops.c:2487 +#: filter/pstops.c:2486 #, c-format msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb." msgstr "" -#: filter/pstops.c:2538 +#: filter/pstops.c:2537 #, c-format msgid "Unsupported page-border value %s, using page-border=none." msgstr "" @@ -7404,7 +7404,7 @@ msgstr "" #: backend/dnssd.c:225 backend/ipp.c:334 backend/lpd.c:178 #: backend/socket.c:124 backend/usb.c:175 filter/commandtops.c:61 -#: filter/gziptoany.c:44 filter/pstops.c:229 monitor/bcp.c:54 +#: filter/gziptoany.c:44 filter/pstops.c:228 monitor/bcp.c:54 #: monitor/tbcp.c:53 #, c-format msgid "Usage: %s job-id user title copies options [file]" @@ -7414,11 +7414,11 @@ msgstr "" msgid "Usage: cupsaddsmb [options] printer1 ... printerN" msgstr "" -#: systemv/cupsctl.c:193 +#: systemv/cupsctl.c:234 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]" msgstr "" -#: scheduler/main.c:2102 +#: scheduler/main.c:2096 msgid "Usage: cupsd [options]" msgstr "" @@ -7450,7 +7450,7 @@ msgstr "" msgid "Usage: lpmove job/src dest" msgstr "" -#: systemv/lpoptions.c:523 +#: systemv/lpoptions.c:536 msgid "" "Usage: lpoptions [-h server] [-E] -d printer\n" " lpoptions [-h server] [-E] [-p printer] -l\n" @@ -7474,7 +7474,7 @@ msgstr "" msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]" msgstr "" -#: ppdc/ppdmerge.cxx:359 +#: ppdc/ppdmerge.cxx:357 msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]" msgstr "" @@ -7494,7 +7494,7 @@ msgstr "" msgid "VarBind uses indefinite length" msgstr "" -#: cups/ppd-cache.c:3603 +#: cups/ppd-cache.c:3605 msgid "Vellum Paper" msgstr "" @@ -7510,7 +7510,7 @@ msgstr "" msgid "Waiting for printer to become available." msgstr "" -#: backend/socket.c:420 +#: backend/socket.c:422 msgid "Waiting for printer to finish." msgstr "" @@ -7518,7 +7518,7 @@ msgstr "" msgid "Warning, no Windows 2000 printer drivers are installed." msgstr "" -#: cups/ppd-cache.c:3528 +#: cups/ppd-cache.c:3530 msgid "Waterproof Fabric" msgstr "" @@ -7526,15 +7526,15 @@ msgstr "" msgid "Web Interface is Disabled" msgstr "" -#: cups/ppd-cache.c:3616 +#: cups/ppd-cache.c:3618 msgid "Wet Film" msgstr "" -#: cups/ppd-cache.c:3521 +#: cups/ppd-cache.c:3523 msgid "Windowed Envelope" msgstr "" -#: cups/ppd.c:2008 +#: cups/ppd.c:1951 msgid "Yes" msgstr "" @@ -7543,7 +7543,7 @@ msgstr "" msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>." msgstr "" -#: cups/ppd-cache.c:3004 +#: cups/ppd-cache.c:2988 msgid "Z Fold" msgstr "" @@ -7567,11 +7567,11 @@ msgstr "" msgid "completed" msgstr "" -#: scheduler/ipp.c:6220 +#: scheduler/ipp.c:6223 msgid "cups-deviced failed to execute." msgstr "" -#: scheduler/ipp.c:7106 scheduler/ipp.c:7345 +#: scheduler/ipp.c:7109 scheduler/ipp.c:7348 msgid "cups-driverd failed to execute." msgstr "" @@ -7580,21 +7580,22 @@ msgstr "" msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "" -#: systemv/cupsctl.c:134 -msgid "cupsctl: Cannot set Listen or Port directly." +#: systemv/cupsctl.c:173 +#, c-format +msgid "cupsctl: Cannot set %s directly." msgstr "" -#: systemv/cupsctl.c:145 +#: systemv/cupsctl.c:186 #, c-format msgid "cupsctl: Unable to connect to server: %s" msgstr "" -#: systemv/cupsctl.c:188 +#: systemv/cupsctl.c:229 #, c-format msgid "cupsctl: Unknown option \"%s\"" msgstr "" -#: systemv/cupsctl.c:190 +#: systemv/cupsctl.c:231 #, c-format msgid "cupsctl: Unknown option \"-%c\"" msgstr "" @@ -7836,7 +7837,7 @@ msgstr "" msgid "ipptool: Unknown option \"-%c\"." msgstr "" -#: scheduler/ipp.c:8113 +#: scheduler/ipp.c:8116 msgid "job-printer-uri attribute missing." msgstr "" @@ -7944,7 +7945,7 @@ msgstr "" msgid "lpadmin: Unable to connect to server: %s" msgstr "" -#: systemv/lpadmin.c:1460 +#: systemv/lpadmin.c:1461 msgid "lpadmin: Unable to create temporary file" msgstr "" @@ -7959,7 +7960,7 @@ msgstr "" msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d." msgstr "" -#: systemv/lpadmin.c:1472 +#: systemv/lpadmin.c:1473 #, c-format msgid "lpadmin: Unable to open PPD file \"%s\" - %s" msgstr "" @@ -8050,12 +8051,12 @@ msgstr "" msgid "lpoptions: Unable to add printer or instance: %s" msgstr "" -#: systemv/lpoptions.c:491 +#: systemv/lpoptions.c:493 systemv/lpoptions.c:502 #, c-format msgid "lpoptions: Unable to get PPD file for %s: %s" msgstr "" -#: systemv/lpoptions.c:499 +#: systemv/lpoptions.c:512 #, c-format msgid "lpoptions: Unable to open PPD file for %s." msgstr "" @@ -8082,16 +8083,16 @@ msgstr "" msgid "no system default destination" msgstr "" -#: scheduler/ipp.c:5905 +#: scheduler/ipp.c:5908 msgid "notify-events not specified." msgstr "" -#: scheduler/ipp.c:2049 scheduler/ipp.c:5791 +#: scheduler/ipp.c:2047 scheduler/ipp.c:5794 #, c-format msgid "notify-recipient-uri URI \"%s\" is already used." msgstr "" -#: scheduler/ipp.c:2039 scheduler/ipp.c:5781 +#: scheduler/ipp.c:2037 scheduler/ipp.c:5784 #, c-format msgid "notify-recipient-uri URI \"%s\" uses unknown scheme." msgstr "" @@ -8558,17 +8559,17 @@ msgstr "" msgid "ppdc: Writing PPD files to directory \"%s\"." msgstr "" -#: ppdc/ppdmerge.cxx:128 +#: ppdc/ppdmerge.cxx:129 #, c-format msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s." msgstr "" -#: ppdc/ppdmerge.cxx:168 +#: ppdc/ppdmerge.cxx:166 #, c-format msgid "ppdmerge: Ignoring PPD file %s." msgstr "" -#: ppdc/ppdmerge.cxx:152 +#: ppdc/ppdmerge.cxx:150 #, c-format msgid "ppdmerge: Unable to backup %s to %s - %s" msgstr "" diff --git a/locale/cups.strings b/locale/cups.strings index 6a708f2..0c484f3 100644 --- a/locale/cups.strings +++ b/locale/cups.strings @@ -1722,7 +1722,7 @@ "cups-deviced failed to execute." = "cups-deviced failed to execute."; "cups-driverd failed to execute." = "cups-driverd failed to execute."; "cupsaddsmb: No PPD file for printer \"%s\" - %s" = "cupsaddsmb: No PPD file for printer “%s” - %s"; -"cupsctl: Cannot set Listen or Port directly." = "cupsctl: Cannot set Listen or Port directly."; +"cupsctl: Cannot set %s directly." = "cupsctl: Cannot set %s directly."; "cupsctl: Unable to connect to server: %s" = "cupsctl: Unable to connect to server: %s"; "cupsctl: Unknown option \"%s\"" = "cupsctl: Unknown option “%s”"; "cupsctl: Unknown option \"-%c\"" = "cupsctl: Unknown option “-%c”"; diff --git a/locale/cups_ca.po b/locale/cups_ca.po index 248c4f2..a4b28a5 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -6271,8 +6271,9 @@ msgstr "no s'ha pogut executar correctament la cups-driverd" msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "cupsaddsmb: falta el fitxer PPD per la impressora «%s» - %s" -msgid "cupsctl: Cannot set Listen or Port directly." -msgstr "cupsctl: no es pot establir Listen o Port directament." +#, c-format +msgid "cupsctl: Cannot set %s directly." +msgstr "" #, c-format msgid "cupsctl: Unable to connect to server: %s" @@ -13776,6 +13777,9 @@ msgstr "Z Offset" #~ "convert: feu servir l'opció -f per especificar el fitxer que voleu " #~ "convertir." +#~ msgid "cupsctl: Cannot set Listen or Port directly." +#~ msgstr "cupsctl: no es pot establir Listen o Port directament." + #~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode." #~ msgstr "" #~ "cupsd: no s'ha compilat amb compatibilitat per launchd(8). S'executa en " diff --git a/locale/cups_cs.po b/locale/cups_cs.po index a271091..a38c8aa 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -6002,7 +6002,8 @@ msgstr "Nepodařilo se spustit \"cups-driverd\"." msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "" -msgid "cupsctl: Cannot set Listen or Port directly." +#, c-format +msgid "cupsctl: Cannot set %s directly." msgstr "" #, c-format diff --git a/locale/cups_de.po b/locale/cups_de.po index 1d3e2c3..9349ae8 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -6132,8 +6132,9 @@ msgstr "„cups-driverd“ konnte nicht ausgeführt werden." msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "cupsaddsmb: Keine PPD Datei für Drucker »%s« - %s" -msgid "cupsctl: Cannot set Listen or Port directly." -msgstr "cupsctl: Kann nicht direkt auf dem Port hören." +#, c-format +msgid "cupsctl: Cannot set %s directly." +msgstr "" #, c-format msgid "cupsctl: Unable to connect to server: %s" @@ -13326,6 +13327,9 @@ msgstr "Z Offset" #~ msgid "compression.none" #~ msgstr "None" +#~ msgid "cupsctl: Cannot set Listen or Port directly." +#~ msgstr "cupsctl: Kann nicht direkt auf dem Port hören." + #~ msgid "destination-accesses" #~ msgstr "Destination Accesses" diff --git a/locale/cups_es.po b/locale/cups_es.po index 0a8aa18..2eee2f0 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -5978,8 +5978,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" @@ -6315,8 +6315,9 @@ msgstr "Ha fallado al ejecutarse cups-driverd." msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "cupsaddsmb: No hay archivo PPD para la impresora \"%s\" - %s" -msgid "cupsctl: Cannot set Listen or Port directly." -msgstr "cupsctl: No se puede establecer Listen o Port directamente." +#, c-format +msgid "cupsctl: Cannot set %s directly." +msgstr "" #, c-format msgid "cupsctl: Unable to connect to server: %s" @@ -13715,6 +13716,9 @@ msgstr "Z Offset" #~ msgid "compression.none" #~ msgstr "None" +#~ msgid "cupsctl: Cannot set Listen or Port directly." +#~ msgstr "cupsctl: No se puede establecer Listen o Port directamente." + #~ msgid "destination-accesses" #~ msgstr "Destination Accesses" diff --git a/locale/cups_fr.po b/locale/cups_fr.po index 8e0f4fa..a892435 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -6069,7 +6069,8 @@ msgstr "L’exécution de « cups-driverd » a échoué." msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "" -msgid "cupsctl: Cannot set Listen or Port directly." +#, c-format +msgid "cupsctl: Cannot set %s directly." msgstr "" #, c-format diff --git a/locale/cups_it.po b/locale/cups_it.po index d83fa97..cb3aa41 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -6294,8 +6294,9 @@ msgstr "cups-driverd ha smesso di funzionare." msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "cupsaddsmb: nessun file PPD per la stampante \"%s\" - %s" -msgid "cupsctl: Cannot set Listen or Port directly." -msgstr "cupsctl: non è possibile impostare direttamente Listen o Port." +#, c-format +msgid "cupsctl: Cannot set %s directly." +msgstr "" #, c-format msgid "cupsctl: Unable to connect to server: %s" @@ -13823,6 +13824,9 @@ msgstr "Z Offset" #~ msgid "compression.none" #~ msgstr "None" +#~ msgid "cupsctl: Cannot set Listen or Port directly." +#~ msgstr "cupsctl: non è possibile impostare direttamente Listen o Port." + #~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode." #~ msgstr "" #~ "cupsd: launchd(8) non supporta i compilati, quando è in modalità normale." diff --git a/locale/cups_ja.po b/locale/cups_ja.po index af7852b..035265e 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -6251,8 +6251,9 @@ msgstr "cups-driverd の実行に失敗しました。" msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "cupsaddsmb: プリンター \"%s\" の PPD ファイルがありません - %s" -msgid "cupsctl: Cannot set Listen or Port directly." -msgstr "cupsctl: Listen あるいは Port を直接設定できません。" +#, c-format +msgid "cupsctl: Cannot set %s directly." +msgstr "" #, c-format msgid "cupsctl: Unable to connect to server: %s" @@ -13843,6 +13844,9 @@ msgstr "Z Offset" #~ msgid "compression.none" #~ msgstr "None" +#~ msgid "cupsctl: Cannot set Listen or Port directly." +#~ msgstr "cupsctl: Listen あるいは Port を直接設定できません。" + #~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode." #~ msgstr "" #~ "cupsd: launchd(8) サポートがコンパイルされていないので、通常モードで動作し" diff --git a/locale/cups_pt_BR.po b/locale/cups_pt_BR.po index 3be06c4..2bfb92a 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-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" @@ -6295,8 +6295,9 @@ msgstr "cups-driverd falhou na execução." msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "cupsaddsmb: Nenhum arquivo PPD para a impressora \"%s\" - %s" -msgid "cupsctl: Cannot set Listen or Port directly." -msgstr "cupsctl: Não foi possível definir diretamente Porta ou Listen." +#, c-format +msgid "cupsctl: Cannot set %s directly." +msgstr "" #, c-format msgid "cupsctl: Unable to connect to server: %s" @@ -13814,6 +13815,9 @@ msgstr "Z Offset" #~ msgid "compression.none" #~ msgstr "None" +#~ msgid "cupsctl: Cannot set Listen or Port directly." +#~ msgstr "cupsctl: Não foi possível definir diretamente Porta ou Listen." + #~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode." #~ msgstr "" #~ "cupsd: Compilado sem suporte a launchd(8) e, portanto, executando no modo " diff --git a/locale/cups_ru.po b/locale/cups_ru.po index 790b54a..35f13fc 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-0400\n" "PO-Revision-Date: 2015-01-28 12:00-0800\n" "Last-Translator: Aleksandr Proklov\n" "Language-Team: PuppyRus Linux Team\n" @@ -6208,8 +6208,9 @@ msgstr "Не удалось выполнить cups-driverd." msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "cupsaddsmb: Нет PPD-файла для принтера \"%s\" - %s" -msgid "cupsctl: Cannot set Listen or Port directly." -msgstr "cupsctl: Не удается задать Listen или Port." +#, c-format +msgid "cupsctl: Cannot set %s directly." +msgstr "" #, c-format msgid "cupsctl: Unable to connect to server: %s" @@ -13605,6 +13606,9 @@ msgstr "Z Offset" #~ msgid "compression.none" #~ msgstr "None" +#~ msgid "cupsctl: Cannot set Listen or Port directly." +#~ msgstr "cupsctl: Не удается задать Listen или Port." + #~ msgid "destination-accesses" #~ msgstr "Destination Accesses" diff --git a/locale/cups_zh_CN.po b/locale/cups_zh_CN.po index d9ef006..99bc60b 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-09-28 11:22-0400\n" +"POT-Creation-Date: 2019-05-15 10:31-0400\n" "PO-Revision-Date: 2017-06-11 12:38+0800\n" "Last-Translator: Mingcong Bai <jeffbai@aosc.xyz>\n" "Language-Team: \n" @@ -6165,8 +6165,9 @@ msgstr "无法执行 cups-driverd。" msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s" msgstr "cupsaddsmb:打印机“%s”无 PPD 文件 — %s" -msgid "cupsctl: Cannot set Listen or Port directly." -msgstr "cupsctl:无法直接设置 Listen 或 Port 值。" +#, c-format +msgid "cupsctl: Cannot set %s directly." +msgstr "" #, c-format msgid "cupsctl: Unable to connect to server: %s" @@ -13505,6 +13506,9 @@ msgstr "Z Offset" #~ msgid "compression.none" #~ msgstr "None" +#~ msgid "cupsctl: Cannot set Listen or Port directly." +#~ msgstr "cupsctl:无法直接设置 Listen 或 Port 值。" + #~ msgid "destination-accesses" #~ msgstr "Destination Accesses" diff --git a/man/cupsd.conf.man.in b/man/cupsd.conf.man.in index 15a5fa9..97bf879 100644 --- a/man/cupsd.conf.man.in +++ b/man/cupsd.conf.man.in @@ -1,7 +1,7 @@ .\" .\" cupsd.conf man page for CUPS. .\" -.\" Copyright © 2007-2018 by Apple Inc. +.\" Copyright © 2007-2019 by Apple Inc. .\" Copyright © 1997-2006 by Easy Software Products. .\" .\" These coded instructions, statements, and computer programs are the @@ -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" "24 April 2018" "Apple Inc." +.TH cupsd.conf 5 "CUPS" "2 May 2019" "Apple Inc." .SH NAME cupsd.conf \- server configuration file for cups .SH DESCRIPTION @@ -341,7 +341,7 @@ The default is "1048576" (1MB). .TP 5 \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). +The default is "900" (15 minutes). .\"#Policy .TP 5 \fB<Policy \fIname\fB> \fR... \fB</Policy>\fR @@ -459,7 +459,7 @@ The default is "No". .TP 5 \fBTimeout \fIseconds\fR Specifies the HTTP request timeout. -The default is "300" (5 minutes). +The default is "900" (15 minutes). .\"#WebInterface .TP 5 \fBWebInterface yes\fR @@ -876,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-2018 by Apple Inc. +Copyright \[co] 2007-2019 by Apple Inc. diff --git a/man/ipptoolfile.man b/man/ipptoolfile.man index 35b0504..5e8384b 100644 --- a/man/ipptoolfile.man +++ b/man/ipptoolfile.man @@ -1,7 +1,7 @@ .\" .\" ipptoolfile man page. .\" -.\" Copyright 2010-2017 by Apple Inc. +.\" Copyright 2010-2019 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 ipptoolfile 5 "CUPS" "15 June 2017" "Apple Inc." +.TH ipptoolfile 5 "CUPS" "5 August 2019" "Apple Inc." .SH NAME ipptoolfile \- ipptool file format .SH DESCRIPTION @@ -297,7 +297,7 @@ Makes the \fBEXPECT\fR conditions apply only if the specified variable is not de \fBIN\-GROUP \fItag\fR Requires the \fBEXPECT\fR attribute to be in the specified group tag. .TP 5 -\fBOF\-TYPE \fItag[,tag,...]\fR +\fBOF\-TYPE \fItag[|tag,...]\fR Requires the \fBEXPECT\fR attribute to use one of the specified value tag(s). .TP 5 \fBREPEAT\-LIMIT \fInumber\fR @@ -649,4 +649,4 @@ IANA IPP Registry (http://www.iana.org/assignments/ipp-registrations), PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp), RFC 8011 (http://tools.ietf.org/html/rfc8011) .SH COPYRIGHT -Copyright \[co] 2007-2017 by Apple Inc. +Copyright \[co] 2007-2019 by Apple Inc. diff --git a/packaging/cups.spec b/packaging/cups.spec index 82310fb..a15f03d 100644 --- a/packaging/cups.spec +++ b/packaging/cups.spec @@ -43,12 +43,12 @@ Summary: CUPS Name: cups -Version: 2.2.11 +Version: 2.2.12 Release: 0 Epoch: 1 License: GPL Group: System Environment/Daemons -Source: https://github.com/apple/cups/releases/download/v2.2.11/cups-2.2.11-source.tar.gz +Source: https://github.com/apple/cups/releases/download/v2.2.12/cups-2.2.12-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 fa4e271..1fb3ffc 100644 --- a/scheduler/auth.c +++ b/scheduler/auth.c @@ -1176,7 +1176,23 @@ cupsdCheckGroup( groupid = group->gr_gid; + for (i = 0; group->gr_mem[i]; i ++) + { + /* + * User appears in the group membership... + */ + + if (!_cups_strcasecmp(username, group->gr_mem[i])) + return (1); + } + #ifdef HAVE_GETGROUPLIST + /* + * If the user isn't in the group membership list, try the results from + * getgrouplist() which is supposed to return the full list of groups a user + * belongs to... + */ + if (user) { int ngroups; /* Number of groups */ @@ -1197,13 +1213,6 @@ cupsdCheckGroup( if ((int)groupid == (int)groups[i]) return (1); } - -#else - for (i = 0; group->gr_mem[i]; i ++) - { - if (!_cups_strcasecmp(username, group->gr_mem[i])) - return (1); - } #endif /* HAVE_GETGROUPLIST */ } else diff --git a/scheduler/client.c b/scheduler/client.c index a21b909..6805080 100644 --- a/scheduler/client.c +++ b/scheduler/client.c @@ -568,6 +568,17 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ cupsdLogClient(con, CUPSD_LOG_DEBUG2, "cupsdReadClient: error=%d, used=%d, state=%s, data_encoding=HTTP_ENCODING_%s, data_remaining=" CUPS_LLFMT ", request=%p(%s), file=%d", httpError(con->http), (int)httpGetReady(con->http), httpStateString(httpGetState(con->http)), httpIsChunked(con->http) ? "CHUNKED" : "LENGTH", CUPS_LLCAST httpGetRemaining(con->http), con->request, con->request ? ippStateString(ippGetState(con->request)) : "", con->file); + if (httpError(con->http) == EPIPE && !httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1) + { + /* + * Connection closed... + */ + + cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF."); + cupsdCloseClient(con); + return; + } + if (httpGetState(con->http) == HTTP_STATE_GET_SEND || httpGetState(con->http) == HTTP_STATE_POST_SEND || httpGetState(con->http) == HTTP_STATE_STATUS) @@ -577,17 +588,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */ * connection and we need to shut it down... */ - if (!httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1) - { - /* - * Connection closed... - */ - - cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF."); - cupsdCloseClient(con); - return; - } - cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP read state %s.", httpStateString(httpGetState(con->http))); cupsdCloseClient(con); return; @@ -2209,6 +2209,7 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */ strlcpy(location, httpGetField(con->http, HTTP_FIELD_LOCATION), sizeof(location)); httpClearFields(con->http); + httpClearCookie(con->http); httpSetField(con->http, HTTP_FIELD_LOCATION, location); diff --git a/scheduler/conf.c b/scheduler/conf.c index 9c1be70..11c94d2 100644 --- a/scheduler/conf.c +++ b/scheduler/conf.c @@ -1,7 +1,7 @@ /* * Configuration routines for the CUPS scheduler. * - * Copyright © 2007-2018 by Apple Inc. + * Copyright © 2007-2019 by Apple Inc. * Copyright © 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -729,14 +729,14 @@ cupsdReadConfiguration(void) MaxClientsPerHost = 0; MaxLogSize = 1024 * 1024; MaxRequestSize = 0; - MultipleOperationTimeout = DEFAULT_TIMEOUT; + MultipleOperationTimeout = 900; NumSystemGroups = 0; ReloadTimeout = DEFAULT_KEEPALIVE; RootCertDuration = 300; Sandboxing = CUPSD_SANDBOXING_STRICT; StrictConformance = FALSE; SyncOnClose = FALSE; - Timeout = DEFAULT_TIMEOUT; + Timeout = 900; WebInterface = CUPS_DEFAULT_WEBIF; BrowseLocalProtocols = parse_protocols(CUPS_DEFAULT_BROWSE_LOCAL_PROTOCOLS); diff --git a/scheduler/job.c b/scheduler/job.c index 4f04138..1a7a34c 100644 --- a/scheduler/job.c +++ b/scheduler/job.c @@ -307,10 +307,12 @@ cupsdCheckJobs(void) if (cupsdTimeoutJob(job)) continue; - } - cupsdSetJobState(job, IPP_JOB_PENDING, CUPSD_JOB_DEFAULT, - "Job submission timed out."); + cupsdSetJobState(job, IPP_JOB_PENDING, CUPSD_JOB_DEFAULT, "Job submission timed out."); + cupsdLogJob(job, CUPSD_LOG_ERROR, "Job submission timed out."); + } + else + cupsdSetJobState(job, IPP_JOB_PENDING, CUPSD_JOB_DEFAULT, "Job hold expired."); } /* @@ -445,7 +447,7 @@ cupsdCleanJobs(void) { cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCleanJobs: Job %d, state=%d, printer=%p, history_time=%d, file_time=%d", job->id, (int)job->state_value, (void *)job->printer, (int)job->history_time, (int)job->file_time); - if ((job->history_time && job->history_time) < JobHistoryUpdate || !JobHistoryUpdate) + if ((job->history_time && job->history_time < JobHistoryUpdate) || !JobHistoryUpdate) JobHistoryUpdate = job->history_time; if ((job->file_time && job->file_time < JobHistoryUpdate) || !JobHistoryUpdate) @@ -4021,6 +4023,45 @@ get_options(cupsd_job_t *job, /* I - Job */ break; case IPP_TAG_STRING : + { + int length = attr->values[i].unknown.length; + + for (valptr = attr->values[i].unknown.data; length > 0; length --) + { + if ((*valptr & 255) < 0x20 || *valptr == 0x7f) + break; + } + + if (length > 0) + { + /* + * Encode this string as hex characters... + */ + + *optptr++ = '<'; + + for (valptr = attr->values[i].unknown.data, length = attr->values[i].unknown.length; length > 0; length --) + { + snprintf(optptr, optlength - (size_t)(optptr - options) - 1, "%02X", *valptr & 255); + optptr += 2; + } + + *optptr++ = '>'; + } + else + { + for (valptr = attr->values[i].unknown.data, length = attr->values[i].unknown.length; length > 0; length --) + { + if (strchr(" \t\n\\\'\"", *valptr)) + *optptr++ = '\\'; + *optptr++ = *valptr++; + } + } + } + + *optptr = '\0'; + break; + case IPP_TAG_TEXT : case IPP_TAG_NAME : case IPP_TAG_KEYWORD : @@ -4166,6 +4207,16 @@ ipp_length(ipp_t *ipp) /* I - IPP request */ break; case IPP_TAG_STRING : + /* + * Octet strings can contain characters that need quoting. We need + * at least 2 * len + 2 characters to cover the quotes and any + * backslashes in the string. + */ + + for (i = 0; i < attr->num_values; i ++) + bytes += 2 * (size_t)attr->values[i].unknown.length + 2; + break; + case IPP_TAG_TEXT : case IPP_TAG_NAME : case IPP_TAG_KEYWORD : diff --git a/scheduler/main.c b/scheduler/main.c index 2b8db00..de36815 100644 --- a/scheduler/main.c +++ b/scheduler/main.c @@ -749,7 +749,10 @@ main(int argc, /* I - Number of command-line args */ #ifdef HAVE_ONDEMAND if (OnDemand) + { + stop_scheduler = 1; break; + } #endif /* HAVE_ONDEMAND */ DoingShutdown = 1; @@ -2033,13 +2036,31 @@ service_checkout(int shutdown) /* I - Shutting down? */ #ifdef HAVE_ONDEMAND if (OnDemand) { + int shared_printers = 0; /* Do we have shared printers? */ + strlcpy(pidfile, CUPS_KEEPALIVE, sizeof(pidfile)); + /* + * If printer sharing is on see if there are any actual shared printers... + */ + + if (Browsing && BrowseLocalProtocols) + { + cupsd_printer_t *p = NULL; /* Current printer */ + + for (p = (cupsd_printer_t *)cupsArrayFirst(Printers); p; p = (cupsd_printer_t *)cupsArrayNext(Printers)) + { + if (p->shared) + break; + } + + shared_printers = (p != NULL); + } + if (cupsArrayCount(ActiveJobs) || /* Active jobs */ WebInterface || /* Web interface enabled */ NeedReload || /* Doing a reload */ - (Browsing && BrowseLocalProtocols && cupsArrayCount(Printers))) - /* Printers being shared */ + shared_printers) /* Printers being shared */ { /* * Create or remove the "keep-alive" file based on whether there are active diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in index f2afa11..5273762 100644 --- a/scheduler/org.cups.cupsd.service.in +++ b/scheduler/org.cups.cupsd.service.in @@ -1,6 +1,7 @@ [Unit] Description=CUPS Scheduler Documentation=man:cupsd(8) +After=sssd.service [Service] ExecStart=@sbindir@/cupsd -l diff --git a/scheduler/printers.c b/scheduler/printers.c index 0589e6d..937d0f3 100644 --- a/scheduler/printers.c +++ b/scheduler/printers.c @@ -1021,8 +1021,7 @@ cupsdLoadAllPrinters(void) } else if (!_cups_strcasecmp(line, "Info")) { - if (value) - cupsdSetString(&p->info, value); + cupsdSetString(&p->info, value ? value : ""); } else if (!_cups_strcasecmp(line, "MakeModel")) { @@ -1031,23 +1030,19 @@ cupsdLoadAllPrinters(void) } else if (!_cups_strcasecmp(line, "Location")) { - if (value) - cupsdSetString(&p->location, value); + cupsdSetString(&p->location, value ? value : ""); } else if (!_cups_strcasecmp(line, "GeoLocation")) { - if (value) - cupsdSetString(&p->geo_location, value); + cupsdSetString(&p->geo_location, value ? value : ""); } else if (!_cups_strcasecmp(line, "Organization")) { - if (value) - cupsdSetString(&p->organization, value); + cupsdSetString(&p->organization, value ? value : ""); } else if (!_cups_strcasecmp(line, "OrganizationalUnit")) { - if (value) - cupsdSetString(&p->organizational_unit, value); + cupsdSetString(&p->organizational_unit, value ? value : ""); } else if (!_cups_strcasecmp(line, "DeviceURI")) { diff --git a/systemv/cupsctl.c b/systemv/cupsctl.c index c60c218..f8d9dc8 100644 --- a/systemv/cupsctl.c +++ b/systemv/cupsctl.c @@ -1,7 +1,7 @@ /* * Scheduler control program for CUPS. * - * Copyright 2007-2018 by Apple Inc. + * Copyright 2007-2019 by Apple Inc. * Copyright 2006-2007 by Easy Software Products. * * These coded instructions, statements, and computer programs are the @@ -36,11 +36,47 @@ int /* O - Exit status */ main(int argc, /* I - Number of command-line args */ char *argv[]) /* I - Command-line arguments */ { - int i, /* Looping var */ + int i, j, /* Looping vars */ num_settings; /* Number of settings */ - cups_option_t *settings; /* Settings */ + cups_option_t *settings, /* Settings */ + *setting; /* Current setting */ const char *opt; /* Current option character */ http_t *http; /* Connection to server */ + static const char * const disallowed[] = + { /* List of disallowed directives for cupsd.conf */ + "AccessLog", + "CacheDir", + "ConfigFilePerm", + "DataDir", + "DocumentRoot", + "ErrorLog", + "FatalErrors", + "FileDevice", + "FontPath", + "Group", + "Listen", + "LogFilePerm", + "LPDConfigFile", + "PageLog", + "PassEnv", + "Port", + "Printcap", + "PrintcapFormat", + "RemoteRoot", + "RequestRoot", + "ServerBin", + "ServerCertificate", + "ServerKey", + "ServerKeychain", + "ServerRoot", + "SetEnv", + "SMBConfigFile", + "StateDir", + "SystemGroup", + "SystemGroupAuthKey", + "TempDir", + "User" + }; /* @@ -128,11 +164,16 @@ main(int argc, /* I - Number of command-line args */ usage(argv[i]); } - if (cupsGetOption("Listen", num_settings, settings) || - cupsGetOption("Port", num_settings, settings)) + for (i = num_settings, setting = settings; i > 0; i --, setting ++) { - _cupsLangPuts(stderr, _("cupsctl: Cannot set Listen or Port directly.")); - return (1); + for (j = 0; j < (int)(sizeof(disallowed) / sizeof(disallowed[0])); j ++) + { + if (!_cups_strcasecmp(setting->name, disallowed[j])) + { + _cupsLangPrintf(stderr, _("cupsctl: Cannot set %s directly."), disallowed[j]); + return (1); + } + } } /* diff --git a/systemv/lpadmin.c b/systemv/lpadmin.c index cb9a9ba..a696474 100644 --- a/systemv/lpadmin.c +++ b/systemv/lpadmin.c @@ -1488,6 +1488,7 @@ set_printer_options( (boolval = cupsGetOption("cupsIPPSupplies", num_options, options)) != NULL) { + ppdchanged = 1; wrote_ipp_supplies = 1; cupsFilePrintf(out, "*cupsIPPSupplies: %s\n", (!_cups_strcasecmp(boolval, "true") || @@ -1498,6 +1499,7 @@ set_printer_options( (boolval = cupsGetOption("cupsSNMPSupplies", num_options, options)) != NULL) { + ppdchanged = 1; wrote_snmp_supplies = 1; cupsFilePrintf(out, "*cupsSNMPSupplies: %s\n", (!_cups_strcasecmp(boolval, "true") || @@ -1558,6 +1560,8 @@ set_printer_options( (boolval = cupsGetOption("cupsIPPSupplies", num_options, options)) != NULL) { + ppdchanged = 1; + cupsFilePrintf(out, "*cupsIPPSupplies: %s\n", (!_cups_strcasecmp(boolval, "true") || !_cups_strcasecmp(boolval, "yes") || @@ -1568,6 +1572,8 @@ set_printer_options( (boolval = cupsGetOption("cupsSNMPSupplies", num_options, options)) != NULL) { + ppdchanged = 1; + cupsFilePrintf(out, "*cupsSNMPSupplies: %s\n", (!_cups_strcasecmp(boolval, "true") || !_cups_strcasecmp(boolval, "yes") || @@ -1582,8 +1588,7 @@ set_printer_options( * Do the request... */ - ippDelete(cupsDoFileRequest(http, request, "/admin/", - ppdchanged ? tempfile : file)); + ippDelete(cupsDoFileRequest(http, request, "/admin/", ppdchanged ? tempfile : file)); /* * Clean up temp files... (TODO: catch signals in case we CTRL-C during diff --git a/templates/de/trailer.tmpl b/templates/de/trailer.tmpl index 54f03ac..c1f5d38 100644 --- a/templates/de/trailer.tmpl +++ b/templates/de/trailer.tmpl @@ -1,5 +1,5 @@ </div> </div> - <div class="footer">CUPS und das CUPS-Logo sind Warenzeichen der <a href="https://www.apple.com/">Apple Inc.</a> Copyright © 2007-2018 Apple Inc. Alle Rechte vorbehalten.</div> + <div class="footer">CUPS und das CUPS-Logo sind Warenzeichen der <a href="https://www.apple.com/">Apple Inc.</a> Copyright © 2007-2019 Apple Inc. Alle Rechte vorbehalten.</div> </body> </html> diff --git a/templates/es/trailer.tmpl b/templates/es/trailer.tmpl index 399189e..c1cb58f 100644 --- a/templates/es/trailer.tmpl +++ b/templates/es/trailer.tmpl @@ -1,5 +1,5 @@ </div> </div> - <div class="footer">CUPS y el logo de CUPS son marcas registradas de <a href="http://www.apple.com">Apple Inc.</a> Derechos de autor © 2007-2018 Apple Inc. Todos los derechos reservados.</div> + <div class="footer">CUPS y el logo de CUPS son marcas registradas de <a href="http://www.apple.com">Apple Inc.</a> Derechos de autor © 2007-2019 Apple Inc. Todos los derechos reservados.</div> </body> </html> diff --git a/templates/fr/trailer.tmpl b/templates/fr/trailer.tmpl index 907155e..6e9b8b1 100644 --- a/templates/fr/trailer.tmpl +++ b/templates/fr/trailer.tmpl @@ -1,5 +1,5 @@ </div> </div> - <div class="footer">CUPS et le logo CUPS sont des marques déposées de <a href="http://www.apple.com">Apple Inc.</a> CUPS est sous copyright 2007-2018 Apple Inc. Tous droits réservés.</div> + <div class="footer">CUPS et le logo CUPS sont des marques déposées de <a href="http://www.apple.com">Apple Inc.</a> CUPS est sous copyright 2007-2019 Apple Inc. Tous droits réservés.</div> </body> </html> diff --git a/templates/ja/trailer.tmpl b/templates/ja/trailer.tmpl index 04a205e..a4f86b1 100644 --- a/templates/ja/trailer.tmpl +++ b/templates/ja/trailer.tmpl @@ -1,5 +1,5 @@ </div> </div> - <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2018 Apple Inc. All rights reserved.</div> + <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2019 Apple Inc. All rights reserved.</div> </body> </html> diff --git a/templates/pt_BR/trailer.tmpl b/templates/pt_BR/trailer.tmpl index d1a1e64..673a555 100644 --- a/templates/pt_BR/trailer.tmpl +++ b/templates/pt_BR/trailer.tmpl @@ -1,5 +1,5 @@ </div> </div> - <div class="footer">CUPS e sua logo são marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2018 Apple Inc. Todos os direitos reservados.</div> + <div class="footer">CUPS e sua logo são marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2019 Apple Inc. Todos os direitos reservados.</div> </body> </html> diff --git a/templates/ru/trailer.tmpl b/templates/ru/trailer.tmpl index 0da4298..260d0e9 100644 --- a/templates/ru/trailer.tmpl +++ b/templates/ru/trailer.tmpl @@ -1,6 +1,6 @@ </div> </div> <div class="footer">CUPS, а так же логотип CUPS являются зарегистрированными торговыми марками -<A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2018) компании Apple Inc. Все права защищены.</div> +<A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2019) компании Apple Inc. Все права защищены.</div> </body> </html> diff --git a/templates/trailer.tmpl b/templates/trailer.tmpl index 04a205e..a4f86b1 100644 --- a/templates/trailer.tmpl +++ b/templates/trailer.tmpl @@ -1,5 +1,5 @@ </div> </div> - <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2018 Apple Inc. All rights reserved.</div> + <div class="footer">CUPS and the CUPS logo are trademarks of <a href="http://www.apple.com">Apple Inc.</a> Copyright © 2007-2019 Apple Inc. All rights reserved.</div> </body> </html> diff --git a/vcnet/config.h b/vcnet/config.h index 3fb5229..3a6b3fc 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.11" -#define CUPS_MINIMAL "CUPS/2.2.11" +#define CUPS_SVERSION "CUPS v2.2.12" +#define CUPS_MINIMAL "CUPS/2.2.12" /* @@ -380,6 +380,13 @@ typedef unsigned long useconds_t; /* + * Do we have the gnutls_fips140_set_mode function? + */ + +/* #undef HAVE_GNUTLS_FIPS140_SET_MODE */ + + +/* * Do we have the gnutls_transport_set_pull_timeout_function function? */ diff --git a/xcode/config.h b/xcode/config.h index 3ae3e09..490b606 100644 --- a/xcode/config.h +++ b/xcode/config.h @@ -22,8 +22,8 @@ * Version of software... */ -#define CUPS_SVERSION "CUPS v2.2.11" -#define CUPS_MINIMAL "CUPS/2.2.11" +#define CUPS_SVERSION "CUPS v2.2.12" +#define CUPS_MINIMAL "CUPS/2.2.12" /* @@ -310,6 +310,13 @@ /* + * Do we have the gnutls_fips140_set_mode function? + */ + +/* #undef HAVE_GNUTLS_FIPS140_SET_MODE */ + + +/* * Do we have the gnutls_transport_set_pull_timeout_function function? */ |