summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.md46
-rw-r--r--INSTALL.md2
-rw-r--r--Makedefs.in4
-rw-r--r--README.md7
-rw-r--r--backend/org.cups.usb-quirks3
-rw-r--r--backend/usb-libusb.c5
-rw-r--r--cgi-bin/admin.c9
-rw-r--r--config-scripts/cups-common.m420
-rw-r--r--config-scripts/cups-ssl.m41
-rw-r--r--config.h.in7
-rwxr-xr-xconfigure65
-rw-r--r--configure.ac4
-rw-r--r--cups/cups-private.h3
-rw-r--r--cups/cups.h4
-rw-r--r--cups/dest-options.c211
-rw-r--r--cups/dest.c557
-rw-r--r--cups/hash.c23
-rw-r--r--cups/http.c9
-rw-r--r--cups/ipp.c18
-rw-r--r--cups/ppd-emit.c12
-rw-r--r--cups/ppd-mark.c6
-rw-r--r--cups/ppd.c51
-rw-r--r--cups/ppd.h1
-rw-r--r--cups/snmp.c20
-rw-r--r--cups/snprintf.c10
-rw-r--r--cups/testdest.c120
-rw-r--r--cups/testipp.c118
-rw-r--r--cups/testppd.c4
-rw-r--r--doc/cups.css2
-rw-r--r--doc/de/index.html.in2
-rw-r--r--doc/es/index.html.in2
-rw-r--r--doc/help/man-cupsd.conf.html6
-rw-r--r--doc/help/man-ipptoolfile.html4
-rw-r--r--doc/index.html.in2
-rw-r--r--doc/ja/index.html.in2
-rw-r--r--doc/pt_BR/index.html.in2
-rw-r--r--doc/ru/index.html.in2
-rw-r--r--filter/rastertolabel.c9
-rw-r--r--locale/cups.pot1319
-rw-r--r--locale/cups.strings2
-rw-r--r--locale/cups_ca.po10
-rw-r--r--locale/cups_cs.po5
-rw-r--r--locale/cups_de.po10
-rw-r--r--locale/cups_es.po14
-rw-r--r--locale/cups_fr.po5
-rw-r--r--locale/cups_it.po10
-rw-r--r--locale/cups_ja.po10
-rw-r--r--locale/cups_pt_BR.po10
-rw-r--r--locale/cups_ru.po10
-rw-r--r--locale/cups_zh_CN.po10
-rw-r--r--man/cupsd.conf.man.in10
-rw-r--r--man/ipptoolfile.man8
-rw-r--r--packaging/cups.spec4
-rw-r--r--scheduler/auth.c23
-rw-r--r--scheduler/client.c23
-rw-r--r--scheduler/conf.c6
-rw-r--r--scheduler/job.c59
-rw-r--r--scheduler/main.c25
-rw-r--r--scheduler/org.cups.cupsd.service.in1
-rw-r--r--scheduler/printers.c15
-rw-r--r--systemv/cupsctl.c55
-rw-r--r--systemv/lpadmin.c9
-rw-r--r--templates/de/trailer.tmpl2
-rw-r--r--templates/es/trailer.tmpl2
-rw-r--r--templates/fr/trailer.tmpl2
-rw-r--r--templates/ja/trailer.tmpl2
-rw-r--r--templates/pt_BR/trailer.tmpl2
-rw-r--r--templates/ru/trailer.tmpl2
-rw-r--r--templates/trailer.tmpl2
-rw-r--r--vcnet/config.h11
-rw-r--r--xcode/config.h11
71 files changed, 1756 insertions, 1306 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 6e8705f..9cc2e20 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -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)
diff --git a/INSTALL.md b/INSTALL.md
index 2ea5120..63075db 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -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@
diff --git a/README.md b/README.md
index 7afc078..54ced6c 100644
--- a/README.md
+++ b/README.md
@@ -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?
*/
diff --git a/configure b/configure
index 3689061..0392af1 100755
--- a/configure
+++ b/configure
@@ -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
{
diff --git a/cups/ipp.c b/cups/ipp.c
index f4171bc..b0762fd 100644
--- a/cups/ipp.c
+++ b/cups/ipp.c
@@ -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 :
diff --git a/cups/ppd.c b/cups/ppd.c
index 435b992..58d92c1 100644
--- a/cups/ppd.c
+++ b/cups/ppd.c
@@ -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));
diff --git a/cups/ppd.h b/cups/ppd.h
index ae63c0d..b6326a5 100644
--- a/cups/ppd.h
+++ b/cups/ppd.h
@@ -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 &copy; 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 &copy; 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 &copy; 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 &copy; 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>&lt;Policy </b><i>name</i><b>> </b>... <b>&lt;/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 &copy; 2007-2018 by Apple Inc.
+Copyright &copy; 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 &copy; 2007-2017 by Apple Inc.
+Copyright &copy; 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 &copy; 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 &copy; 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 &copy; 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 &copy; 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&atilde;o marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2018 Apple Inc. Todos os direitos reservados.</div>
+ <div class="footer">CUPS e o logo do CUPS s&atilde;o marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 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 &copy; 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 &copy; 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 &copy; 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 &copy; 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&eacute;pos&eacute;es de <a href="http://www.apple.com">Apple Inc.</a> CUPS est sous copyright 2007-2018 Apple Inc. Tous droits r&eacute;serv&eacute;s.</div>
+ <div class="footer">CUPS et le logo CUPS sont des marques d&eacute;pos&eacute;es de <a href="http://www.apple.com">Apple Inc.</a> CUPS est sous copyright 2007-2019 Apple Inc. Tous droits r&eacute;serv&eacute;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 &copy; 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 &copy; 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&atilde;o marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2018 Apple Inc. Todos os direitos reservados.</div>
+ <div class="footer">CUPS e sua logo s&atilde;o marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 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 &copy; 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 &copy; 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?
*/