summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt21
-rw-r--r--INSTALL.txt4
-rw-r--r--README.txt4
-rw-r--r--conf/mime.types2
-rw-r--r--config-scripts/cups-common.m48
-rw-r--r--config-scripts/cups-defaults.m48
-rw-r--r--config-scripts/cups-dnssd.m48
-rw-r--r--config-scripts/cups-startup.m423
-rwxr-xr-xconfigure294
-rw-r--r--configure.ac6
-rw-r--r--cups/Makefile5
-rw-r--r--cups/http.c6
-rw-r--r--cups/http.h6
-rw-r--r--cups/language.c34
-rw-r--r--cups/localize.c25
-rw-r--r--cups/ppd.c28
-rw-r--r--cups/testlang.c52
-rw-r--r--doc/help/accounting.html2
-rw-r--r--doc/help/api-array.html2
-rw-r--r--doc/help/api-cgi.html2
-rw-r--r--doc/help/api-cups.html4
-rw-r--r--doc/help/api-filedir.html2
-rw-r--r--doc/help/api-filter.html2
-rw-r--r--doc/help/api-httpipp.html6
-rw-r--r--doc/help/api-mime.html2
-rw-r--r--doc/help/api-overview.html2
-rw-r--r--doc/help/api-ppd.html6
-rw-r--r--doc/help/api-ppdc.html2
-rw-r--r--doc/help/api-raster.html2
-rw-r--r--doc/help/kerberos.html2
-rw-r--r--doc/help/man-backend.html4
-rw-r--r--doc/help/man-cancel.html2
-rw-r--r--doc/help/man-classes.conf.html2
-rw-r--r--doc/help/man-cups-config.html2
-rw-r--r--doc/help/man-cups-lpd.html2
-rw-r--r--doc/help/man-cups-snmp.conf.html2
-rw-r--r--doc/help/man-cups-snmp.html2
-rw-r--r--doc/help/man-cups.html2
-rw-r--r--doc/help/man-cupsaccept.html2
-rw-r--r--doc/help/man-cupsaddsmb.html2
-rw-r--r--doc/help/man-cupsctl.html2
-rw-r--r--doc/help/man-cupsd-helper.html2
-rw-r--r--doc/help/man-cupsd-logs.html2
-rw-r--r--doc/help/man-cupsd.html4
-rw-r--r--doc/help/man-cupsenable.html2
-rw-r--r--doc/help/man-cupsfilter.html2
-rw-r--r--doc/help/man-cupstestdsc.html2
-rw-r--r--doc/help/man-cupstestppd.html2
-rw-r--r--doc/help/man-filter.html4
-rw-r--r--doc/help/man-ippfind.html2
-rw-r--r--doc/help/man-ipptool.html2
-rw-r--r--doc/help/man-lp.html2
-rw-r--r--doc/help/man-lpc.html2
-rw-r--r--doc/help/man-lpinfo.html2
-rw-r--r--doc/help/man-lpmove.html2
-rw-r--r--doc/help/man-lpoptions.html2
-rw-r--r--doc/help/man-lpq.html2
-rw-r--r--doc/help/man-lpr.html2
-rw-r--r--doc/help/man-lprm.html2
-rw-r--r--doc/help/man-lpstat.html2
-rw-r--r--doc/help/man-mailto.conf.html2
-rw-r--r--doc/help/man-mime.convs.html4
-rw-r--r--doc/help/man-mime.types.html2
-rw-r--r--doc/help/man-notifier.html2
-rw-r--r--doc/help/man-ppdc.html2
-rw-r--r--doc/help/man-ppdcfile.html2
-rw-r--r--doc/help/man-ppdhtml.html2
-rw-r--r--doc/help/man-ppdi.html2
-rw-r--r--doc/help/man-ppdmerge.html2
-rw-r--r--doc/help/man-ppdpo.html2
-rw-r--r--doc/help/man-printers.conf.html2
-rw-r--r--doc/help/man-subscriptions.conf.html2
-rw-r--r--doc/help/postscript-driver.html2
-rw-r--r--doc/help/ppd-compiler.html2
-rw-r--r--doc/help/raster-driver.html2
-rw-r--r--doc/help/spec-design.html2
-rw-r--r--doc/help/spec-ppd.html4
-rw-r--r--filter/spec-ppd.shtml2
-rw-r--r--man/backend.man8
-rw-r--r--man/cancel.man6
-rw-r--r--man/classes.conf.man6
-rw-r--r--man/cups-config.man6
-rw-r--r--man/cups-lpd.man.in6
-rw-r--r--man/cups-snmp.conf.man6
-rw-r--r--man/cups-snmp.man.in6
-rw-r--r--man/cups.man6
-rw-r--r--man/cupsaccept.man6
-rw-r--r--man/cupsaddsmb.man.in6
-rw-r--r--man/cupsctl.man6
-rw-r--r--man/cupsd-helper.man6
-rw-r--r--man/cupsd-logs.man6
-rw-r--r--man/cupsd.man.in8
-rw-r--r--man/cupsenable.man6
-rw-r--r--man/cupsfilter.man6
-rw-r--r--man/cupstestdsc.man6
-rw-r--r--man/cupstestppd.man6
-rw-r--r--man/filter.man12
-rw-r--r--man/ippfind.man6
-rw-r--r--man/ipptool.man8
-rw-r--r--man/lp.man6
-rw-r--r--man/lpc.man6
-rw-r--r--man/lpinfo.man6
-rw-r--r--man/lpmove.man6
-rw-r--r--man/lpoptions.man.in6
-rw-r--r--man/lpq.man6
-rw-r--r--man/lpr.man6
-rw-r--r--man/lprm.man6
-rw-r--r--man/lpstat.man6
-rw-r--r--man/mailto.conf.man6
-rw-r--r--man/mime.convs.man12
-rw-r--r--man/mime.types.man6
-rw-r--r--man/notifier.man6
-rw-r--r--man/ppdc.man6
-rw-r--r--man/ppdcfile.man6
-rw-r--r--man/ppdhtml.man6
-rw-r--r--man/ppdi.man6
-rw-r--r--man/ppdmerge.man6
-rw-r--r--man/ppdpo.man6
-rw-r--r--man/printers.conf.man6
-rw-r--r--man/subscriptions.conf.man6
-rw-r--r--packaging/cups.spec11
-rw-r--r--packaging/cups.spec.in7
-rw-r--r--scheduler/ipp.c19
-rw-r--r--scheduler/job.c6
-rw-r--r--scheduler/log.c10
-rw-r--r--test/identify-printer-display.test21
-rw-r--r--test/identify-printer-multiple.test21
-rw-r--r--test/ippserver.c1484
-rwxr-xr-xtest/run-stp-tests.sh9
-rw-r--r--vcnet/config.h8
-rw-r--r--xcode/config.h8
131 files changed, 1813 insertions, 737 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 4adbe798d..ab1574c1f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,5 +1,22 @@
-CHANGES.txt - 2.1rc1 - 2015-07-31
----------------------------------
+CHANGES.txt - 2.1.0 - 2015-08-31
+--------------------------------
+
+CHANGES IN CUPS V2.1.0
+
+ - Fixed more scheduler crash bugs in the new logging code (STR #4687,
+ STR #4690)
+ - The scheduler did not use the ConfigFilePerm setting when copying PPD
+ files or interface scripts attached to a request (STR #4703)
+ - Now support new Chinese locale IDs and their correct fallback locales
+ (<rdar://problem/22086642>, <rdar://problem/22130168>)
+ - "make check" incorrectly reported an expectation of 18 warning
+ messages when 8 were expected (STR #4684)
+ - The new PDF file type rule did not work (STR #4692)
+ - The scheduler did not update the jobs.cache file when job files were
+ expired (STR #4706)
+ - Fixed some configure script issues (STR #4694, STR #4695, STR #4698)
+ - Documentation updates (STR #4691, STR #4693)
+
CHANGES IN CUPS V2.1rc1
diff --git a/INSTALL.txt b/INSTALL.txt
index 28e4eefd3..bdc219c47 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -1,5 +1,5 @@
-INSTALL - CUPS v2.1rc1 - 2015-07-31
------------------------------------
+INSTALL - CUPS v2.1.0 - 2015-08-31
+----------------------------------
This file describes how to compile and install CUPS from source code. For more
information on CUPS see the file called "README.txt". A complete change log can
diff --git a/README.txt b/README.txt
index c21935fa8..901e0c3d0 100644
--- a/README.txt
+++ b/README.txt
@@ -1,5 +1,5 @@
-README - CUPS v2.1rc1 - 2015-07-31
-----------------------------------
+README - CUPS v2.1.0 - 2015-08-31
+---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
diff --git a/conf/mime.types b/conf/mime.types
index 68759232a..dcb07710e 100644
--- a/conf/mime.types
+++ b/conf/mime.types
@@ -71,7 +71,7 @@
#
#application/msword doc string(0,<D0CF11E0A1B11AE1>)
-application/pdf pdf regex(0,^[\\n\\r]*%PDF)
+application/pdf pdf regex(0,^[\n\r]*%PDF)
application/postscript ai eps ps string(0,%!) string(0,<04>%!) \
contains(0,128,<1B>%-12345X) + \
(contains(0,4096,"LANGUAGE=POSTSCRIPT") \
diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4
index 63526682f..0d6fc2fe7 100644
--- a/config-scripts/cups-common.m4
+++ b/config-scripts/cups-common.m4
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: cups-common.m4 12785 2015-07-14 18:07:49Z msweet $"
+dnl "$Id: cups-common.m4 12852 2015-08-28 13:29:21Z msweet $"
dnl
dnl Common configuration stuff for CUPS.
dnl
@@ -17,7 +17,7 @@ dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number information...
-CUPS_VERSION=2.1rc1
+CUPS_VERSION=2.1.0
case "$CUPS_VERSION" in
*svn)
@@ -327,7 +327,7 @@ DBUSDIR=""
DBUS_NOTIFIER=""
DBUS_NOTIFIERLIBS=""
-if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
+if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$uname" != xDarwin; then
AC_MSG_CHECKING(for DBUS)
if $PKGCONFIG --exists dbus-1; then
AC_MSG_RESULT(yes)
@@ -474,5 +474,5 @@ esac
AC_SUBST(BUILDDIRS)
dnl
-dnl End of "$Id: cups-common.m4 12785 2015-07-14 18:07:49Z msweet $".
+dnl End of "$Id: cups-common.m4 12852 2015-08-28 13:29:21Z msweet $".
dnl
diff --git a/config-scripts/cups-defaults.m4 b/config-scripts/cups-defaults.m4
index 3db1e9121..432a92734 100644
--- a/config-scripts/cups-defaults.m4
+++ b/config-scripts/cups-defaults.m4
@@ -1,9 +1,9 @@
dnl
-dnl "$Id: cups-defaults.m4 12350 2014-12-09 22:18:21Z msweet $"
+dnl "$Id: cups-defaults.m4 12846 2015-08-26 18:26:22Z msweet $"
dnl
dnl Default cupsd configuration settings for CUPS.
dnl
-dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 2007-2015 by Apple Inc.
dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
@@ -85,7 +85,7 @@ AC_SUBST(CUPS_ACCESS_LOG_LEVEL)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_ACCESS_LOG_LEVEL, "$CUPS_ACCESS_LOG_LEVEL")
dnl Default PageLogFormat
-AC_ARG_WITH(page_logging, [ --enable-page-logging enable page_log by default])
+AC_ARG_ENABLE(page_logging, [ --enable-page-logging enable page_log by default])
if test "x$enable_page_logging" = xyes; then
CUPS_PAGE_LOG_FORMAT=""
else
@@ -409,5 +409,5 @@ AC_SUBST(CUPS_WEBIF)
AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
dnl
-dnl End of "$Id: cups-defaults.m4 12350 2014-12-09 22:18:21Z msweet $".
+dnl End of "$Id: cups-defaults.m4 12846 2015-08-26 18:26:22Z msweet $".
dnl
diff --git a/config-scripts/cups-dnssd.m4 b/config-scripts/cups-dnssd.m4
index 570856321..69e5d3707 100644
--- a/config-scripts/cups-dnssd.m4
+++ b/config-scripts/cups-dnssd.m4
@@ -1,9 +1,9 @@
dnl
-dnl "$Id: cups-dnssd.m4 11324 2013-10-04 03:11:42Z msweet $"
+dnl "$Id: cups-dnssd.m4 12845 2015-08-26 18:23:53Z msweet $"
dnl
dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
dnl
-dnl Copyright 2007-2012 by Apple Inc.
+dnl Copyright 2007-2015 by Apple Inc.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl property of Apple Inc. and are protected by Federal copyright
@@ -26,7 +26,7 @@ DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
-if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
+if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$uname != xDarwin; then
AC_MSG_CHECKING(for Avahi)
if $PKGCONFIG --exists avahi-client; then
AC_MSG_RESULT(yes)
@@ -82,5 +82,5 @@ AC_SUBST(IPPFIND_BIN)
AC_SUBST(IPPFIND_MAN)
dnl
-dnl End of "$Id: cups-dnssd.m4 11324 2013-10-04 03:11:42Z msweet $".
+dnl End of "$Id: cups-dnssd.m4 12845 2015-08-26 18:23:53Z msweet $".
dnl
diff --git a/config-scripts/cups-startup.m4 b/config-scripts/cups-startup.m4
index ea7b23150..dfe4740c9 100644
--- a/config-scripts/cups-startup.m4
+++ b/config-scripts/cups-startup.m4
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: cups-startup.m4 12784 2015-07-14 17:39:26Z msweet $"
+dnl "$Id: cups-startup.m4 12857 2015-08-31 15:00:45Z msweet $"
dnl
dnl Launch-on-demand/startup stuff for CUPS.
dnl
@@ -56,18 +56,33 @@ if test x$enable_systemd != xno; then
AC_MSG_ERROR(Need pkg-config to enable systemd support.)
fi
else
+ have_systemd=no
AC_MSG_CHECKING(for libsystemd)
if $PKGCONFIG --exists libsystemd; then
AC_MSG_RESULT(yes)
+ have_systemd=yes
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd`
+ elif $PKGCONFIG --exists libsystemd-daemon; then
+ AC_MSG_RESULT(yes - legacy)
+ have_systemd=yes
+ ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
+ ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
+
+ if $PKGCONFIG --exists libsystemd-journal; then
+ ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`"
+ ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`"
+ fi
+ else
+ AC_MSG_RESULT(no)
+ fi
+
+ if test $have_systemd = yes; then
AC_DEFINE(HAVE_SYSTEMD)
AC_CHECK_HEADER(systemd/sd-journal.h,AC_DEFINE(HAVE_SYSTEMD_SD_JOURNAL_H))
if test "x$SYSTEMD_DIR" = x; then
SYSTEMD_DIR="`$PKGCONFIG --variable=systemdsystemunitdir systemd`"
fi
- else
- AC_MSG_RESULT(no)
fi
fi
fi
@@ -173,5 +188,5 @@ fi
dnl
-dnl End of "$Id: cups-startup.m4 12784 2015-07-14 17:39:26Z msweet $".
+dnl End of "$Id: cups-startup.m4 12857 2015-08-31 15:00:45Z msweet $".
dnl
diff --git a/configure b/configure
index b841ef5d9..ae0d326fe 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,13 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for CUPS 2.1rc1.
+# Generated by GNU Autoconf 2.68 for CUPS 2.1.0.
#
# Report bugs to <https://www.cups.org/str.php>.
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -134,31 +136,6 @@ export LANGUAGE
# CDPATH.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-# Use a proper internal environment variable to ensure we don't fall
- # into an infinite loop, continuously re-executing ourselves.
- if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
- _as_can_reexec=no; export _as_can_reexec;
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
- fi
- # We don't want this to propagate to other subprocesses.
- { _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
emulate sh
@@ -192,8 +169,7 @@ if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
else
exitcode=1; echo positional parameters were not saved.
fi
-test x\$exitcode = x0 || exit 1
-test -x / || exit 1"
+test x\$exitcode = x0 || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
@@ -238,25 +214,21 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- export CONFIG_SHELL
- # We cannot yet assume a decent shell, so we have to provide a
-# neutralization value for shells without unset; and this also
-# works around shells that cannot unset nonexistent variables.
-# Preserve -v and -x to the replacement shell.
-BASH_ENV=/dev/null
-ENV=/dev/null
-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
-case $- in # ((((
- *v*x* | *x*v* ) as_opts=-vx ;;
- *v* ) as_opts=-v ;;
- *x* ) as_opts=-x ;;
- * ) as_opts= ;;
-esac
-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
-# Admittedly, this is quite paranoid, since all the known shells bail
-# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-exit 255
+ # We cannot yet assume a decent shell, so we have to provide a
+ # neutralization value for shells without unset; and this also
+ # works around shells that cannot unset nonexistent variables.
+ # Preserve -v and -x to the replacement shell.
+ BASH_ENV=/dev/null
+ ENV=/dev/null
+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+ export CONFIG_SHELL
+ case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+ esac
+ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
fi
if test x$as_have_required = xno; then :
@@ -359,14 +331,6 @@ $as_echo X"$as_dir" |
} # as_fn_mkdir_p
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} # as_fn_executable_p
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
@@ -488,10 +452,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
chmod +x "$as_me.lineno" ||
{ $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
- # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
- # already done that, so ensure we don't try to do so again and fall
- # in an infinite loop. This has already happened in practice.
- _as_can_reexec=no; export _as_can_reexec
# Don't try to exec as it changes $[0], causing all sort of problems
# (the dirname of $[0] is not the place where we might find the
# original and so on. Autoconf is especially sensitive to this).
@@ -526,16 +486,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
+ # In both cases, we have to default to `cp -p'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
fi
else
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -547,8 +507,28 @@ else
as_mkdir_p=false
fi
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -580,8 +560,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='CUPS'
PACKAGE_TARNAME='cups'
-PACKAGE_VERSION='2.1rc1'
-PACKAGE_STRING='CUPS 2.1rc1'
+PACKAGE_VERSION='2.1.0'
+PACKAGE_STRING='CUPS 2.1.0'
PACKAGE_BUGREPORT='https://www.cups.org/str.php'
PACKAGE_URL='https://www.cups.org/'
@@ -892,7 +872,7 @@ with_log_file_perm
with_fatal_errors
with_log_level
with_access_log_level
-with_page_logging
+enable_page_logging
enable_browsing
with_local_protocols
enable_default_shared
@@ -1380,6 +1360,8 @@ target=$target_alias
if test "x$host_alias" != x; then
if test "x$build_alias" = x; then
cross_compiling=maybe
+ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used" >&2
elif test "x$build_alias" != "x$host_alias"; then
cross_compiling=yes
fi
@@ -1465,7 +1447,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.1rc1 to adapt to many kinds of systems.
+\`configure' configures CUPS 2.1.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1526,7 +1508,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of CUPS 2.1rc1:";;
+ short | recursive ) echo "Configuration of CUPS 2.1.0:";;
esac
cat <<\_ACEOF
@@ -1560,6 +1542,7 @@ Optional Features:
--disable-dnssd disable DNS Service Discovery support using mDNSResponder
--disable-launchd disable launchd support
--disable-systemd disable systemd support
+ --enable-page-logging enable page_log by default
--disable-browsing disable Browsing by default
--disable-default-shared
disable DefaultShared by default
@@ -1609,7 +1592,6 @@ Optional Packages:
--with-fatal-errors set default FatalErrors value, default=config
--with-log-level set default LogLevel value, default=warn
--with-access-log-level set default AccessLogLevel value, default=none
- --enable-page-logging enable page_log by default
--with-local-protocols set default BrowseLocalProtocols, default=""
--with-cups-user set default user for CUPS
--with-cups-group set default group for CUPS
@@ -1705,10 +1687,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-CUPS configure 2.1rc1
-generated by GNU Autoconf 2.69
+CUPS configure 2.1.0
+generated by GNU Autoconf 2.68
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1859,7 +1841,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- test -x conftest$ac_exeext
+ $as_test_x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -2169,8 +2151,8 @@ 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.1rc1, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+It was created by CUPS $as_me 2.1.0, which was
+generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
@@ -2544,7 +2526,7 @@ esac
ac_config_headers="$ac_config_headers config.h"
-CUPS_VERSION=2.1rc1
+CUPS_VERSION=2.1.0
case "$CUPS_VERSION" in
*svn)
@@ -2604,7 +2586,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_AWK="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2652,7 +2634,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -2696,7 +2678,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3140,7 +3122,8 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-struct stat;
+#include <sys/types.h>
+#include <sys/stat.h>
/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
struct buf { int x; };
FILE * (*rcsopen) (struct buf *, struct stat *, int);
@@ -3390,7 +3373,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3434,7 +3417,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3636,7 +3619,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3676,7 +3659,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
@@ -3729,7 +3712,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_AR="$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
@@ -3769,7 +3752,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_CHMOD="$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
@@ -3809,7 +3792,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_GZIP="$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
@@ -3849,7 +3832,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LD="$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
@@ -3889,7 +3872,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LN="$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
@@ -3929,7 +3912,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_MV="$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
@@ -3969,7 +3952,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_RM="$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
@@ -4009,7 +3992,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_RMDIR="$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
@@ -4049,7 +4032,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_SED="$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
@@ -4089,7 +4072,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_XDGOPEN="$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
@@ -4165,7 +4148,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PKGCONFIG="$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
@@ -4208,7 +4191,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_PKGCONFIG="$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
@@ -4618,7 +4601,7 @@ do
for ac_prog in grep ggrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
# Check for GNU ac_path_GREP and select it if it is found.
# Check for GNU $ac_path_GREP
case `"$ac_path_GREP" --version 2>&1` in
@@ -4684,7 +4667,7 @@ do
for ac_prog in egrep; do
for ac_exec_ext in '' $ac_executable_extensions; do
ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
# Check for GNU ac_path_EGREP and select it if it is found.
# Check for GNU $ac_path_EGREP
case `"$ac_path_EGREP" --version 2>&1` in
@@ -5677,7 +5660,7 @@ DBUSDIR=""
DBUS_NOTIFIER=""
DBUS_NOTIFIERLIBS=""
-if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x; then
+if test "x$enable_dbus" != xno -a "x$PKGCONFIG" != x -a "x$uname" != xDarwin; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DBUS" >&5
$as_echo_n "checking for DBUS... " >&6; }
if $PKGCONFIG --exists dbus-1; then
@@ -7649,7 +7632,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_KRB5CONFIG="$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
@@ -7692,7 +7675,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_KRB5CONFIG="$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
@@ -8246,7 +8229,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LIBGNUTLSCONFIG="$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
@@ -8289,7 +8272,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_LIBGNUTLSCONFIG="$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
@@ -8344,7 +8327,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_LIBGCRYPTCONFIG="$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
@@ -8387,7 +8370,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_ac_pt_LIBGCRYPTCONFIG="$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
@@ -8948,8 +8931,6 @@ _ACEOF
esac
rm -rf conftest*
fi
-
-
fi
@@ -9041,7 +9022,7 @@ DNSSD_BACKEND=""
IPPFIND_BIN=""
IPPFIND_MAN=""
-if test "x$PKGCONFIG" != x -a x$enable_avahi != xno; then
+if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$uname != xDarwin; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Avahi" >&5
$as_echo_n "checking for Avahi... " >&6; }
if $PKGCONFIG --exists avahi-client; then
@@ -9197,13 +9178,32 @@ if test x$enable_systemd != xno; then
as_fn_error $? "Need pkg-config to enable systemd support." "$LINENO" 5
fi
else
+ have_systemd=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd" >&5
$as_echo_n "checking for libsystemd... " >&6; }
if $PKGCONFIG --exists libsystemd; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
+ have_systemd=yes
ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd`
ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd`
+ elif $PKGCONFIG --exists libsystemd-daemon; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes - legacy" >&5
+$as_echo "yes - legacy" >&6; }
+ have_systemd=yes
+ ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
+ ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
+
+ if $PKGCONFIG --exists libsystemd-journal; then
+ ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`"
+ ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`"
+ fi
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ fi
+
+ if test $have_systemd = yes; then
$as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h
ac_fn_c_check_header_mongrel "$LINENO" "systemd/sd-journal.h" "ac_cv_header_systemd_sd_journal_h" "$ac_includes_default"
@@ -9216,9 +9216,6 @@ fi
if test "x$SYSTEMD_DIR" = x; then
SYSTEMD_DIR="`$PKGCONFIG --variable=systemdsystemunitdir systemd`"
fi
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
fi
fi
fi
@@ -9483,10 +9480,9 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
-
-# Check whether --with-page_logging was given.
-if test "${with_page_logging+set}" = set; then :
- withval=$with_page_logging;
+# Check whether --enable-page_logging was given.
+if test "${enable_page_logging+set}" = set; then :
+ enableval=$enable_page_logging;
fi
if test "x$enable_page_logging" = xyes; then
@@ -9954,7 +9950,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_JAVA="$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
@@ -10017,7 +10013,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PERL="$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
@@ -10080,7 +10076,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PHPCGI="$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
@@ -10121,7 +10117,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PHP="$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
@@ -10189,7 +10185,7 @@ do
IFS=$as_save_IFS
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
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_path_PYTHON="$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
@@ -10658,16 +10654,16 @@ if (echo >conf$$.file) 2>/dev/null; then
# ... but there are two gotchas:
# 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
# 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
- # In both cases, we have to default to `cp -pR'.
+ # In both cases, we have to default to `cp -p'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
fi
else
- as_ln_s='cp -pR'
+ as_ln_s='cp -p'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -10727,16 +10723,28 @@ else
as_mkdir_p=false
fi
-
-# as_fn_executable_p FILE
-# -----------------------
-# Test if FILE is an executable regular file.
-as_fn_executable_p ()
-{
- test -f "$1" && test -x "$1"
-} # as_fn_executable_p
-as_test_x='test -x'
-as_executable_p=as_fn_executable_p
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in #(
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
# Sed expression to map a string onto a valid CPP name.
as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
@@ -10757,8 +10765,8 @@ 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.1rc1, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+This file was extended by CUPS $as_me 2.1.0, which was
+generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -10820,11 +10828,11 @@ _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.1rc1
-configured by $0, generated by GNU Autoconf 2.69,
+CUPS config.status 2.1.0
+configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2010 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -10913,7 +10921,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
diff --git a/configure.ac b/configure.ac
index f19c60358..209d19d19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: configure.ac 12787 2015-07-14 21:19:57Z msweet $"
+dnl "$Id: configure.ac 12831 2015-08-05 14:24:32Z msweet $"
dnl
dnl Configuration script for CUPS.
dnl
@@ -17,7 +17,7 @@ dnl We need at least autoconf 2.60...
AC_PREREQ(2.60)
dnl Package name and version...
-AC_INIT([CUPS], [2.1rc1], [https://www.cups.org/str.php], [cups], [https://www.cups.org/])
+AC_INIT([CUPS], [2.1.0], [https://www.cups.org/str.php], [cups], [https://www.cups.org/])
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
@@ -95,5 +95,5 @@ AC_OUTPUT(Makedefs
chmod +x cups-config
dnl
-dnl End of "$Id: configure.ac 12787 2015-07-14 21:19:57Z msweet $".
+dnl End of "$Id: configure.ac 12831 2015-08-05 14:24:32Z msweet $".
dnl
diff --git a/cups/Makefile b/cups/Makefile
index ed44fab58..7b6521479 100644
--- a/cups/Makefile
+++ b/cups/Makefile
@@ -1,5 +1,5 @@
#
-# "$Id: Makefile 12635 2015-05-19 02:12:22Z msweet $"
+# "$Id: Makefile 12850 2015-08-27 19:29:06Z msweet $"
#
# API library Makefile for CUPS.
#
@@ -83,6 +83,7 @@ LIBOBJS = \
TESTOBJS = \
testadmin.o \
testarray.o \
+ testcache.o \
testconflicts.o \
testcups.o \
testdest.o \
@@ -677,5 +678,5 @@ tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c
#
-# End of "$Id: Makefile 12635 2015-05-19 02:12:22Z msweet $".
+# End of "$Id: Makefile 12850 2015-08-27 19:29:06Z msweet $".
#
diff --git a/cups/http.c b/cups/http.c
index 98188a4b5..5c7d649a3 100644
--- a/cups/http.c
+++ b/cups/http.c
@@ -1,5 +1,5 @@
/*
- * "$Id: http.c 12333 2014-12-09 21:01:46Z msweet $"
+ * "$Id: http.c 12848 2015-08-26 18:51:57Z msweet $"
*
* HTTP routines for CUPS.
*
@@ -898,7 +898,7 @@ httpGetContentEncoding(http_t *http) /* I - HTTP connection */
*/
const char * /* O - Cookie data or NULL */
-httpGetCookie(http_t *http) /* I - HTTP connecion */
+httpGetCookie(http_t *http) /* I - HTTP connection */
{
return (http ? http->cookie : NULL);
}
@@ -4850,5 +4850,5 @@ http_write_chunk(http_t *http, /* I - HTTP connection */
/*
- * End of "$Id: http.c 12333 2014-12-09 21:01:46Z msweet $".
+ * End of "$Id: http.c 12848 2015-08-26 18:51:57Z msweet $".
*/
diff --git a/cups/http.h b/cups/http.h
index 867517b71..a451a2c1e 100644
--- a/cups/http.h
+++ b/cups/http.h
@@ -1,5 +1,5 @@
/*
- * "$Id: http.h 12094 2014-08-19 12:15:11Z msweet $"
+ * "$Id: http.h 12848 2015-08-26 18:51:57Z msweet $"
*
* Hyper-Text Transport Protocol definitions for CUPS.
*
@@ -246,7 +246,7 @@ typedef enum http_status_e /**** HTTP status codes ****/
HTTP_STATUS_NOT_AUTHORITATIVE, /* Information isn't authoritative */
HTTP_STATUS_NO_CONTENT, /* Successful command, no new data */
HTTP_STATUS_RESET_CONTENT, /* Content was reset/recreated */
- HTTP_STATUS_PARTIAL_CONTENT, /* Only a partial file was recieved/sent */
+ HTTP_STATUS_PARTIAL_CONTENT, /* Only a partial file was received/sent */
HTTP_STATUS_MULTIPLE_CHOICES = 300, /* Multiple files match request */
HTTP_STATUS_MOVED_PERMANENTLY, /* Document has moved permanently */
@@ -656,5 +656,5 @@ extern const char *httpURIStatusString(http_uri_status_t status) _CUPS_API_2_0;
#endif /* !_CUPS_HTTP_H_ */
/*
- * End of "$Id: http.h 12094 2014-08-19 12:15:11Z msweet $".
+ * End of "$Id: http.h 12848 2015-08-26 18:51:57Z msweet $".
*/
diff --git a/cups/language.c b/cups/language.c
index aa8106355..857978753 100644
--- a/cups/language.c
+++ b/cups/language.c
@@ -1,5 +1,5 @@
/*
- * "$Id: language.c 12790 2015-07-20 17:05:06Z msweet $"
+ * "$Id: language.c 12841 2015-08-10 17:07:30Z msweet $"
*
* I18N/language support for CUPS.
*
@@ -1180,7 +1180,7 @@ appleLangDefault(void)
* See if we have an Info.plist file in the bundle...
*/
- CFStringGetCString(cfpath, path,sizeof(path), kCFStringEncodingUTF8);
+ CFStringGetCString(cfpath, path, sizeof(path), kCFStringEncodingUTF8);
DEBUG_printf(("3appleLangDefault: Got a resource URL (\"%s\")", path));
strlcat(path, "Contents/Info.plist", sizeof(path));
@@ -1211,7 +1211,6 @@ appleLangDefault(void)
if (localizationList)
{
-
#ifdef DEBUG
if (CFGetTypeID(localizationList) == CFArrayGetTypeID())
DEBUG_printf(("3appleLangDefault: Got localizationList, %d entries.",
@@ -1287,6 +1286,8 @@ appleLangDefault(void)
strlcpy(cg->language, "en_US.UTF-8", sizeof(cg->language));
}
}
+ else
+ DEBUG_printf(("3appleLangDefault: Using previous locale \"%s\".", cg->language));
/*
* Return the cached locale...
@@ -1324,6 +1325,18 @@ appleMessageLoad(const char *locale) /* I - Locale ID */
snprintf(filename, sizeof(filename),
CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings",
_cupsAppleLanguage(locale, applelang, sizeof(applelang)));
+
+ if (access(filename, 0))
+ {
+ /*
+ * <rdar://problem/22086642>
+ *
+ * Try with original locale string...
+ */
+
+ snprintf(filename, sizeof(filename), CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings", locale);
+ }
+
DEBUG_printf(("1appleMessageLoad: filename=\"%s\"", filename));
if (access(filename, 0))
@@ -1346,6 +1359,19 @@ appleMessageLoad(const char *locale) /* I - Locale ID */
locale = "Japanese";
else if (!strncmp(locale, "es", 2))
locale = "Spanish";
+ else if (!strcmp(locale, "zh_HK"))
+ {
+ /*
+ * <rdar://problem/22130168>
+ *
+ * Try zh_TW first, then zh... Sigh...
+ */
+
+ if (!access(CUPS_BUNDLEDIR "/Resources/zh_TW.lproj/cups.strings", 0))
+ locale = "zh_TW";
+ else
+ locale = "zh";
+ }
else if (strstr(locale, "_") != NULL || strstr(locale, "-") != NULL)
{
/*
@@ -1598,5 +1624,5 @@ cups_unquote(char *d, /* O - Unquoted string */
/*
- * End of "$Id: language.c 12790 2015-07-20 17:05:06Z msweet $".
+ * End of "$Id: language.c 12841 2015-08-10 17:07:30Z msweet $".
*/
diff --git a/cups/localize.c b/cups/localize.c
index 42c5fff93..23faa555c 100644
--- a/cups/localize.c
+++ b/cups/localize.c
@@ -1,9 +1,9 @@
/*
- * "$Id: localize.c 11698 2014-03-17 11:58:18Z msweet $"
+ * "$Id: localize.c 12834 2015-08-06 13:56:32Z msweet $"
*
* PPD localization routines for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -664,8 +664,23 @@ _ppdLocalizedAttr(ppd_file_t *ppd, /* I - PPD file */
snprintf(lkeyword, sizeof(lkeyword), "%s.%s", ll_CC, keyword);
if ((attr = ppdFindAttr(ppd, lkeyword, spec)) == NULL)
{
- snprintf(lkeyword, sizeof(lkeyword), "%2.2s.%s", ll_CC, keyword);
- attr = ppdFindAttr(ppd, lkeyword, spec);
+ /*
+ * <rdar://problem/22130168>
+ *
+ * Hong Kong locale needs special handling... Sigh...
+ */
+
+ if (!strcmp(ll_CC, "zh_HK"))
+ {
+ snprintf(lkeyword, sizeof(lkeyword), "zh_TW.%s", keyword);
+ attr = ppdFindAttr(ppd, lkeyword, spec);
+ }
+
+ if (!attr)
+ {
+ snprintf(lkeyword, sizeof(lkeyword), "%2.2s.%s", ll_CC, keyword);
+ attr = ppdFindAttr(ppd, lkeyword, spec);
+ }
if (!attr)
{
@@ -760,5 +775,5 @@ ppd_ll_CC(char *ll_CC, /* O - Country-specific locale name */
/*
- * End of "$Id: localize.c 11698 2014-03-17 11:58:18Z msweet $".
+ * End of "$Id: localize.c 12834 2015-08-06 13:56:32Z msweet $".
*/
diff --git a/cups/ppd.c b/cups/ppd.c
index b3ebea4d4..4afc4bba1 100644
--- a/cups/ppd.c
+++ b/cups/ppd.c
@@ -1,9 +1,9 @@
/*
- * "$Id: ppd.c 11558 2014-02-06 18:33:34Z msweet $"
+ * "$Id: ppd.c 12848 2015-08-26 18:51:57Z msweet $"
*
* PPD file routines for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -283,7 +283,7 @@ ppdClose(ppd_file_t *ppd) /* I - PPD file record */
/*
- * 'ppdErrorString()' - Returns the text assocated with a status.
+ * 'ppdErrorString()' - Returns the text associated with a status.
*
* @since CUPS 1.1.19/OS X 10.3@
*/
@@ -418,10 +418,10 @@ _ppdOpen(
char custom_name[PPD_MAX_NAME];
/* CustomFoo attribute name */
ppd_attr_t *custom_attr; /* CustomFoo attribute */
- char ll[4], /* Language + '.' */
- ll_CC[7]; /* Language + country + '.' */
- size_t ll_len = 0, /* Language length */
- ll_CC_len = 0; /* Language + country length */
+ char ll[7], /* Base language + '.' */
+ ll_CC[7]; /* Language w/country + '.' */
+ size_t ll_len = 0, /* Base language length */
+ ll_CC_len = 0; /* Language w/country length */
static const char * const ui_keywords[] =
{
#ifdef CUPS_USE_FULL_UI_KEYWORDS_LIST
@@ -519,7 +519,17 @@ _ppdOpen(
return (NULL);
snprintf(ll_CC, sizeof(ll_CC), "%s.", lang->language);
- snprintf(ll, sizeof(ll), "%2.2s.", lang->language);
+
+ /*
+ * <rdar://problem/22130168>
+ *
+ * Need to use a different base language for some locales...
+ */
+
+ if (!strcmp(lang->language, "zh_HK"))
+ strlcpy(ll, "zh_TW.", sizeof(ll));
+ else
+ snprintf(ll, sizeof(ll), "%2.2s.", lang->language);
ll_CC_len = strlen(ll_CC);
ll_len = strlen(ll);
@@ -3346,5 +3356,5 @@ ppd_update_filters(ppd_file_t *ppd,/* I - PPD file */
/*
- * End of "$Id: ppd.c 11558 2014-02-06 18:33:34Z msweet $".
+ * End of "$Id: ppd.c 12848 2015-08-26 18:51:57Z msweet $".
*/
diff --git a/cups/testlang.c b/cups/testlang.c
index 7c16f821b..1b7b68697 100644
--- a/cups/testlang.c
+++ b/cups/testlang.c
@@ -1,9 +1,9 @@
/*
- * "$Id: testlang.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "$Id: testlang.c 12841 2015-08-10 17:07:30Z msweet $"
*
* Localization test program for CUPS.
*
- * Copyright 2007-2010 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -50,8 +50,6 @@ main(int argc, /* I - Number of command-line arguments */
};
- _cupsSetLocale(argv);
-
if (argc == 1)
{
language = cupsLangDefault();
@@ -61,8 +59,13 @@ main(int argc, /* I - Number of command-line arguments */
{
language = cupsLangGet(argv[1]);
language2 = cupsLangGet(argv[1]);
+
+ setenv("LANG", argv[1], 1);
+ setenv("SOFTWARE", "CUPS/" CUPS_SVERSION, 1);
}
+ _cupsSetLocale(argv);
+
if (language != language2)
{
errors ++;
@@ -105,10 +108,49 @@ main(int argc, /* I - Number of command-line arguments */
}
}
+ if (argc == 3)
+ {
+ ppd_file_t *ppd; /* PPD file */
+ ppd_option_t *option; /* PageSize option */
+ ppd_choice_t *choice; /* PageSize/Letter choice */
+
+ if ((ppd = ppdOpenFile(argv[2])) == NULL)
+ {
+ printf("Unable to open PPD file \"%s\".\n", argv[2]);
+ errors ++;
+ }
+ else
+ {
+ ppdLocalize(ppd);
+
+ if ((option = ppdFindOption(ppd, "PageSize")) == NULL)
+ {
+ puts("No PageSize option.");
+ errors ++;
+ }
+ else
+ {
+ printf("PageSize: %s\n", option->text);
+
+ if ((choice = ppdFindChoice(option, "Letter")) == NULL)
+ {
+ puts("No Letter PageSize choice.");
+ errors ++;
+ }
+ else
+ {
+ printf("Letter: %s\n", choice->text);
+ }
+ }
+
+ ppdClose(ppd);
+ }
+ }
+
return (errors > 0);
}
/*
- * End of "$Id: testlang.c 10996 2013-05-29 11:51:34Z msweet $".
+ * End of "$Id: testlang.c 12841 2015-08-10 17:07:30Z msweet $".
*/
diff --git a/doc/help/accounting.html b/doc/help/accounting.html
index d25d5019a..ea37a556d 100644
--- a/doc/help/accounting.html
+++ b/doc/help/accounting.html
@@ -26,7 +26,7 @@ options determine whether and how quotas are enforced for a printer.
The <CODE>job-quota-period</CODE> option determines the time interval for
quota tracking. The interval is expressed in seconds, so a day is
86,400, a week is 604,800, and a month is 2,592,000 seconds. The
-<CODE>job-k-limit</CODE> option specifies the job size limit in killobytes. The
+<CODE>job-k-limit</CODE> option specifies the job size limit in kilobytes. The
<CODE>job-page-limit</CODE> option specifies the number of pages limit.</P>
<P>For quotas to be enforced, the period and at least one of the limits
diff --git a/doc/help/api-array.html b/doc/help/api-array.html
index cd93e87fb..220c0f1cb 100644
--- a/doc/help/api-array.html
+++ b/doc/help/api-array.html
@@ -5,7 +5,7 @@
<title>Array API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-cgi.html b/doc/help/api-cgi.html
index 4996c87c2..63eb9ca6d 100644
--- a/doc/help/api-cgi.html
+++ b/doc/help/api-cgi.html
@@ -5,7 +5,7 @@
<title>CGI API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-cups.html b/doc/help/api-cups.html
index 489c23a6f..12691827f 100644
--- a/doc/help/api-cups.html
+++ b/doc/help/api-cups.html
@@ -5,7 +5,7 @@
<title>CUPS API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -3675,6 +3675,8 @@ locale ID.</p>
constants</p>
<h4 class="constants">Constants</h4>
<dl>
+<dt>CUPS_PRINTER_3D <span class="info">&nbsp;CUPS 2.1&nbsp;</span></dt>
+<dd class="description">3D Printing </dd>
<dt>CUPS_PRINTER_AUTHENTICATED <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
<dd class="description">Printer requires authentication
</dd>
diff --git a/doc/help/api-filedir.html b/doc/help/api-filedir.html
index 0354761e1..309d09daa 100644
--- a/doc/help/api-filedir.html
+++ b/doc/help/api-filedir.html
@@ -5,7 +5,7 @@
<title>File and Directory APIs </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-filter.html b/doc/help/api-filter.html
index 39d183729..1ab935b51 100644
--- a/doc/help/api-filter.html
+++ b/doc/help/api-filter.html
@@ -5,7 +5,7 @@
<title>Filter and Backend Programming </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-httpipp.html b/doc/help/api-httpipp.html
index 236c24923..7fc0c066c 100644
--- a/doc/help/api-httpipp.html
+++ b/doc/help/api-httpipp.html
@@ -5,7 +5,7 @@
<title>HTTP and IPP APIs </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -2206,7 +2206,7 @@ const char *httpGetCookie (<br>
<h4 class="parameters">Parameters</h4>
<dl>
<dt>http</dt>
-<dd class="description">HTTP connecion</dd>
+<dd class="description">HTTP connection</dd>
</dl>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Cookie data or NULL</p>
@@ -5984,7 +5984,7 @@ are server-oriented...</p>
<dt>HTTP_STATUS_OK </dt>
<dd class="description">OPTIONS/GET/HEAD/POST/TRACE command was successful</dd>
<dt>HTTP_STATUS_PARTIAL_CONTENT </dt>
-<dd class="description">Only a partial file was recieved/sent</dd>
+<dd class="description">Only a partial file was received/sent</dd>
<dt>HTTP_STATUS_PAYMENT_REQUIRED </dt>
<dd class="description">Payment required</dd>
<dt>HTTP_STATUS_PRECONDITION </dt>
diff --git a/doc/help/api-mime.html b/doc/help/api-mime.html
index 2496acdcc..d95734299 100644
--- a/doc/help/api-mime.html
+++ b/doc/help/api-mime.html
@@ -5,7 +5,7 @@
<title>MIME API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-overview.html b/doc/help/api-overview.html
index 3cd6f26f4..01a041493 100644
--- a/doc/help/api-overview.html
+++ b/doc/help/api-overview.html
@@ -5,7 +5,7 @@
<title>Introduction to CUPS Programming </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-ppd.html b/doc/help/api-ppd.html
index 5ff14c622..df8f7a98c 100644
--- a/doc/help/api-ppd.html
+++ b/doc/help/api-ppd.html
@@ -5,7 +5,7 @@
<title>PPD API (DEPRECATED) </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -416,7 +416,7 @@ marked option choices.">ppdConflicts</a></li>
<li><a href="#ppdEmitJCL" title="Emit code for JCL options to a file.">ppdEmitJCL</a></li>
<li><a href="#ppdEmitJCLEnd" title="Emit JCLEnd code to a file.">ppdEmitJCLEnd</a></li>
<li><a href="#ppdEmitString" title="Get a string containing the code for marked options.">ppdEmitString</a></li>
- <li><a href="#ppdErrorString" title="Returns the text assocated with a status.">ppdErrorString</a></li>
+ <li><a href="#ppdErrorString" title="Returns the text associated with a status.">ppdErrorString</a></li>
<li><a href="#ppdFindAttr" title="Find the first matching attribute.">ppdFindAttr</a></li>
<li><a href="#ppdFindChoice" title="Return a pointer to an option choice.">ppdFindChoice</a></li>
<li><a href="#ppdFindCustomOption" title="Find a custom option.">ppdFindCustomOption</a></li>
@@ -1051,7 +1051,7 @@ The return string is allocated on the heap and should be freed using
</p>
<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppdErrorString">ppdErrorString</a></h3>
-<p class="description">Returns the text assocated with a status.</p>
+<p class="description">Returns the text associated with a status.</p>
<p class="code">
const char *ppdErrorString (<br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppd_status_t">ppd_status_t</a> status<br>
diff --git a/doc/help/api-ppdc.html b/doc/help/api-ppdc.html
index d4290b722..df3213575 100644
--- a/doc/help/api-ppdc.html
+++ b/doc/help/api-ppdc.html
@@ -5,7 +5,7 @@
<title>PPD Compiler API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/api-raster.html b/doc/help/api-raster.html
index 3c8ffe8b1..9acda474f 100644
--- a/doc/help/api-raster.html
+++ b/doc/help/api-raster.html
@@ -5,7 +5,7 @@
<title>Raster API </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/kerberos.html b/doc/help/kerberos.html
index e17f900aa..d6c208c08 100644
--- a/doc/help/kerberos.html
+++ b/doc/help/kerberos.html
@@ -60,7 +60,7 @@ DNS server(s).</li>
<H2 CLASS="title"><A NAME="CUPS">Configuring CUPS to Use Kerberos</A></H2>
-<P>Once youhave configured Kerberos on your system(s), you can then enable Kerberos authentication by selecting the <tt>Negotiate</tt> authentication type. The simplest way to do this is using the <tt>cupsctl(8)</tt> command on your server(s):</P>
+<P>Once you have configured Kerberos on your system(s), you can then enable Kerberos authentication by selecting the <tt>Negotiate</tt> authentication type. The simplest way to do this is using the <tt>cupsctl(8)</tt> command on your server(s):</P>
<PRE CLASS="command">
<KBD>cupsctl DefaultAuthType=Negotiate</KBD>
diff --git a/doc/help/man-backend.html b/doc/help/man-backend.html
index e60bc53b1..4ccad790d 100644
--- a/doc/help/man-backend.html
+++ b/doc/help/man-backend.html
@@ -91,7 +91,7 @@ network URIs.
<dt><b>serial</b>
<dd style="margin-left: 5.0em">The device-uri refers to a serial device with configurable baud rate and other options. If the device-uri contains a baud value, it represents the maximum baud rate supported by the device.
</dl>
-<p>The
+<p>The
<i>scheme</i>
field provides the URI scheme that is supported by the backend. Backends should use this form only when the backend supports any URI using that scheme. The
<i>device-uri</i>
@@ -173,7 +173,7 @@ for more information.
<br>
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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cancel.html b/doc/help/man-cancel.html
index 40b3bf218..f68f4406a 100644
--- a/doc/help/man-cancel.html
+++ b/doc/help/man-cancel.html
@@ -83,7 +83,7 @@ Administrators wishing to prevent unauthorized cancellation of jobs via the <i>-
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-classes.conf.html b/doc/help/man-classes.conf.html
index 76e7c0b80..a453bbcaf 100644
--- a/doc/help/man-classes.conf.html
+++ b/doc/help/man-classes.conf.html
@@ -24,7 +24,7 @@ The name, location, and format of this file are an implementation detail that wi
<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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cups-config.html b/doc/help/man-cups-config.html
index 389c08110..705e2006f 100644
--- a/doc/help/man-cups-config.html
+++ b/doc/help/man-cups-config.html
@@ -94,7 +94,7 @@ Compile a simple one-file CUPS filter:
<a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cups-lpd.html b/doc/help/man-cups-lpd.html
index b4f1184e0..697518ac0 100644
--- a/doc/help/man-cups-lpd.html
+++ b/doc/help/man-cups-lpd.html
@@ -108,7 +108,7 @@ service using the corresponding control program.
CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
RFC 2569
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cups-snmp.conf.html b/doc/help/man-cups-snmp.conf.html
index fb8c88925..e0c18bd31 100644
--- a/doc/help/man-cups-snmp.conf.html
+++ b/doc/help/man-cups-snmp.conf.html
@@ -49,7 +49,7 @@ The default is 120 seconds (2 minutes).
<a href="man-cups-snmp.html?TOPIC=Man+Pages"><b>cups-snmp</b>(8),</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cups-snmp.html b/doc/help/man-cups-snmp.html
index 06a48133f..faa57639d 100644
--- a/doc/help/man-cups-snmp.html
+++ b/doc/help/man-cups-snmp.html
@@ -48,7 +48,7 @@ The CUPS SNMP backend uses the information from the Host, Printer, and Port Moni
<a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8),</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cups.html b/doc/help/man-cups.html
index 016056e2a..bc7390c85 100644
--- a/doc/help/man-cups.html
+++ b/doc/help/man-cups.html
@@ -113,7 +113,7 @@ CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help
CUPS Web Site (<a href="http://www.CUPS.org)">http://www.CUPS.org)</a>,
PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupsaccept.html b/doc/help/man-cupsaccept.html
index 739d615f0..fe46291cf 100644
--- a/doc/help/man-cupsaccept.html
+++ b/doc/help/man-cupsaccept.html
@@ -78,7 +78,7 @@ Also, printer and class names are <i>not</i> case-sensitive.
<br>
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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupsaddsmb.html b/doc/help/man-cupsaddsmb.html
index 622d30a7d..cb2901e27 100644
--- a/doc/help/man-cupsaddsmb.html
+++ b/doc/help/man-cupsaddsmb.html
@@ -115,7 +115,7 @@ This is useful for debugging SAMBA configuration problems.
<b>smb.conf</b>(5),
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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupsctl.html b/doc/help/man-cupsctl.html
index 7fe7fe99c..6ab47db2f 100644
--- a/doc/help/man-cupsctl.html
+++ b/doc/help/man-cupsctl.html
@@ -88,7 +88,7 @@ You cannot set the Listen or Port directives using <b>cupsctl</b>.
<br>
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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupsd-helper.html b/doc/help/man-cupsd-helper.html
index ecdb2ac8f..324408b07 100644
--- a/doc/help/man-cupsd-helper.html
+++ b/doc/help/man-cupsd-helper.html
@@ -78,7 +78,7 @@ archives to further reduce their size.
<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupsd-logs.html b/doc/help/man-cupsd-logs.html
index aa1a77b7f..25506817d 100644
--- a/doc/help/man-cupsd-logs.html
+++ b/doc/help/man-cupsd-logs.html
@@ -188,7 +188,7 @@ For printers that cannot produce copies on their own, the num-copies field will
<a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupsd.html b/doc/help/man-cupsd.html
index 8f90f447c..de1294217 100644
--- a/doc/help/man-cupsd.html
+++ b/doc/help/man-cupsd.html
@@ -14,7 +14,7 @@ cupsd - cups scheduler
[
<b>-c</b>
<i>config-file</i>
-] [
+] [
<b>-f</b>
] [
<b>-F</b>
@@ -111,7 +111,7 @@ in the foreground with a test configuration file called
<b>systemd</b>(8),
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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupsenable.html b/doc/help/man-cupsenable.html
index dbd8ab6e2..fe00393e0 100644
--- a/doc/help/man-cupsenable.html
+++ b/doc/help/man-cupsenable.html
@@ -86,7 +86,7 @@ This differs from the System V versions which require the root user to execute t
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
diff --git a/doc/help/man-cupsfilter.html b/doc/help/man-cupsfilter.html
index 4053c6e9c..1e32c1e64 100644
--- a/doc/help/man-cupsfilter.html
+++ b/doc/help/man-cupsfilter.html
@@ -120,7 +120,7 @@ The following command will generate a PDF preview of job 42 for a printer named
<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(7),</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupstestdsc.html b/doc/help/man-cupstestdsc.html
index 74f42efcf..5a99948f1 100644
--- a/doc/help/man-cupstestdsc.html
+++ b/doc/help/man-cupstestdsc.html
@@ -38,7 +38,7 @@ CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help
Adobe PostScript Language Document Structuring Conventions
Specification, Version 3.0.
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-cupstestppd.html b/doc/help/man-cupstestppd.html
index 549426da0..28d251804 100644
--- a/doc/help/man-cupstestppd.html
+++ b/doc/help/man-cupstestppd.html
@@ -121,7 +121,7 @@ The next command tests all PPD files under the current directory and print detai
CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
Adobe PostScript Printer Description File Format Specification, Version 4.3.
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-filter.html b/doc/help/man-filter.html
index 1ed2a9595..bb4f620bc 100644
--- a/doc/help/man-filter.html
+++ b/doc/help/man-filter.html
@@ -60,7 +60,7 @@ Options are passed in <i>argv[5]</i> and are encoded from the corresponding IPP
function to load the options into a <b>cups_option_t</b> array and the
<b>cupsGetOption</b>()
function to get the value of a specific attribute.
-Be careful to look for common aliases of IPP attributes such as "lansdscape" for the IPP "orientation-requested" attribute.
+Be careful to look for common aliases of IPP attributes such as "landscape" for the IPP "orientation-requested" attribute.
<p>Options passed on the command-line typically do not include the default choices the printer's PPD file. Use the
<b>ppdMarkDefaults</b>()
and
@@ -183,7 +183,7 @@ program to use the appropriate filters to do the conversions you need.
<br>
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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ippfind.html b/doc/help/man-ippfind.html
index b946c987e..41445fefc 100644
--- a/doc/help/man-ippfind.html
+++ b/doc/help/man-ippfind.html
@@ -198,7 +198,7 @@ Similarly, to send a PostScript test page to every PostScript printer, run:
<h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
<a href="man-ipptool.html?TOPIC=Man+Pages"><b>ipptool</b>(1)</a>
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2013-2014 by Apple Inc.
+Copyright &copy; 2013-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ipptool.html b/doc/help/man-ipptool.html
index 7f0dd5496..f3e3dc043 100644
--- a/doc/help/man-ipptool.html
+++ b/doc/help/man-ipptool.html
@@ -157,7 +157,7 @@ This is the default for XML output.
<h2 class="title"><a name="EXIT_STATUS">Exit Status</a></h2>
The
<b>ipptool</b>
-program returns 0 if all tests were sucessful and 1 otherwise.
+program returns 0 if all tests were successful and 1 otherwise.
<h2 class="title"><a name="FILES">Files</a></h2>
The following standard files are available:
<pre class="man">
diff --git a/doc/help/man-lp.html b/doc/help/man-lp.html
index 0af3e0b53..73d7c2d93 100644
--- a/doc/help/man-lp.html
+++ b/doc/help/man-lp.html
@@ -187,7 +187,7 @@ Print a presentation document 2-up to a printer called "foo":
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lpc.html b/doc/help/man-lpc.html
index c79e47061..e482a783d 100644
--- a/doc/help/man-lpc.html
+++ b/doc/help/man-lpc.html
@@ -48,7 +48,7 @@ command or another CUPS-compatible client with that functionality.
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lpinfo.html b/doc/help/man-lpinfo.html
index 876e1f693..bafd2bf4f 100644
--- a/doc/help/man-lpinfo.html
+++ b/doc/help/man-lpinfo.html
@@ -117,7 +117,7 @@ List drivers matching "HP LaserJet":
<a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lpmove.html b/doc/help/man-lpmove.html
index 526c084e0..8e902cd0d 100644
--- a/doc/help/man-lpmove.html
+++ b/doc/help/man-lpmove.html
@@ -69,7 +69,7 @@ Move all jobs from "oldprinter" to "newprinter":
<br>
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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lpoptions.html b/doc/help/man-lpoptions.html
index 2e171296b..0aeed451d 100644
--- a/doc/help/man-lpoptions.html
+++ b/doc/help/man-lpoptions.html
@@ -119,7 +119,7 @@ The <b>lpoptions</b> command is unique to CUPS.
<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lpq.html b/doc/help/man-lpq.html
index 8eecc512d..d54378ea9 100644
--- a/doc/help/man-lpq.html
+++ b/doc/help/man-lpq.html
@@ -55,7 +55,7 @@ Jobs queued on the default destination will be shown if no printer or class is s
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lpr.html b/doc/help/man-lpr.html
index b4aaaf57e..98fc7c638 100644
--- a/doc/help/man-lpr.html
+++ b/doc/help/man-lpr.html
@@ -124,7 +124,7 @@ Print a presentation document 2-up to a printer called "foo":
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lprm.html b/doc/help/man-lprm.html
index 09b177c75..558da4e2c 100644
--- a/doc/help/man-lprm.html
+++ b/doc/help/man-lprm.html
@@ -76,7 +76,7 @@ Cancel all jobs:
<a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-lpstat.html b/doc/help/man-lpstat.html
index b394b0c1d..3b7024e45 100644
--- a/doc/help/man-lpstat.html
+++ b/doc/help/man-lpstat.html
@@ -123,7 +123,7 @@ Also, printer and class names are <i>not</i> case-sensitive.
<a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-mailto.conf.html b/doc/help/man-mailto.conf.html
index 966b3651b..05b1e1497 100644
--- a/doc/help/man-mailto.conf.html
+++ b/doc/help/man-mailto.conf.html
@@ -36,7 +36,7 @@ If multiple lines are present, only the last one is used.
<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-mime.convs.html b/doc/help/man-mime.convs.html
index f1e045e5a..4d412624e 100644
--- a/doc/help/man-mime.convs.html
+++ b/doc/help/man-mime.convs.html
@@ -23,7 +23,7 @@ Filter lines specify the source and destination MIME types along with a relative
</pre>
The <i>source/type</i> field specifies the source MIME media type that is consumed by the filter.
-<p>The <i>destination/type</i> field specifies the destiantion MIME media type that is produced by the filter.
+<p>The <i>destination/type</i> field specifies the destination MIME media type that is produced by the filter.
<p>The <i>cost</i> field specifies the relative cost for running the filter.
A value of 100 means that the filter uses a large amount of resources while a value of 0 means that the filter uses very few resources.
<p>The <i>filter</i> field specifies the filter program filename.
@@ -49,7 +49,7 @@ Define a filter that converts PostScript documents to CUPS Raster format:
<a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-mime.types.html b/doc/help/man-mime.types.html
index 89c8a498f..34168d588 100644
--- a/doc/help/man-mime.types.html
+++ b/doc/help/man-mime.types.html
@@ -91,7 +91,7 @@ Define two MIME media types for raster data, with one being a subset with higher
<a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-notifier.html b/doc/help/man-notifier.html
index 5c65778d1..0a2cec0a7 100644
--- a/doc/help/man-notifier.html
+++ b/doc/help/man-notifier.html
@@ -31,7 +31,7 @@ Notifiers inherit the environment and can use the logging mechanism documented i
<a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ppdc.html b/doc/help/man-ppdc.html
index 5982c2f9a..7e5063e53 100644
--- a/doc/help/man-ppdc.html
+++ b/doc/help/man-ppdc.html
@@ -85,7 +85,7 @@ The default is to use the line feed character alone.
<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ppdcfile.html b/doc/help/man-ppdcfile.html
index 01876d964..4e4279722 100644
--- a/doc/help/man-ppdcfile.html
+++ b/doc/help/man-ppdcfile.html
@@ -89,7 +89,7 @@ This man page provides a quick reference to the supported keywords and should be
<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ppdhtml.html b/doc/help/man-ppdhtml.html
index 51cdcd227..e009f7e38 100644
--- a/doc/help/man-ppdhtml.html
+++ b/doc/help/man-ppdhtml.html
@@ -39,7 +39,7 @@ Multiple <i>-I</i> options can be supplied to add additional directories.
<a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ppdi.html b/doc/help/man-ppdi.html
index 9fb849990..bb5c08ba4 100644
--- a/doc/help/man-ppdi.html
+++ b/doc/help/man-ppdi.html
@@ -46,7 +46,7 @@ If no source file is specified, the filename <i>ppdi.drv</i> is used.
<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ppdmerge.html b/doc/help/man-ppdmerge.html
index 1a9d05ae2..efb095088 100644
--- a/doc/help/man-ppdmerge.html
+++ b/doc/help/man-ppdmerge.html
@@ -43,7 +43,7 @@ Merging of different device PPDs will yield unpredictable results.
<a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-ppdpo.html b/doc/help/man-ppdpo.html
index dfbf27840..4696f1c46 100644
--- a/doc/help/man-ppdpo.html
+++ b/doc/help/man-ppdpo.html
@@ -45,7 +45,7 @@ The supported extensions are <i>.po</i> or <i>.po.gz</i> for GNU gettext format
<b>ppdcfile(5),</b>
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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-printers.conf.html b/doc/help/man-printers.conf.html
index 625115a8b..8dfcce07a 100644
--- a/doc/help/man-printers.conf.html
+++ b/doc/help/man-printers.conf.html
@@ -24,7 +24,7 @@ The name, location, and format of this file are an implementation detail that wi
<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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/man-subscriptions.conf.html b/doc/help/man-subscriptions.conf.html
index 19868e546..0c7b5d03b 100644
--- a/doc/help/man-subscriptions.conf.html
+++ b/doc/help/man-subscriptions.conf.html
@@ -24,7 +24,7 @@ The name, location, and format of this file are an implementation detail that wi
<a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.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-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/postscript-driver.html b/doc/help/postscript-driver.html
index 2c0cd2eec..1469f45e5 100644
--- a/doc/help/postscript-driver.html
+++ b/doc/help/postscript-driver.html
@@ -5,7 +5,7 @@
<title>Developing PostScript Printer Drivers </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/ppd-compiler.html b/doc/help/ppd-compiler.html
index 7e24866bb..729e26851 100644
--- a/doc/help/ppd-compiler.html
+++ b/doc/help/ppd-compiler.html
@@ -5,7 +5,7 @@
<title>Introduction to the PPD Compiler </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/raster-driver.html b/doc/help/raster-driver.html
index 3a6c1320f..8055705f4 100644
--- a/doc/help/raster-driver.html
+++ b/doc/help/raster-driver.html
@@ -5,7 +5,7 @@
<title>Developing Raster Printer Drivers </title>
<meta name="keywords" content="Programming">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
diff --git a/doc/help/spec-design.html b/doc/help/spec-design.html
index 4b1311a9e..76cbd9cab 100644
--- a/doc/help/spec-design.html
+++ b/doc/help/spec-design.html
@@ -148,7 +148,7 @@ CUPS_SERVERBIN/notifier/foo recipient user-data
<P>Backends (<A HREF="man-backend.html">backend(7)</A>) send print data to the printer and enumerate available printers/devices as needed. Backends use the same interface as filters.</P>
-<P>CUPS includes backends for AppSocket (JetDirect), IPP, LPD, parallel, SCSI, serial, and USB connections. Additional backends can be added as needed without additional configuration.</P>
+<P>CUPS includes backends for AppSocket (JetDirect), IPP, LPD, and USB connections and DNS-SD and SNMP for discovery. Additional backends can be added as needed without additional configuration.</P>
<H2 CLASS="title"><A NAME="PROGRAMMING">Programming Interfaces</A></H2>
diff --git a/doc/help/spec-ppd.html b/doc/help/spec-ppd.html
index f25113b0c..58c50f7cc 100644
--- a/doc/help/spec-ppd.html
+++ b/doc/help/spec-ppd.html
@@ -5,7 +5,7 @@
<title>CUPS PPD Extensions </title>
<meta name="keywords" content="Specifications">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
- <meta name="creator" content="Mini-XML v2.8">
+ <meta name="creator" content="Mini-XML v2.7">
<style type="text/css"><!--
BODY {
font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -2027,7 +2027,7 @@ PPD file extensions was used. Currently it must be the string
<p class="summary">*JCLToPDFInterpreter: "JCL"</p>
-<p>This keyword provfides the JCL command to insert a PDF job file into a printer-ready data stream. The JCL command is added after the <tt>JCLBegin</tt> value and any commands for JCL options in the PPD file.</p>
+<p>This keyword provides the JCL command to insert a PDF job file into a printer-ready data stream. The JCL command is added after the <tt>JCLBegin</tt> value and any commands for JCL options in the PPD file.</p>
<p>Example:</p>
diff --git a/filter/spec-ppd.shtml b/filter/spec-ppd.shtml
index 33c2d5791..89d706039 100644
--- a/filter/spec-ppd.shtml
+++ b/filter/spec-ppd.shtml
@@ -1569,7 +1569,7 @@ PPD file extensions was used. Currently it must be the string
<p class="summary">*JCLToPDFInterpreter: "JCL"</p>
-<p>This keyword provfides the JCL command to insert a PDF job file into a printer-ready data stream. The JCL command is added after the <tt>JCLBegin</tt> value and any commands for JCL options in the PPD file.</p>
+<p>This keyword provides the JCL command to insert a PDF job file into a printer-ready data stream. The JCL command is added after the <tt>JCLBegin</tt> value and any commands for JCL options in the PPD file.</p>
<p>Example:</p>
diff --git a/man/backend.man b/man/backend.man
index 16070da80..c744b1115 100644
--- a/man/backend.man
+++ b/man/backend.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: backend.man 11793 2014-04-04 19:02:20Z msweet $"
+.\" "$Id: backend.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" Backend man page for CUPS.
.\"
@@ -106,7 +106,7 @@ network URIs.
.B serial
The device-uri refers to a serial device with configurable baud rate and other options. If the device-uri contains a baud value, it represents the maximum baud rate supported by the device.
.LP
-The
+The
.I scheme
field provides the URI scheme that is supported by the backend. Backends should use this form only when the backend supports any URI using that scheme. The
.I device-uri
@@ -199,7 +199,7 @@ for more information.
.br
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: backend.man 11793 2014-04-04 19:02:20Z msweet $".
+.\" End of "$Id: backend.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cancel.man b/man/cancel.man
index 5f5501d07..97c5b720d 100644
--- a/man/cancel.man
+++ b/man/cancel.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cancel.man 11905 2014-06-03 18:46:30Z msweet $"
+.\" "$Id: cancel.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cancel man page for CUPS.
.\"
@@ -93,7 +93,7 @@ Administrators wishing to prevent unauthorized cancellation of jobs via the \fI\
.BR lpstat (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cancel.man 11905 2014-06-03 18:46:30Z msweet $".
+.\" End of "$Id: cancel.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/classes.conf.man b/man/classes.conf.man
index 1cbac426b..9e4a113f3 100644
--- a/man/classes.conf.man
+++ b/man/classes.conf.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: classes.conf.man 11817 2014-04-15 16:31:11Z msweet $"
+.\" "$Id: classes.conf.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" classes.conf man page for CUPS.
.\"
@@ -30,7 +30,7 @@ The name, location, and format of this file are an implementation detail that wi
.BR subscriptions.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: classes.conf.man 11817 2014-04-15 16:31:11Z msweet $".
+.\" End of "$Id: classes.conf.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cups-config.man b/man/cups-config.man
index 731ae0cb3..0cd37a618 100644
--- a/man/cups-config.man
+++ b/man/cups-config.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cups-config.man 11817 2014-04-15 16:31:11Z msweet $"
+.\" "$Id: cups-config.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cups-config man page for CUPS.
.\"
@@ -110,7 +110,7 @@ Compile a simple one-file CUPS filter:
.BR cups (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cups-config.man 11817 2014-04-15 16:31:11Z msweet $".
+.\" End of "$Id: cups-config.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cups-lpd.man.in b/man/cups-lpd.man.in
index 9c3f7ba88..2b52fa64c 100644
--- a/man/cups-lpd.man.in
+++ b/man/cups-lpd.man.in
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cups-lpd.man.in 11905 2014-06-03 18:46:30Z msweet $"
+.\" "$Id: cups-lpd.man.in 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cups-lpd man page for CUPS.
.\"
@@ -120,7 +120,7 @@ service using the corresponding control program.
CUPS Online Help (http://localhost:631/help),
RFC 2569
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cups-lpd.man.in 11905 2014-06-03 18:46:30Z msweet $".
+.\" End of "$Id: cups-lpd.man.in 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cups-snmp.conf.man b/man/cups-snmp.conf.man
index 4de799ee1..07dfcfbb0 100644
--- a/man/cups-snmp.conf.man
+++ b/man/cups-snmp.conf.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cups-snmp.conf.man 11913 2014-06-10 19:00:24Z msweet $"
+.\" "$Id: cups-snmp.conf.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" snmp.conf man page for CUPS.
.\"
@@ -63,7 +63,7 @@ The default is 120 seconds (2 minutes).
.BR cups-snmp (8),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cups-snmp.conf.man 11913 2014-06-10 19:00:24Z msweet $".
+.\" End of "$Id: cups-snmp.conf.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cups-snmp.man.in b/man/cups-snmp.man.in
index 89ddf489c..1ab30258e 100644
--- a/man/cups-snmp.man.in
+++ b/man/cups-snmp.man.in
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cups-snmp.man.in 11913 2014-06-10 19:00:24Z msweet $"
+.\" "$Id: cups-snmp.man.in 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" SNMP backend man page for CUPS.
.\"
@@ -55,7 +55,7 @@ The CUPS SNMP backend uses the information from the Host, Printer, and Port Moni
.BR lpinfo (8),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cups-snmp.man.in 11913 2014-06-10 19:00:24Z msweet $".
+.\" End of "$Id: cups-snmp.man.in 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cups.man b/man/cups.man
index 357be2145..02a9bac7c 100644
--- a/man/cups.man
+++ b/man/cups.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cups.man 11822 2014-04-21 11:49:06Z msweet $"
+.\" "$Id: cups.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cups (intro) man page for CUPS.
.\"
@@ -141,7 +141,7 @@ CUPS Online Help (http://localhost:631/help),
CUPS Web Site (http://www.CUPS.org),
PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cups.man 11822 2014-04-21 11:49:06Z msweet $".
+.\" End of "$Id: cups.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupsaccept.man b/man/cupsaccept.man
index 8d34b866f..70385f827 100644
--- a/man/cupsaccept.man
+++ b/man/cupsaccept.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupsaccept.man 11913 2014-06-10 19:00:24Z msweet $"
+.\" "$Id: cupsaccept.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" accept/reject man page for CUPS.
.\"
@@ -88,7 +88,7 @@ Finally, the CUPS versions may ask the user for an access password depending on
.br
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsaccept.man 11913 2014-06-10 19:00:24Z msweet $".
+.\" End of "$Id: cupsaccept.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupsaddsmb.man.in b/man/cupsaddsmb.man.in
index 4d3a06905..355c3726b 100644
--- a/man/cupsaddsmb.man.in
+++ b/man/cupsaddsmb.man.in
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupsaddsmb.man.in 11920 2014-06-11 19:03:59Z msweet $"
+.\" "$Id: cupsaddsmb.man.in 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupsaddsmb man page for CUPS.
.\"
@@ -125,7 +125,7 @@ This is useful for debugging SAMBA configuration problems.
.BR smb.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsaddsmb.man.in 11920 2014-06-11 19:03:59Z msweet $".
+.\" End of "$Id: cupsaddsmb.man.in 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupsctl.man b/man/cupsctl.man
index 38684b87d..47ac9e2ae 100644
--- a/man/cupsctl.man
+++ b/man/cupsctl.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupsctl.man 11920 2014-06-11 19:03:59Z msweet $"
+.\" "$Id: cupsctl.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupsctl man page for CUPS.
.\"
@@ -100,7 +100,7 @@ You cannot set the Listen or Port directives using \fBcupsctl\fR.
.br
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsctl.man 11920 2014-06-11 19:03:59Z msweet $".
+.\" End of "$Id: cupsctl.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupsd-helper.man b/man/cupsd-helper.man
index 213fb797c..51bdc30ff 100644
--- a/man/cupsd-helper.man
+++ b/man/cupsd-helper.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupsd-helper.man 11817 2014-04-15 16:31:11Z msweet $"
+.\" "$Id: cupsd-helper.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupsd-helper man page for CUPS.
.\"
@@ -88,7 +88,7 @@ Driver information files must conform to the format defined in
.BR ppdcfile (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsd-helper.man 11817 2014-04-15 16:31:11Z msweet $".
+.\" End of "$Id: cupsd-helper.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupsd-logs.man b/man/cupsd-logs.man
index 8b8e0c895..7dbb70655 100644
--- a/man/cupsd-logs.man
+++ b/man/cupsd-logs.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupsd-logs.man 11920 2014-06-11 19:03:59Z msweet $"
+.\" "$Id: cupsd-logs.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupsd-logs man page for CUPS.
.\"
@@ -235,7 +235,7 @@ The \fIsides\fR field contains a copy of the sides attribute provided with the I
.BR cups-files.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsd-logs.man 11920 2014-06-11 19:03:59Z msweet $".
+.\" End of "$Id: cupsd-logs.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupsd.man.in b/man/cupsd.man.in
index f410d4bdf..5b16c8a0a 100644
--- a/man/cupsd.man.in
+++ b/man/cupsd.man.in
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupsd.man.in 12003 2014-07-08 15:29:14Z msweet $"
+.\" "$Id: cupsd.man.in 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupsd man page for CUPS.
.\"
@@ -20,7 +20,7 @@ cupsd \- cups scheduler
[
.B \-c
.I config-file
-] [
+] [
.B \-f
] [
.B \-F
@@ -121,7 +121,7 @@ in the foreground with a test configuration file called
.BR systemd (8),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsd.man.in 12003 2014-07-08 15:29:14Z msweet $".
+.\" End of "$Id: cupsd.man.in 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupsenable.man b/man/cupsenable.man
index 752ccbe49..c81f4fd90 100644
--- a/man/cupsenable.man
+++ b/man/cupsenable.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupsenable.man 11920 2014-06-11 19:03:59Z msweet $"
+.\" "$Id: cupsenable.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupsenable/cupsdisable man page for CUPS.
.\"
@@ -99,8 +99,8 @@ This differs from the System V versions which require the root user to execute t
.BR lpstat (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsenable.man 11920 2014-06-11 19:03:59Z msweet $".
+.\" End of "$Id: cupsenable.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupsfilter.man b/man/cupsfilter.man
index 6e3f13368..321d030f2 100644
--- a/man/cupsfilter.man
+++ b/man/cupsfilter.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupsfilter.man 11920 2014-06-11 19:03:59Z msweet $"
+.\" "$Id: cupsfilter.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupsfilter man page for CUPS.
.\"
@@ -137,7 +137,7 @@ The following command will generate a PDF preview of job 42 for a printer named
.BR mime.types (7),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsfilter.man 11920 2014-06-11 19:03:59Z msweet $".
+.\" End of "$Id: cupsfilter.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupstestdsc.man b/man/cupstestdsc.man
index 5b07afd0c..e6d7c6648 100644
--- a/man/cupstestdsc.man
+++ b/man/cupstestdsc.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupstestdsc.man 11920 2014-06-11 19:03:59Z msweet $"
+.\" "$Id: cupstestdsc.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupstestdsc man page for CUPS.
.\"
@@ -45,7 +45,7 @@ CUPS Online Help (http://localhost:631/help),
Adobe PostScript Language Document Structuring Conventions
Specification, Version 3.0.
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupstestdsc.man 11920 2014-06-11 19:03:59Z msweet $".
+.\" End of "$Id: cupstestdsc.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/cupstestppd.man b/man/cupstestppd.man
index 153a48c9c..cf5f550a3 100644
--- a/man/cupstestppd.man
+++ b/man/cupstestppd.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: cupstestppd.man 11920 2014-06-11 19:03:59Z msweet $"
+.\" "$Id: cupstestppd.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" cupstestppd man page for CUPS.
.\"
@@ -145,7 +145,7 @@ The next command tests all PPD files under the current directory and print detai
CUPS Online Help (http://localhost:631/help),
Adobe PostScript Printer Description File Format Specification, Version 4.3.
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupstestppd.man 11920 2014-06-11 19:03:59Z msweet $".
+.\" End of "$Id: cupstestppd.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/filter.man b/man/filter.man
index 46d0b1249..0d51e99bd 100644
--- a/man/filter.man
+++ b/man/filter.man
@@ -1,9 +1,9 @@
.\"
-.\" "$Id: filter.man 11793 2014-04-04 19:02:20Z msweet $"
+.\" "$Id: filter.man 12848 2015-08-26 18:51:57Z msweet $"
.\"
.\" filter man page for CUPS.
.\"
-.\" Copyright 2007-2014 by Apple Inc.
+.\" Copyright 2007-2015 by Apple Inc.
.\" Copyright 1997-2007 by Easy Software Products.
.\"
.\" These coded instructions, statements, and computer programs are the
@@ -12,7 +12,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 filter 7 "CUPS" "4 April 2014" "Apple Inc."
+.TH filter 7 "CUPS" "26 August 2015" "Apple Inc."
.SH NAME
filter \- cups file conversion filter interface
.SH SYNOPSIS
@@ -68,7 +68,7 @@ Options are passed in \fIargv[5]\fR and are encoded from the corresponding IPP a
function to load the options into a \fBcups_option_t\fR array and the
.BR cupsGetOption ()
function to get the value of a specific attribute.
-Be careful to look for common aliases of IPP attributes such as "lansdscape" for the IPP "orientation-requested" attribute.
+Be careful to look for common aliases of IPP attributes such as "landscape" for the IPP "orientation-requested" attribute.
.LP
Options passed on the command-line typically do not include the default choices the printer's PPD file. Use the
.BR ppdMarkDefaults ()
@@ -222,7 +222,7 @@ program to use the appropriate filters to do the conversions you need.
.br
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: filter.man 11793 2014-04-04 19:02:20Z msweet $".
+.\" End of "$Id: filter.man 12848 2015-08-26 18:51:57Z msweet $".
.\"
diff --git a/man/ippfind.man b/man/ippfind.man
index c9f6c1328..df0505050 100644
--- a/man/ippfind.man
+++ b/man/ippfind.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ippfind.man 11938 2014-06-22 12:44:05Z msweet $"
+.\" "$Id: ippfind.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" ippfind man page for CUPS.
.\"
@@ -255,7 +255,7 @@ Similarly, to send a PostScript test page to every PostScript printer, run:
.SH SEE ALSO
.BR ipptool (1)
.SH COPYRIGHT
-Copyright \[co] 2013-2014 by Apple Inc.
+Copyright \[co] 2013-2015 by Apple Inc.
.\"
-.\" End of "$Id: ippfind.man 11938 2014-06-22 12:44:05Z msweet $".
+.\" End of "$Id: ippfind.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/ipptool.man b/man/ipptool.man
index b04d24809..6dee72cd2 100644
--- a/man/ipptool.man
+++ b/man/ipptool.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ipptool.man 12484 2015-02-03 19:25:57Z msweet $"
+.\" "$Id: ipptool.man 12848 2015-08-26 18:51:57Z msweet $"
.\"
.\" ipptool man page for CUPS.
.\"
@@ -11,7 +11,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 ipptool 1 "CUPS" "3 February 2015" "Apple Inc."
+.TH ipptool 1 "CUPS" "26 August 2015" "Apple Inc."
.SH NAME
ipptool \- perform internet printing protocol requests
.SH SYNOPSIS
@@ -183,7 +183,7 @@ This is the default for XML output.
.SH EXIT STATUS
The
.B ipptool
-program returns 0 if all tests were sucessful and 1 otherwise.
+program returns 0 if all tests were successful and 1 otherwise.
.SH FILES
The following standard files are available:
.nf
@@ -244,5 +244,5 @@ RFC 2911 (http://tools.ietf.org/html/rfc2911),
.SH COPYRIGHT
Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ipptool.man 12484 2015-02-03 19:25:57Z msweet $".
+.\" End of "$Id: ipptool.man 12848 2015-08-26 18:51:57Z msweet $".
.\"
diff --git a/man/lp.man b/man/lp.man
index 6594282a3..cd4237b68 100644
--- a/man/lp.man
+++ b/man/lp.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lp.man 11922 2014-06-11 23:35:37Z msweet $"
+.\" "$Id: lp.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lp man page for CUPS.
.\"
@@ -216,7 +216,7 @@ Print a presentation document 2-up to a printer called "foo":
.BR lpstat (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lp.man 11922 2014-06-11 23:35:37Z msweet $".
+.\" End of "$Id: lp.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/lpc.man b/man/lpc.man
index 3b1553d1a..4286b0170 100644
--- a/man/lpc.man
+++ b/man/lpc.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lpc.man 11923 2014-06-12 12:55:34Z msweet $"
+.\" "$Id: lpc.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lpc man page for CUPS.
.\"
@@ -58,7 +58,7 @@ command or another CUPS-compatible client with that functionality.
.BR lpstat (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lpc.man 11923 2014-06-12 12:55:34Z msweet $".
+.\" End of "$Id: lpc.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/lpinfo.man b/man/lpinfo.man
index 850a41227..f8dc471ba 100644
--- a/man/lpinfo.man
+++ b/man/lpinfo.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lpinfo.man 11923 2014-06-12 12:55:34Z msweet $"
+.\" "$Id: lpinfo.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lpinfo man page for CUPS.
.\"
@@ -132,7 +132,7 @@ List drivers matching "HP LaserJet":
.BR lpadmin (8),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lpinfo.man 11923 2014-06-12 12:55:34Z msweet $".
+.\" End of "$Id: lpinfo.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/lpmove.man b/man/lpmove.man
index 9641b5ae2..2447410c4 100644
--- a/man/lpmove.man
+++ b/man/lpmove.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lpmove.man 11923 2014-06-12 12:55:34Z msweet $"
+.\" "$Id: lpmove.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lpmove man page for CUPS.
.\"
@@ -76,7 +76,7 @@ Move all jobs from "oldprinter" to "newprinter":
.br
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lpmove.man 11923 2014-06-12 12:55:34Z msweet $".
+.\" End of "$Id: lpmove.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/lpoptions.man.in b/man/lpoptions.man.in
index 3c8f22d5b..c9377c339 100644
--- a/man/lpoptions.man.in
+++ b/man/lpoptions.man.in
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lpoptions.man.in 11923 2014-06-12 12:55:34Z msweet $"
+.\" "$Id: lpoptions.man.in 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lpoptions man page for CUPS.
.\"
@@ -135,7 +135,7 @@ The \fBlpoptions\fR command is unique to CUPS.
.BR lprm (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lpoptions.man.in 11923 2014-06-12 12:55:34Z msweet $".
+.\" End of "$Id: lpoptions.man.in 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/lpq.man b/man/lpq.man
index 6607924ba..7f7172026 100644
--- a/man/lpq.man
+++ b/man/lpq.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lpq.man 11924 2014-06-12 19:10:33Z msweet $"
+.\" "$Id: lpq.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lpq man page for CUPS.
.\"
@@ -66,7 +66,7 @@ Requests a more verbose (long) reporting format.
.BR lpstat (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lpq.man 11924 2014-06-12 19:10:33Z msweet $".
+.\" End of "$Id: lpq.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/lpr.man b/man/lpr.man
index 7cd400afa..ac24e3dbc 100644
--- a/man/lpr.man
+++ b/man/lpr.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lpr.man 11922 2014-06-11 23:35:37Z msweet $"
+.\" "$Id: lpr.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lpr man page for CUPS.
.\"
@@ -143,7 +143,7 @@ Print a presentation document 2-up to a printer called "foo":
.BR lpstat (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lpr.man 11922 2014-06-11 23:35:37Z msweet $".
+.\" End of "$Id: lpr.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/lprm.man b/man/lprm.man
index 41071b983..c98939408 100644
--- a/man/lprm.man
+++ b/man/lprm.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lprm.man 11893 2014-05-23 02:45:48Z msweet $"
+.\" "$Id: lprm.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lprm man page for CUPS.
.\"
@@ -84,7 +84,7 @@ Cancel all jobs:
.BR lpstat (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lprm.man 11893 2014-05-23 02:45:48Z msweet $".
+.\" End of "$Id: lprm.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/lpstat.man b/man/lpstat.man
index 7a8cce483..d5d82c553 100644
--- a/man/lpstat.man
+++ b/man/lpstat.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: lpstat.man 11924 2014-06-12 19:10:33Z msweet $"
+.\" "$Id: lpstat.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" lpstat man page for CUPS.
.\"
@@ -146,7 +146,7 @@ The Solaris \fI\-f\fR, \fI\-P\fR, and \fI\-S\fR options are silently ignored.
.BR lprm (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: lpstat.man 11924 2014-06-12 19:10:33Z msweet $".
+.\" End of "$Id: lpstat.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/mailto.conf.man b/man/mailto.conf.man
index 8d182098e..c2f3c8589 100644
--- a/man/mailto.conf.man
+++ b/man/mailto.conf.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: mailto.conf.man 11924 2014-06-12 19:10:33Z msweet $"
+.\" "$Id: mailto.conf.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" mailto.conf man page for CUPS.
.\"
@@ -46,7 +46,7 @@ Specifies a prefix string for the subject line of an email notification.
.BR cupsd (8),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: mailto.conf.man 11924 2014-06-12 19:10:33Z msweet $".
+.\" End of "$Id: mailto.conf.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/mime.convs.man b/man/mime.convs.man
index 7a25c8023..d5145ce71 100644
--- a/man/mime.convs.man
+++ b/man/mime.convs.man
@@ -1,9 +1,9 @@
.\"
-.\" "$Id: mime.convs.man 11924 2014-06-12 19:10:33Z msweet $"
+.\" "$Id: mime.convs.man 12848 2015-08-26 18:51:57Z msweet $"
.\"
.\" mime.convs man page for CUPS.
.\"
-.\" Copyright 2007-2014 by Apple Inc.
+.\" Copyright 2007-2015 by Apple Inc.
.\" Copyright 1997-2006 by Easy Software Products.
.\"
.\" These coded instructions, statements, and computer programs are the
@@ -12,7 +12,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 mime.convs 5 "CUPS" "12 June 2014" "Apple Inc."
+.TH mime.convs 5 "CUPS" "26 August 2015" "Apple Inc."
.SH NAME
mime.convs \- mime type conversion file for cups
.SH DESCRIPTION
@@ -32,7 +32,7 @@ Filter lines specify the source and destination MIME types along with a relative
.fi
The \fIsource/type\fR field specifies the source MIME media type that is consumed by the filter.
.LP
-The \fIdestination/type\fR field specifies the destiantion MIME media type that is produced by the filter.
+The \fIdestination/type\fR field specifies the destination MIME media type that is produced by the filter.
.LP
The \fIcost\fR field specifies the relative cost for running the filter.
A value of 100 means that the filter uses a large amount of resources while a value of 0 means that the filter uses very few resources.
@@ -60,7 +60,7 @@ Define a filter that converts PostScript documents to CUPS Raster format:
.BR mime.types (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: mime.convs.man 11924 2014-06-12 19:10:33Z msweet $".
+.\" End of "$Id: mime.convs.man 12848 2015-08-26 18:51:57Z msweet $".
.\"
diff --git a/man/mime.types.man b/man/mime.types.man
index 07e397c9f..c3dd2f309 100644
--- a/man/mime.types.man
+++ b/man/mime.types.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: mime.types.man 11924 2014-06-12 19:10:33Z msweet $"
+.\" "$Id: mime.types.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" mime.types man page for CUPS.
.\"
@@ -110,7 +110,7 @@ Define two MIME media types for raster data, with one being a subset with higher
.BR mime.convs (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: mime.types.man 11924 2014-06-12 19:10:33Z msweet $".
+.\" End of "$Id: mime.types.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/notifier.man b/man/notifier.man
index c7c051809..3284f593a 100644
--- a/man/notifier.man
+++ b/man/notifier.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: notifier.man 11924 2014-06-12 19:10:33Z msweet $"
+.\" "$Id: notifier.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" notifier man page for CUPS.
.\"
@@ -38,7 +38,7 @@ Notifiers inherit the environment and can use the logging mechanism documented i
.BR filter (7),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: notifier.man 11924 2014-06-12 19:10:33Z msweet $".
+.\" End of "$Id: notifier.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/ppdc.man b/man/ppdc.man
index 8ef965007..20e96c416 100644
--- a/man/ppdc.man
+++ b/man/ppdc.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ppdc.man 11927 2014-06-13 00:01:23Z msweet $"
+.\" "$Id: ppdc.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" ppdc man page for CUPS.
.\"
@@ -100,7 +100,7 @@ The default is to use the line feed character alone.
.BR ppdcfile (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ppdc.man 11927 2014-06-13 00:01:23Z msweet $".
+.\" End of "$Id: ppdc.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/ppdcfile.man b/man/ppdcfile.man
index 23d0d307a..79ec4ebeb 100644
--- a/man/ppdcfile.man
+++ b/man/ppdcfile.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ppdcfile.man 11925 2014-06-12 19:36:12Z msweet $"
+.\" "$Id: ppdcfile.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" ppdcfile man page for CUPS.
.\"
@@ -159,7 +159,7 @@ Directives may be placed anywhere on a line and are followed by one or more valu
.BR ppdpo (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ppdcfile.man 11925 2014-06-12 19:36:12Z msweet $".
+.\" End of "$Id: ppdcfile.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/ppdhtml.man b/man/ppdhtml.man
index 6454804f6..f5a959621 100644
--- a/man/ppdhtml.man
+++ b/man/ppdhtml.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ppdhtml.man 11927 2014-06-13 00:01:23Z msweet $"
+.\" "$Id: ppdhtml.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" ppdhtml man page for CUPS.
.\"
@@ -45,7 +45,7 @@ Multiple \fI-I\fR options can be supplied to add additional directories.
.BR ppdpo (1),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ppdhtml.man 11927 2014-06-13 00:01:23Z msweet $".
+.\" End of "$Id: ppdhtml.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/ppdi.man b/man/ppdi.man
index b6b6bdfb3..db0447621 100644
--- a/man/ppdi.man
+++ b/man/ppdi.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ppdi.man 11927 2014-06-13 00:01:23Z msweet $"
+.\" "$Id: ppdi.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" ppdi man page for CUPS.
.\"
@@ -52,7 +52,7 @@ If no source file is specified, the filename \fIppdi.drv\fR is used.
.BR ppdcfile (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ppdi.man 11927 2014-06-13 00:01:23Z msweet $".
+.\" End of "$Id: ppdi.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/ppdmerge.man b/man/ppdmerge.man
index 38109b053..71239aded 100644
--- a/man/ppdmerge.man
+++ b/man/ppdmerge.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ppdmerge.man 11927 2014-06-13 00:01:23Z msweet $"
+.\" "$Id: ppdmerge.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" ppdmerge man page for CUPS.
.\"
@@ -48,7 +48,7 @@ Merging of different device PPDs will yield unpredictable results.
.BR ppdcfile (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ppdmerge.man 11927 2014-06-13 00:01:23Z msweet $".
+.\" End of "$Id: ppdmerge.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/ppdpo.man b/man/ppdpo.man
index b2786babb..6acf098bf 100644
--- a/man/ppdpo.man
+++ b/man/ppdpo.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: ppdpo.man 11927 2014-06-13 00:01:23Z msweet $"
+.\" "$Id: ppdpo.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" ppdpo man page for CUPS.
.\"
@@ -52,7 +52,7 @@ The supported extensions are \fI.po\fR or \fI.po.gz\fR for GNU gettext format me
.BR ppdcfile(5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: ppdpo.man 11927 2014-06-13 00:01:23Z msweet $".
+.\" End of "$Id: ppdpo.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/printers.conf.man b/man/printers.conf.man
index 73076b0f2..9a3d14864 100644
--- a/man/printers.conf.man
+++ b/man/printers.conf.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: printers.conf.man 11817 2014-04-15 16:31:11Z msweet $"
+.\" "$Id: printers.conf.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" printers.conf man page for CUPS.
.\"
@@ -30,7 +30,7 @@ The name, location, and format of this file are an implementation detail that wi
.BR subscriptions.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: printers.conf.man 11817 2014-04-15 16:31:11Z msweet $".
+.\" End of "$Id: printers.conf.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/man/subscriptions.conf.man b/man/subscriptions.conf.man
index 3e265e8b1..860c08682 100644
--- a/man/subscriptions.conf.man
+++ b/man/subscriptions.conf.man
@@ -1,5 +1,5 @@
.\"
-.\" "$Id: subscriptions.conf.man 11817 2014-04-15 16:31:11Z msweet $"
+.\" "$Id: subscriptions.conf.man 12854 2015-08-28 14:08:00Z msweet $"
.\"
.\" subscriptions.conf man page for CUPS.
.\"
@@ -30,7 +30,7 @@ The name, location, and format of this file are an implementation detail that wi
.BR printers.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: subscriptions.conf.man 11817 2014-04-15 16:31:11Z msweet $".
+.\" End of "$Id: subscriptions.conf.man 12854 2015-08-28 14:08:00Z msweet $".
.\"
diff --git a/packaging/cups.spec b/packaging/cups.spec
index 0b8ecda64..428392335 100644
--- a/packaging/cups.spec
+++ b/packaging/cups.spec
@@ -1,5 +1,5 @@
#
-# "$Id: cups.spec.in 12713 2015-06-08 21:10:09Z msweet $"
+# "$Id: cups.spec.in 12857 2015-08-31 15:00:45Z msweet $"
#
# RPM "spec" file for CUPS.
#
@@ -21,6 +21,7 @@
# dnssd - Enable/disable DNS-SD support (default = enable)
# libusb1 - Enable/disable LIBUSB 1.0 support (default = enable)
# static - Enable/disable static libraries (default = enable)
+# systemd - Enable/disable systemd support (default = enable)
%{!?_with_dbus: %{!?_without_dbus: %define _with_dbus --with-dbus}}
%{?_with_dbus: %define _dbus --enable-dbus}
@@ -44,12 +45,12 @@
Summary: CUPS
Name: cups
-Version: 2.1rc1
+Version: 2.1.0
Release: 1
Epoch: 1
License: GPL
Group: System Environment/Daemons
-Source: http://www.cups.org/software/2.1rc1/cups-2.1rc1-source.tar.bz2
+Source: http://www.cups.org/software/2.1.0/cups-2.1.0-source.tar.bz2
Url: http://www.cups.org
Packager: Anonymous <anonymous@foo.com>
Vendor: Apple Inc.
@@ -313,6 +314,7 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/man/man1/lpstat.1.gz
%dir /usr/share/man/man5
/usr/share/man/man5/*.conf.5.gz
+/usr/share/man/man5/cupsd-logs.5.gz
/usr/share/man/man5/ipptoolfile.5.gz
/usr/share/man/man5/mime.*.5.gz
%dir /usr/share/man/man8
@@ -327,7 +329,6 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/man/man8/cupsfilter.8.gz
/usr/share/man/man8/cupsd.8.gz
/usr/share/man/man8/cupsd-helper.8.gz
-/usr/share/man/man8/cupsd-logs.8.gz
/usr/share/man/man8/cupsdisable.8.gz
/usr/share/man/man8/cupsenable.8.gz
/usr/share/man/man8/cupsreject.8.gz
@@ -401,5 +402,5 @@ rm -rf $RPM_BUILD_ROOT
#
-# End of "$Id: cups.spec.in 12713 2015-06-08 21:10:09Z msweet $".
+# End of "$Id: cups.spec.in 12857 2015-08-31 15:00:45Z msweet $".
#
diff --git a/packaging/cups.spec.in b/packaging/cups.spec.in
index 4f911783d..63320a541 100644
--- a/packaging/cups.spec.in
+++ b/packaging/cups.spec.in
@@ -1,5 +1,5 @@
#
-# "$Id: cups.spec.in 12713 2015-06-08 21:10:09Z msweet $"
+# "$Id: cups.spec.in 12857 2015-08-31 15:00:45Z msweet $"
#
# RPM "spec" file for CUPS.
#
@@ -21,6 +21,7 @@
# dnssd - Enable/disable DNS-SD support (default = enable)
# libusb1 - Enable/disable LIBUSB 1.0 support (default = enable)
# static - Enable/disable static libraries (default = enable)
+# systemd - Enable/disable systemd support (default = enable)
%{!?_with_dbus: %{!?_without_dbus: %define _with_dbus --with-dbus}}
%{?_with_dbus: %define _dbus --enable-dbus}
@@ -313,6 +314,7 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/man/man1/lpstat.1.gz
%dir /usr/share/man/man5
/usr/share/man/man5/*.conf.5.gz
+/usr/share/man/man5/cupsd-logs.5.gz
/usr/share/man/man5/ipptoolfile.5.gz
/usr/share/man/man5/mime.*.5.gz
%dir /usr/share/man/man8
@@ -327,7 +329,6 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/man/man8/cupsfilter.8.gz
/usr/share/man/man8/cupsd.8.gz
/usr/share/man/man8/cupsd-helper.8.gz
-/usr/share/man/man8/cupsd-logs.8.gz
/usr/share/man/man8/cupsdisable.8.gz
/usr/share/man/man8/cupsenable.8.gz
/usr/share/man/man8/cupsreject.8.gz
@@ -401,5 +402,5 @@ rm -rf $RPM_BUILD_ROOT
#
-# End of "$Id: cups.spec.in 12713 2015-06-08 21:10:09Z msweet $".
+# End of "$Id: cups.spec.in 12857 2015-08-31 15:00:45Z msweet $".
#
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
index 5c50f9bed..8d2c79baa 100644
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp.c 12777 2015-07-07 17:24:06Z msweet $"
+ * "$Id: ipp.c 12851 2015-08-28 13:17:53Z msweet $"
*
* IPP routines for the CUPS scheduler.
*
@@ -70,7 +70,7 @@ static void copy_attrs(ipp_t *to, ipp_t *from, cups_array_t *ra,
cups_array_t *exclude);
static int copy_banner(cupsd_client_t *con, cupsd_job_t *job,
const char *name);
-static int copy_file(const char *from, const char *to);
+static int copy_file(const char *from, const char *to, mode_t mode);
static int copy_model(cupsd_client_t *con, const char *from,
const char *to);
static void copy_job_attrs(cupsd_client_t *con,
@@ -2615,7 +2615,7 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
* interfaces directory and make it executable...
*/
- if (copy_file(srcfile, dstfile))
+ if (copy_file(srcfile, dstfile, ConfigFilePerm | 0110))
{
send_ipp_status(con, IPP_INTERNAL_ERROR,
_("Unable to copy interface script - %s"),
@@ -2625,7 +2625,6 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
cupsdLogMessage(CUPSD_LOG_DEBUG,
"Copied interface script successfully");
- chmod(dstfile, 0755);
}
snprintf(dstfile, sizeof(dstfile), "%s/ppd/%s.ppd", ServerRoot,
@@ -2638,7 +2637,7 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
* ppd directory and make it readable by all...
*/
- if (copy_file(srcfile, dstfile))
+ if (copy_file(srcfile, dstfile, ConfigFilePerm))
{
send_ipp_status(con, IPP_INTERNAL_ERROR,
_("Unable to copy PPD file - %s"),
@@ -2648,7 +2647,6 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
cupsdLogMessage(CUPSD_LOG_DEBUG,
"Copied PPD file successfully");
- chmod(dstfile, 0644);
}
else
{
@@ -4336,7 +4334,8 @@ copy_banner(cupsd_client_t *con, /* I - Client connection */
static int /* O - 0 = success, -1 = error */
copy_file(const char *from, /* I - Source file */
- const char *to) /* I - Destination file */
+ const char *to, /* I - Destination file */
+ mode_t mode) /* I - Permissions */
{
cups_file_t *src, /* Source file */
*dst; /* Destination file */
@@ -4353,7 +4352,7 @@ copy_file(const char *from, /* I - Source file */
if ((src = cupsFileOpen(from, "rb")) == NULL)
return (-1);
- if ((dst = cupsFileOpen(to, "wb")) == NULL)
+ if ((dst = cupsdCreateConfFile(to, mode)) == NULL)
{
cupsFileClose(src);
return (-1);
@@ -4377,7 +4376,7 @@ copy_file(const char *from, /* I - Source file */
cupsFileClose(src);
- return (cupsFileClose(dst));
+ return (cupsdCloseCreatedConfFile(dst, to));
}
@@ -11150,5 +11149,5 @@ validate_user(cupsd_job_t *job, /* I - Job */
/*
- * End of "$Id: ipp.c 12777 2015-07-07 17:24:06Z msweet $".
+ * End of "$Id: ipp.c 12851 2015-08-28 13:17:53Z msweet $".
*/
diff --git a/scheduler/job.c b/scheduler/job.c
index e6b86b7b7..54ee4ed7c 100644
--- a/scheduler/job.c
+++ b/scheduler/job.c
@@ -1,5 +1,5 @@
/*
- * "$Id: job.c 12777 2015-07-07 17:24:06Z msweet $"
+ * "$Id: job.c 12856 2015-08-31 14:27:39Z msweet $"
*
* Job management routines for the CUPS scheduler.
*
@@ -442,6 +442,8 @@ cupsdCleanJobs(void)
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Removing document files.");
remove_job_files(job);
+ cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+
if (job->history_time < JobHistoryUpdate || !JobHistoryUpdate)
JobHistoryUpdate = job->history_time;
}
@@ -5339,5 +5341,5 @@ update_job_attrs(cupsd_job_t *job, /* I - Job to update */
/*
- * End of "$Id: job.c 12777 2015-07-07 17:24:06Z msweet $".
+ * End of "$Id: job.c 12856 2015-08-31 14:27:39Z msweet $".
*/
diff --git a/scheduler/log.c b/scheduler/log.c
index a5a69e082..be23fa903 100644
--- a/scheduler/log.c
+++ b/scheduler/log.c
@@ -1,5 +1,5 @@
/*
- * "$Id: log.c 12816 2015-07-30 15:38:57Z msweet $"
+ * "$Id: log.c 12857 2015-08-31 15:00:45Z msweet $"
*
* Log file routines for the CUPS scheduler.
*
@@ -617,7 +617,7 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
asl_set(m, PWG_Event, "JobStateChanged");
asl_set(m, PWG_JobID, job_id);
- asl_set(m, PWG_JobState, job_states[job->state_value - IPP_JSTATE_PENDING]);
+ asl_set(m, PWG_JobState, job->state_value < IPP_JSTATE_PENDING ? "" : job_states[job->state_value - IPP_JSTATE_PENDING]);
if (job->impressions)
{
@@ -637,7 +637,7 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
if (!strcmp(ErrorLog, "syslog"))
{
- cupsd_printer_t *printer = job->printer ? job->printer : job->dest ? cupsdFindDest(job->dest) : NULL;
+ cupsd_printer_t *printer = job ? (job->printer ? job->printer : (job->dest ? cupsdFindDest(job->dest) : NULL)) : NULL;
static const char * const job_states[] =
{ /* job-state strings */
"Pending",
@@ -667,7 +667,7 @@ cupsdLogJob(cupsd_job_t *job, /* I - Job */
PWG_Event"=JobStateChanged",
PWG_ServiceURI"=%s", printer ? printer->uri : "",
PWG_JobID"=%d", job->id,
- PWG_JobState"=%s", job_states[job->state_value - IPP_JSTATE_PENDING],
+ PWG_JobState"=%s", job->state_value < IPP_JSTATE_PENDING ? "" : job_states[job->state_value - IPP_JSTATE_PENDING],
PWG_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
NULL);
else
@@ -1510,5 +1510,5 @@ format_log_line(const char *message, /* I - Printf-style format string */
/*
- * End of "$Id: log.c 12816 2015-07-30 15:38:57Z msweet $".
+ * End of "$Id: log.c 12857 2015-08-31 15:00:45Z msweet $".
*/
diff --git a/test/identify-printer-display.test b/test/identify-printer-display.test
new file mode 100644
index 000000000..4957a2637
--- /dev/null
+++ b/test/identify-printer-display.test
@@ -0,0 +1,21 @@
+# Make the printer display a message
+{
+ # The name of the test...
+ NAME "Identify Printer with Message"
+
+ # The operation to use
+ OPERATION Identify-Printer
+
+ # Attributes, starting in the operation group...
+ GROUP operation-attributes-tag
+ ATTR charset attributes-charset utf-8
+ ATTR language attributes-natural-language en
+ ATTR uri printer-uri $uri
+ ATTR name requesting-user-name $user
+ ATTR keyword identify-actions display
+ ATTR text message "Hello\, World!"
+
+ # What statuses are OK?
+ STATUS successful-ok
+ STATUS successful-ok-ignored-or-substituted-attributes
+}
diff --git a/test/identify-printer-multiple.test b/test/identify-printer-multiple.test
new file mode 100644
index 000000000..79b2580ce
--- /dev/null
+++ b/test/identify-printer-multiple.test
@@ -0,0 +1,21 @@
+# Make the printer display a message and beep
+{
+ # The name of the test...
+ NAME "Identify Printer with Message and Beep"
+
+ # The operation to use
+ OPERATION Identify-Printer
+
+ # Attributes, starting in the operation group...
+ GROUP operation-attributes-tag
+ ATTR charset attributes-charset utf-8
+ ATTR language attributes-natural-language en
+ ATTR uri printer-uri $uri
+ ATTR name requesting-user-name $user
+ ATTR keyword identify-actions sound,display
+ ATTR text message "Hello\, World!"
+
+ # What statuses are OK?
+ STATUS successful-ok
+ STATUS successful-ok-ignored-or-substituted-attributes
+}
diff --git a/test/ippserver.c b/test/ippserver.c
index 03c8cfb2a..2d9e7b905 100644
--- a/test/ippserver.c
+++ b/test/ippserver.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ippserver.c 12598 2015-05-05 18:57:57Z msweet $"
+ * "$Id: ippserver.c 12840 2015-08-09 02:10:23Z msweet $"
*
* Sample IPP Everywhere server for CUPS.
*
@@ -108,6 +108,26 @@ enum _ipp_preason_e /* printer-state-reasons bit values */
_IPP_PREASON_TONER_LOW = 0x8000 /* toner-low */
};
typedef unsigned int _ipp_preason_t; /* Bitfield for printer-state-reasons */
+static const char * const _ipp_preason_strings[] =
+{ /* Strings for each bit */
+ /* "none" is implied for no bits set */
+ "other",
+ "cover-open",
+ "input-tray-missing",
+ "marker-supply-empty",
+ "marker-supply-low",
+ "marker-waste-almost-full",
+ "marker-waste-full",
+ "media-empty",
+ "media-jam",
+ "media-low",
+ "media-needed",
+ "moving-to-paused",
+ "paused",
+ "spool-area-full",
+ "toner-empty",
+ "toner-low"
+};
typedef enum _ipp_media_class_e
{
@@ -231,6 +251,16 @@ static const char * const printer_supplies[] =
"Toner Waste"
};
+/*
+ * URL scheme for web resources...
+ */
+
+#ifdef HAVE_SSL
+# define WEB_SCHEME "https"
+#else
+# define WEB_SCHEME "http"
+#endif /* HAVE_SSL */
+
/*
* Structures...
@@ -354,7 +384,8 @@ static _ipp_printer_t *create_printer(const char *servername,
int ppm_color, int duplex, int port,
int pin, const char *subtype,
const char *directory,
- const char *command);
+ const char *command,
+ const char *attrfile);
static void debug_attributes(const char *title, ipp_t *ipp,
int response);
static void delete_client(_ipp_client_t *client);
@@ -375,6 +406,8 @@ static void dnssd_client_cb(AvahiClient *c, AvahiClientState state, void *userd
static void dnssd_init(void);
static int filter_cb(_ipp_filter_t *filter, ipp_t *dst, ipp_attribute_t *attr);
static _ipp_job_t *find_job(_ipp_client_t *client);
+static ipp_t *get_collection(FILE *fp, const char *filename, int *linenum);
+static char *get_token(FILE *fp, char *buf, int buflen, int *linenum);
static void html_escape(_ipp_client_t *client, const char *s,
size_t slen);
static void html_footer(_ipp_client_t *client);
@@ -394,11 +427,14 @@ static void ipp_print_uri(_ipp_client_t *client);
static void ipp_send_document(_ipp_client_t *client);
static void ipp_send_uri(_ipp_client_t *client);
static void ipp_validate_job(_ipp_client_t *client);
+static void load_attributes(const char *filename, ipp_t *attrs);
static int parse_options(_ipp_client_t *client, cups_option_t **options);
+static void process_attr_message(_ipp_job_t *job, char *message);
static void *process_client(_ipp_client_t *client);
static int process_http(_ipp_client_t *client);
static int process_ipp(_ipp_client_t *client);
static void *process_job(_ipp_job_t *job);
+static void process_state_message(_ipp_job_t *job, char *message);
static int register_printer(_ipp_printer_t *printer, const char *location, const char *make, const char *model, const char *formats, const char *adminurl, const char *uuid, int color, int duplex, const char *regtype);
static int respond_http(_ipp_client_t *client, http_status_t code,
const char *content_coding,
@@ -440,6 +476,7 @@ main(int argc, /* I - Number of command-line args */
{
int i; /* Looping var */
const char *opt, /* Current option character */
+ *attrfile = NULL, /* Attributes file */
*command = NULL, /* Command to run with job files */
*servername = NULL, /* Server host name */
*name = NULL, /* Printer name */
@@ -498,6 +535,14 @@ main(int argc, /* I - Number of command-line args */
pin = 1;
break;
+ case 'a' : /* -a attributes-file */
+ i ++;
+ if (i >= argc)
+ usage(1);
+
+ attrfile = argv[i];
+ break;
+
case 'c' : /* -c command */
i ++;
if (i >= argc)
@@ -672,7 +717,7 @@ main(int argc, /* I - Number of command-line args */
if ((printer = create_printer(servername, name, location, make, model, icon,
formats, ppm, ppm_color, duplex, port, pin,
- subtype, directory, command)) == NULL)
+ subtype, directory, command, attrfile)) == NULL)
return (1);
/*
@@ -1229,7 +1274,8 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
int pin, /* I - Require PIN printing */
const char *subtype, /* I - Bonjour service subtype */
const char *directory, /* I - Spool directory */
- const char *command) /* I - Command to run on job files */
+ const char *command, /* I - Command to run on job files */
+ const char *attrfile) /* I - Attributes file */
{
int i, j; /* Looping vars */
_ipp_printer_t *printer; /* Printer */
@@ -1237,6 +1283,10 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
char path[1024]; /* Full path to command */
#endif /* !WIN32 */
char uri[1024], /* Printer URI */
+#ifdef HAVE_SSL
+ securi[1024], /* Secure printer URI */
+ *uris[2], /* All URIs */
+#endif /* HAVE_SSL */
icons[1024], /* printer-icons URI */
adminurl[1024], /* printer-more-info URI */
supplyurl[1024],/* printer-supply-info-uri URI */
@@ -1407,6 +1457,18 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"W8",
"DM1"
};
+#ifdef HAVE_SSL
+ static const char * const uri_authentication_supported[] =
+ { /* uri-authentication-supported values */
+ "none",
+ "none"
+ };
+ static const char * const uri_security_supported[] =
+ { /* uri-security-supported values */
+ "none",
+ "tls"
+ };
+#endif /* HAVE_SSL */
static const char * const which_jobs[] =
{ /* which-jobs-supported values */
"completed",
@@ -1475,11 +1537,14 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
printer->jobs = cupsArrayNew((cups_array_func_t)compare_jobs, NULL);
printer->next_job_id = 1;
- httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
- printer->hostname, printer->port, "/ipp/print");
+ httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, printer->hostname, printer->port, "/ipp/print");
printer->uri = strdup(uri);
printer->urilen = strlen(uri);
+#ifdef HAVE_SSL
+ httpAssembleURI(HTTP_URI_CODING_ALL, securi, sizeof(securi), "ipps", NULL, printer->hostname, printer->port, "/ipp/print");
+#endif /* HAVE_SSL */
+
if (icon)
printer->icon = strdup(icon);
@@ -1522,10 +1587,9 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
* Prepare values for the printer attributes...
*/
- httpAssembleURI(HTTP_URI_CODING_ALL, icons, sizeof(icons), "http", NULL,
- printer->hostname, printer->port, "/icon.png");
- httpAssembleURI(HTTP_URI_CODING_ALL, adminurl, sizeof(adminurl), "http", NULL, printer->hostname, printer->port, "/");
- httpAssembleURI(HTTP_URI_CODING_ALL, supplyurl, sizeof(supplyurl), "http", NULL, printer->hostname, printer->port, "/supplies");
+ httpAssembleURI(HTTP_URI_CODING_ALL, icons, sizeof(icons), WEB_SCHEME, NULL, printer->hostname, printer->port, "/icon.png");
+ httpAssembleURI(HTTP_URI_CODING_ALL, adminurl, sizeof(adminurl), WEB_SCHEME, NULL, printer->hostname, printer->port, "/");
+ httpAssembleURI(HTTP_URI_CODING_ALL, supplyurl, sizeof(supplyurl), WEB_SCHEME, NULL, printer->hostname, printer->port, "/supplies");
if (Verbosity)
{
@@ -1610,34 +1674,30 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
printer->attrs = ippNew();
+ if (attrfile)
+ load_attributes(attrfile, printer->attrs);
+
/* charset-configured */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_CHARSET),
- "charset-configured", NULL, "utf-8");
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_CHARSET), "charset-configured", NULL, "utf-8");
/* charset-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_CHARSET),
- "charset-supported", sizeof(charsets) / sizeof(charsets[0]),
- NULL, charsets);
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_CHARSET), "charset-supported", sizeof(charsets) / sizeof(charsets[0]), NULL, charsets);
/* color-supported */
- ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "color-supported",
- ppm_color > 0);
+ if (!ippFindAttribute(printer->attrs, "color-supported", IPP_TAG_ZERO))
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "color-supported", ppm_color > 0);
/* compression-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "compression-supported",
- (int)(sizeof(compressions) / sizeof(compressions[0])), NULL,
- compressions);
+ if (!ippFindAttribute(printer->attrs, "compression-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "compression-supported", (int)(sizeof(compressions) / sizeof(compressions[0])), NULL, compressions);
/* copies-default */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "copies-default", 1);
+ if (!ippFindAttribute(printer->attrs, "copies-default", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "copies-default", 1);
/* copies-supported */
- ippAddRange(printer->attrs, IPP_TAG_PRINTER, "copies-supported", 1, 999);
+ if (!ippFindAttribute(printer->attrs, "copies-supported", IPP_TAG_ZERO))
+ ippAddRange(printer->attrs, IPP_TAG_PRINTER, "copies-supported", 1, 999);
/* document-format-default */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_MIMETYPE,
@@ -1649,47 +1709,55 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
(const char * const *)formats);
/* document-password-supported */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "document-password-supported", 127);
+ if (!ippFindAttribute(printer->attrs, "document-password-supported", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "document-password-supported", 127);
/* finishings-default */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
- "finishings-default", IPP_FINISHINGS_NONE);
+ if (!ippFindAttribute(printer->attrs, "finishings-default", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "finishings-default", IPP_FINISHINGS_NONE);
/* finishings-supported */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
- "finishings-supported", IPP_FINISHINGS_NONE);
+ if (!ippFindAttribute(printer->attrs, "finishings-supported", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "finishings-supported", IPP_FINISHINGS_NONE);
/* generated-natural-language-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_LANGUAGE),
- "generated-natural-language-supported", NULL, "en");
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_LANGUAGE), "generated-natural-language-supported", NULL, "en");
/* identify-actions-default */
- ippAddString (printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "identify-actions-default", NULL, "sound");
+ if (!ippFindAttribute(printer->attrs, "identify-actions-default", IPP_TAG_ZERO))
+ ippAddString (printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "identify-actions-default", NULL, "sound");
/* identify-actions-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "identify-actions-supported", sizeof(identify_actions) / sizeof(identify_actions[0]), NULL, identify_actions);
+ if (!ippFindAttribute(printer->attrs, "identify-actions-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "identify-actions-supported", sizeof(identify_actions) / sizeof(identify_actions[0]), NULL, identify_actions);
/* ipp-features-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-features-supported", sizeof(features) / sizeof(features[0]), NULL, features);
+ if (!ippFindAttribute(printer->attrs, "ipp-features-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-features-supported", sizeof(features) / sizeof(features[0]), NULL, features);
/* ipp-versions-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-versions-supported", sizeof(versions) / sizeof(versions[0]), NULL, versions);
+ if (!ippFindAttribute(printer->attrs, "ipp-versions-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-versions-supported", sizeof(versions) / sizeof(versions[0]), NULL, versions);
/* job-account-id-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "job-account-id-default", NULL, "");
+ if (!ippFindAttribute(printer->attrs, "job-account-id-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "job-account-id-default", NULL, "");
/* job-account-id-supported */
- ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-account-id-supported", 1);
+ if (!ippFindAttribute(printer->attrs, "job-account-id-supported", IPP_TAG_ZERO))
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-account-id-supported", 1);
/* job-accounting-user-id-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "job-accounting-user-id-default", NULL, "");
+ if (!ippFindAttribute(printer->attrs, "job-accounting-user-id-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "job-accounting-user-id-default", NULL, "");
/* job-accounting-user-id-supported */
- ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-accounting-user-id-supported", 1);
+ if (!ippFindAttribute(printer->attrs, "job-accounting-user-id-supported", IPP_TAG_ZERO))
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-accounting-user-id-supported", 1);
/* job-creation-attributes-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-creation-attributes-supported", sizeof(job_creation) / sizeof(job_creation[0]), NULL, job_creation);
+ if (!ippFindAttribute(printer->attrs, "job-creation-attributes-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-creation-attributes-supported", sizeof(job_creation) / sizeof(job_creation[0]), NULL, job_creation);
/* job-ids-supported */
ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-ids-supported", 1);
@@ -1699,171 +1767,153 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
k_supported);
/* job-password-supported */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "job-password-supported", 4);
+ if (!ippFindAttribute(printer->attrs, "job-password-supported", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "job-password-supported", 4);
/* job-preferred-attributes-supported */
ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-preferred-attributes-supported", 0);
/* job-priority-default */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "job-priority-default", 50);
+ if (!ippFindAttribute(printer->attrs, "job-priority-default", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "job-priority-default", 50);
/* job-priority-supported */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "job-priority-supported", 100);
+ if (!ippFindAttribute(printer->attrs, "job-priority-supported", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "job-priority-supported", 100);
/* job-sheets-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_NAME),
- "job-sheets-default", NULL, "none");
+ if (!ippFindAttribute(printer->attrs, "job-sheets-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "job-sheets-default", NULL, "none");
/* job-sheets-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_NAME),
- "job-sheets-supported", NULL, "none");
+ if (!ippFindAttribute(printer->attrs, "job-sheets-supported", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "job-sheets-supported", NULL, "none");
/* media-bottom-margin-supported */
- ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "media-bottom-margin-supported",
- (int)(sizeof(media_xxx_margin_supported) /
- sizeof(media_xxx_margin_supported[0])),
- media_xxx_margin_supported);
+ if (!ippFindAttribute(printer->attrs, "media-bottom-margin-supported", IPP_TAG_ZERO))
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "media-bottom-margin-supported", (int)(sizeof(media_xxx_margin_supported) / sizeof(media_xxx_margin_supported[0])), media_xxx_margin_supported);
/* media-col-database */
- for (num_database = 0, i = 0;
- i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
- i ++)
- {
- if (media_col_sizes[i][2] == _IPP_ENV_ONLY)
- num_database += 3; /* auto + manual + envelope */
- else if (media_col_sizes[i][2] == _IPP_PHOTO_ONLY)
- num_database += 6 * 3; /* auto + photographic-* from auto, manual, and photo */
- else
- num_database += 2; /* Regular + borderless */
- }
-
- media_col_database = ippAddCollections(printer->attrs, IPP_TAG_PRINTER,
- "media-col-database", num_database,
- NULL);
- for (media_col_index = 0, i = 0;
- i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
- i ++)
+ if (!ippFindAttribute(printer->attrs, "media-col-database", IPP_TAG_ZERO))
{
- switch (media_col_sizes[i][2])
+ for (num_database = 0, i = 0;
+ i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
+ i ++)
{
- case _IPP_GENERAL :
- /*
- * Regular + borderless for the general class; no source/type
- * selectors...
- */
+ if (media_col_sizes[i][2] == _IPP_ENV_ONLY)
+ num_database += 3; /* auto + manual + envelope */
+ else if (media_col_sizes[i][2] == _IPP_PHOTO_ONLY)
+ num_database += 6 * 3; /* auto + photographic-* from auto, manual, and photo */
+ else
+ num_database += 2; /* Regular + borderless */
+ }
- ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], NULL, NULL, media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
- ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], NULL, NULL, media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
- break;
+ media_col_database = ippAddCollections(printer->attrs, IPP_TAG_PRINTER, "media-col-database", num_database, NULL);
+ for (media_col_index = 0, i = 0;
+ i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
+ i ++)
+ {
+ switch (media_col_sizes[i][2])
+ {
+ case _IPP_GENERAL :
+ /*
+ * Regular + borderless for the general class; no source/type
+ * selectors...
+ */
- case _IPP_ENV_ONLY :
- /*
- * Regular margins for "auto", "manual", and "envelope" sources.
- */
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], NULL, NULL, media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], NULL, NULL, media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
+ break;
- ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "auto", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
- ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "manual", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
- ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "envelope", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
- break;
- case _IPP_PHOTO_ONLY :
- /*
- * Photos have specific media types and can only be printed via
- * the auto, manual, and photo sources...
- */
+ case _IPP_ENV_ONLY :
+ /*
+ * Regular margins for "auto", "manual", and "envelope" sources.
+ */
- for (j = 0;
- j < (int)(sizeof(media_type_supported) /
- sizeof(media_type_supported[0]));
- j ++)
- {
- if (strcmp(media_type_supported[j], "auto") && strncmp(media_type_supported[j], "photographic-", 13))
- continue;
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "auto", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "manual", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "envelope", "envelope", media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[1]));
+ break;
+ case _IPP_PHOTO_ONLY :
+ /*
+ * Photos have specific media types and can only be printed via
+ * the auto, manual, and photo sources...
+ */
- ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "auto", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
- ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "manual", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
- ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "photo", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
- }
- break;
+ for (j = 0;
+ j < (int)(sizeof(media_type_supported) /
+ sizeof(media_type_supported[0]));
+ j ++)
+ {
+ if (strcmp(media_type_supported[j], "auto") && strncmp(media_type_supported[j], "photographic-", 13))
+ continue;
+
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "auto", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "manual", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
+ ippSetCollection(printer->attrs, &media_col_database, media_col_index ++, create_media_col(media_supported[i], "photo", media_type_supported[j], media_col_sizes[i][0], media_col_sizes[i][1], media_xxx_margin_supported[0]));
+ }
+ break;
+ }
}
}
/* media-col-default */
- media_col_default = create_media_col(media_supported[0],
- media_source_supported[0],
- media_type_supported[0],
- media_col_sizes[0][0],
- media_col_sizes[0][1],
- media_xxx_margin_supported[1]);
+ if (!ippFindAttribute(printer->attrs, "media-col-default", IPP_TAG_ZERO))
+ {
+ media_col_default = create_media_col(media_supported[0], media_source_supported[0], media_type_supported[0], media_col_sizes[0][0], media_col_sizes[0][1],media_xxx_margin_supported[1]);
- ippAddCollection(printer->attrs, IPP_TAG_PRINTER, "media-col-default",
- media_col_default);
- ippDelete(media_col_default);
+ ippAddCollection(printer->attrs, IPP_TAG_PRINTER, "media-col-default",
+ media_col_default);
+ ippDelete(media_col_default);
+ }
/* media-col-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "media-col-supported",
- (int)(sizeof(media_col_supported) /
- sizeof(media_col_supported[0])), NULL,
- media_col_supported);
+ if (!ippFindAttribute(printer->attrs, "media-col-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-col-supported", (int)(sizeof(media_col_supported) / sizeof(media_col_supported[0])), NULL, media_col_supported);
/* media-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "media-default", NULL, media_supported[0]);
+ if (!ippFindAttribute(printer->attrs, "media-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-default", NULL, media_supported[0]);
/* media-left-margin-supported */
- ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "media-left-margin-supported",
- (int)(sizeof(media_xxx_margin_supported) /
- sizeof(media_xxx_margin_supported[0])),
- media_xxx_margin_supported);
+ if (!ippFindAttribute(printer->attrs, "media-left-margin-supported", IPP_TAG_ZERO))
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "media-left-margin-supported", (int)(sizeof(media_xxx_margin_supported) / sizeof(media_xxx_margin_supported[0])), media_xxx_margin_supported);
/* media-right-margin-supported */
- ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "media-right-margin-supported",
- (int)(sizeof(media_xxx_margin_supported) /
- sizeof(media_xxx_margin_supported[0])),
- media_xxx_margin_supported);
+ if (!ippFindAttribute(printer->attrs, "media-right-margin-supported", IPP_TAG_ZERO))
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "media-right-margin-supported", (int)(sizeof(media_xxx_margin_supported) / sizeof(media_xxx_margin_supported[0])), media_xxx_margin_supported);
/* media-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "media-supported",
- (int)(sizeof(media_supported) / sizeof(media_supported[0])),
- NULL, media_supported);
+ if (!ippFindAttribute(printer->attrs, "media-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-supported", (int)(sizeof(media_supported) / sizeof(media_supported[0])), NULL, media_supported);
/* media-size-supported */
- media_size_supported = ippAddCollections(printer->attrs, IPP_TAG_PRINTER,
- "media-size-supported",
- (int)(sizeof(media_col_sizes) /
- sizeof(media_col_sizes[0])),
- NULL);
- for (i = 0;
- i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
- i ++)
- ippSetCollection(printer->attrs, &media_size_supported, i,
- create_media_size(media_col_sizes[i][0],
- media_col_sizes[i][1]));
+ if (!ippFindAttribute(printer->attrs, "media-size-supported", IPP_TAG_ZERO))
+ {
+ media_size_supported = ippAddCollections(printer->attrs, IPP_TAG_PRINTER, "media-size-supported", (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0])), NULL);
+
+ for (i = 0;
+ i < (int)(sizeof(media_col_sizes) / sizeof(media_col_sizes[0]));
+ i ++)
+ {
+ ipp_t *size = create_media_size(media_col_sizes[i][0], media_col_sizes[i][1]);
+
+ ippSetCollection(printer->attrs, &media_size_supported, i, size);
+ ippDelete(size);
+ }
+ }
/* media-source-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-source-supported", (int)(sizeof(media_source_supported) / sizeof(media_source_supported[0])), NULL, media_source_supported);
+ if (!ippFindAttribute(printer->attrs, "media-source-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-source-supported", (int)(sizeof(media_source_supported) / sizeof(media_source_supported[0])), NULL, media_source_supported);
/* media-top-margin-supported */
- ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "media-top-margin-supported",
- (int)(sizeof(media_xxx_margin_supported) /
- sizeof(media_xxx_margin_supported[0])),
- media_xxx_margin_supported);
+ if (!ippFindAttribute(printer->attrs, "media-top-margin-supported", IPP_TAG_ZERO))
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "media-top-margin-supported", (int)(sizeof(media_xxx_margin_supported) / sizeof(media_xxx_margin_supported[0])), media_xxx_margin_supported);
/* media-type-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-type-supported", (int)(sizeof(media_type_supported) / sizeof(media_type_supported[0])), NULL, media_type_supported);
+ if (!ippFindAttribute(printer->attrs, "media-type-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "media-type-supported", (int)(sizeof(media_type_supported) / sizeof(media_type_supported[0])), NULL, media_type_supported);
/* multiple-document-handling-supported */
ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "multiple-document-handling-supported", sizeof(multiple_document_handling) / sizeof(multiple_document_handling[0]), NULL, multiple_document_handling);
@@ -1883,40 +1933,39 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"natural-language-configured", NULL, "en");
/* number-up-default */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "number-up-default", 1);
+ if (!ippFindAttribute(printer->attrs, "number-up-default", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "number-up-default", 1);
/* number-up-supported */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
- "number-up-supported", 1);
+ if (!ippFindAttribute(printer->attrs, "number-up-supported", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "number-up-supported", 1);
/* operations-supported */
- ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
- "operations-supported", sizeof(ops) / sizeof(ops[0]), ops);
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "operations-supported", sizeof(ops) / sizeof(ops[0]), ops);
/* orientation-requested-default */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NOVALUE,
- "orientation-requested-default", 0);
+ if (!ippFindAttribute(printer->attrs, "orientation-requested-default", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NOVALUE, "orientation-requested-default", 0);
/* orientation-requested-supported */
- ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
- "orientation-requested-supported", 4, orients);
+ if (!ippFindAttribute(printer->attrs, "orientation-requested-supported", IPP_TAG_ZERO))
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "orientation-requested-supported", 4, orients);
/* output-bin-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "output-bin-default", NULL, "face-down");
+ if (!ippFindAttribute(printer->attrs, "output-bin-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "output-bin-default", NULL, "face-down");
/* output-bin-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "output-bin-supported", NULL, "face-down");
+ if (!ippFindAttribute(printer->attrs, "output-bin-supported", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "output-bin-supported", NULL, "face-down");
/* overrides-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "overrides-supported", (int)(sizeof(overrides) / sizeof(overrides[0])), NULL, overrides);
+ if (!ippFindAttribute(printer->attrs, "overrides-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "overrides-supported", (int)(sizeof(overrides) / sizeof(overrides[0])), NULL, overrides);
/* page-ranges-supported */
- ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "page-ranges-supported", 1);
+ if (!ippFindAttribute(printer->attrs, "page-ranges-supported", IPP_TAG_ZERO))
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "page-ranges-supported", 1);
/* pages-per-minute */
ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
@@ -1928,33 +1977,40 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"pages-per-minute-color", ppm_color);
/* pdl-override-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "pdl-override-supported", NULL, "attempted");
+ if (!ippFindAttribute(printer->attrs, "pdl-override-supported", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "pdl-override-supported", NULL, "attempted");
/* print-color-mode-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-color-mode-default", NULL, "auto");
+ if (!ippFindAttribute(printer->attrs, "print-color-mode-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-color-mode-default", NULL, "auto");
/* print-color-mode-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-color-mode-supported", (int)(sizeof(print_color_mode_supported) / sizeof(print_color_mode_supported[0])), NULL, print_color_mode_supported);
+ if (!ippFindAttribute(printer->attrs, "print-color-mode-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-color-mode-supported", (int)(sizeof(print_color_mode_supported) / sizeof(print_color_mode_supported[0])), NULL, print_color_mode_supported);
/* print-content-optimize-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-content-optimize-default", NULL, "auto");
+ if (!ippFindAttribute(printer->attrs, "print-content-optimize-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-content-optimize-default", NULL, "auto");
/* print-content-optimize-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-content-optimize-supported", NULL, "auto");
+ if (!ippFindAttribute(printer->attrs, "print-content-optimize-supported", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-content-optimize-supported", NULL, "auto");
/* print-rendering-intent-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-rendering-intent-default", NULL, "auto");
+ if (!ippFindAttribute(printer->attrs, "print-rendering-intent-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-rendering-intent-default", NULL, "auto");
/* print-rendering-intent-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-rendering-intent-supported", NULL, "auto");
+ if (!ippFindAttribute(printer->attrs, "print-rendering-intent-supported", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "print-rendering-intent-supported", NULL, "auto");
/* print-quality-default */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "print-quality-default", IPP_QUALITY_NORMAL);
+ if (!ippFindAttribute(printer->attrs, "print-quality-default", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "print-quality-default", IPP_QUALITY_NORMAL);
/* print-quality-supported */
- ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "print-quality-supported", (int)(sizeof(print_quality_supported) / sizeof(print_quality_supported[0])), print_quality_supported);
+ if (!ippFindAttribute(printer->attrs, "print-quality-supported", IPP_TAG_ZERO))
+ ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM, "print-quality-supported", (int)(sizeof(print_quality_supported) / sizeof(print_quality_supported[0])), print_quality_supported);
/* printer-device-id */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT,
@@ -1964,19 +2020,18 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-get-attributes-supported", NULL, "document-format");
/* printer-geo-location */
- ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_UNKNOWN, "printer-geo-location", 0);
+ if (!ippFindAttribute(printer->attrs, "printer-geo-location", IPP_TAG_ZERO))
+ ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_UNKNOWN, "printer-geo-location", 0);
/* printer-icons */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI,
"printer-icons", NULL, icons);
/* printer-is-accepting-jobs */
- ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "printer-is-accepting-jobs",
- 1);
+ ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "printer-is-accepting-jobs", 1);
/* printer-info */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info",
- NULL, name);
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info", NULL, name);
/* printer-location */
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT,
@@ -1987,7 +2042,7 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
"printer-make-and-model", NULL, make_model);
/* printer-mandatory-job-attributes */
- if (pin)
+ if (pin && !ippFindAttribute(printer->attrs, "", IPP_TAG_ZERO))
{
static const char * const names[] =
{
@@ -2005,22 +2060,23 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-more-info", NULL, adminurl);
/* printer-name */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name",
- NULL, name);
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name", NULL, name);
/* printer-organization */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-organization", NULL, "Apple Inc.");
+ if (!ippFindAttribute(printer->attrs, "printer-organization", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-organization", NULL, "Apple Inc.");
/* printer-organizational-unit */
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-organizational-unit", NULL, "Printing Engineering");
+ if (!ippFindAttribute(printer->attrs, "printer-organizational-unit", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-organizational-unit", NULL, "Printing Engineering");
/* printer-resolution-default */
- ippAddResolution(printer->attrs, IPP_TAG_PRINTER,
- "printer-resolution-default", IPP_RES_PER_INCH, 600, 600);
+ if (!ippFindAttribute(printer->attrs, "printer-resolution-default", IPP_TAG_ZERO))
+ ippAddResolution(printer->attrs, IPP_TAG_PRINTER, "printer-resolution-default", IPP_RES_PER_INCH, 600, 600);
/* printer-resolution-supported */
- ippAddResolution(printer->attrs, IPP_TAG_PRINTER,
- "printer-resolution-supported", IPP_RES_PER_INCH, 600, 600);
+ if (!ippFindAttribute(printer->attrs, "printer-resolutions-supported", IPP_TAG_ZERO))
+ ippAddResolution(printer->attrs, IPP_TAG_PRINTER, "printer-resolution-supported", IPP_RES_PER_INCH, 600, 600);
/* printer-supply-description */
ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-supply-description", (int)(sizeof(printer_supplies) / sizeof(printer_supplies[0])), NULL, printer_supplies);
@@ -2029,7 +2085,15 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-supply-info-uri", NULL, supplyurl);
/* printer-uri-supported */
+#ifdef HAVE_SSL
+ uris[0] = uri;
+ uris[1] = securi;
+
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", 2, NULL, (const char **)uris);
+
+#else
ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, uri);
+#endif /* HAVE_SSL */
/* printer-uuid */
httpAssembleUUID(printer->hostname, port, name, 0, uuid, sizeof(uuid));
@@ -2042,63 +2106,49 @@ create_printer(const char *servername, /* I - Server hostname (NULL for default)
if (i < num_formats)
{
- ippAddResolutions(printer->attrs, IPP_TAG_PRINTER,
- "pwg-raster-document-resolution-supported",
- (int)(sizeof(pwg_raster_document_resolution_supported) /
- sizeof(pwg_raster_document_resolution_supported[0])),
- IPP_RES_PER_INCH,
- pwg_raster_document_resolution_supported,
- pwg_raster_document_resolution_supported);
- ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
- "pwg-raster-document-sheet-back", NULL, "normal");
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
- "pwg-raster-document-type-supported",
- (int)(sizeof(pwg_raster_document_type_supported) /
- sizeof(pwg_raster_document_type_supported[0])), NULL,
- pwg_raster_document_type_supported);
+ if (!ippFindAttribute(printer->attrs, "pwg-raster-document-resolution-supported", IPP_TAG_ZERO))
+ ippAddResolutions(printer->attrs, IPP_TAG_PRINTER, "pwg-raster-document-resolution-supported", (int)(sizeof(pwg_raster_document_resolution_supported) / sizeof(pwg_raster_document_resolution_supported[0])), IPP_RES_PER_INCH, pwg_raster_document_resolution_supported, pwg_raster_document_resolution_supported);
+ if (!ippFindAttribute(printer->attrs, "pwg-raster-document-sheet-back", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "pwg-raster-document-sheet-back", NULL, "normal");
+ if (!ippFindAttribute(printer->attrs, "pwg-raster-document-type-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "pwg-raster-document-type-supported", (int)(sizeof(pwg_raster_document_type_supported) / sizeof(pwg_raster_document_type_supported[0])), NULL, pwg_raster_document_type_supported);
}
/* reference-uri-scheme-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_URISCHEME),
- "reference-uri-schemes-supported",
- (int)(sizeof(reference_uri_schemes_supported) /
- sizeof(reference_uri_schemes_supported[0])),
- NULL, reference_uri_schemes_supported);
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_URISCHEME), "reference-uri-schemes-supported", (int)(sizeof(reference_uri_schemes_supported) / sizeof(reference_uri_schemes_supported[0])), NULL, reference_uri_schemes_supported);
/* sides-default */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "sides-default", NULL, "one-sided");
+ if (!ippFindAttribute(printer->attrs, "sides-default", IPP_TAG_ZERO))
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "sides-default", NULL, "one-sided");
/* sides-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "sides-supported", duplex ? 3 : 1, NULL, sides_supported);
+ if (!ippFindAttribute(printer->attrs, "sides-supported", IPP_TAG_ZERO))
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "sides-supported", duplex ? 3 : 1, NULL, sides_supported);
/* urf-supported */
for (i = 0; i < num_formats; i ++)
if (!strcasecmp(formats[i], "image/urf"))
break;
- if (i < num_formats)
+ if (i < num_formats && !ippFindAttribute(printer->attrs, "urf-supported", IPP_TAG_ZERO))
ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "urf-supported", (int)(sizeof(urf_supported) / sizeof(urf_supported[0])) - !duplex, NULL, urf_supported);
/* uri-authentication-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "uri-authentication-supported", NULL, "none");
+#ifdef HAVE_SSL
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", 2, NULL, uri_authentication_supported);
+#else
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-authentication-supported", NULL, "none");
+#endif /* HAVE_SSL */
/* uri-security-supported */
- ippAddString(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "uri-security-supported", NULL, "none");
+#ifdef HAVE_SSL
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-security-supported", 2, NULL, uri_security_supported);
+#else
+ ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "uri-security-supported", NULL, "none");
+#endif /* HAVE_SSL */
/* which-jobs-supported */
- ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "which-jobs-supported",
- sizeof(which_jobs) / sizeof(which_jobs[0]), NULL, which_jobs);
+ ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "which-jobs-supported", sizeof(which_jobs) / sizeof(which_jobs[0]), NULL, which_jobs);
free(formats[0]);
@@ -2478,6 +2528,325 @@ find_job(_ipp_client_t *client) /* I - Client */
/*
+ * 'get_collection()' - Get a collection value from a file.
+ */
+
+static ipp_t * /* O - Collection value */
+get_collection(FILE *fp, /* I - File to read from */
+ const char *filename, /* I - Attributes filename */
+ int *linenum) /* IO - Line number */
+{
+ char token[1024], /* Token from file */
+ attr[128]; /* Attribute name */
+ ipp_tag_t value; /* Current value type */
+ ipp_t *col = ippNew(); /* Collection value */
+ ipp_attribute_t *lastcol = NULL; /* Last collection attribute */
+
+
+ while (get_token(fp, token, sizeof(token), linenum) != NULL)
+ {
+ if (!strcmp(token, "}"))
+ break;
+ else if (!strcmp(token, "{") && lastcol)
+ {
+ /*
+ * Another collection value
+ */
+
+ ipp_t *subcol = get_collection(fp, filename, linenum);
+ /* Collection value */
+
+ if (subcol)
+ ippSetCollection(col, &lastcol, ippGetCount(lastcol), subcol);
+ else
+ goto col_error;
+ }
+ else if (!_cups_strcasecmp(token, "MEMBER"))
+ {
+ /*
+ * Attribute...
+ */
+
+ lastcol = NULL;
+
+ if (!get_token(fp, token, sizeof(token), linenum))
+ {
+ fprintf(stderr, "ippserver: Missing MEMBER value tag on line %d of \"%s\".\n", *linenum, filename);
+ goto col_error;
+ }
+
+ if ((value = ippTagValue(token)) == IPP_TAG_ZERO)
+ {
+ fprintf(stderr, "ippserver: Bad MEMBER value tag \"%s\" on line %d of \"%s\".\n", token, *linenum, filename);
+ goto col_error;
+ }
+
+ if (!get_token(fp, attr, sizeof(attr), linenum))
+ {
+ fprintf(stderr, "ippserver: Missing MEMBER name on line %d of \"%s\".\n", *linenum, filename);
+ goto col_error;
+ }
+
+ if (!get_token(fp, token, sizeof(token), linenum))
+ {
+ fprintf(stderr, "ippserver: Missing MEMBER value on line %d of \"%s\".\n", *linenum, filename);
+ goto col_error;
+ }
+
+ switch (value)
+ {
+ case IPP_TAG_BOOLEAN :
+ if (!_cups_strcasecmp(token, "true"))
+ ippAddBoolean(col, IPP_TAG_ZERO, attr, 1);
+ else
+ ippAddBoolean(col, IPP_TAG_ZERO, attr, (char)atoi(token));
+ break;
+
+ case IPP_TAG_INTEGER :
+ case IPP_TAG_ENUM :
+ ippAddInteger(col, IPP_TAG_ZERO, value, attr, atoi(token));
+ break;
+
+ case IPP_TAG_RESOLUTION :
+ {
+ int xres, /* X resolution */
+ yres; /* Y resolution */
+ char units[6]; /* Units */
+
+ if (sscanf(token, "%dx%d%5s", &xres, &yres, units) != 3 ||
+ (_cups_strcasecmp(units, "dpi") &&
+ _cups_strcasecmp(units, "dpc") &&
+ _cups_strcasecmp(units, "dpcm") &&
+ _cups_strcasecmp(units, "other")))
+ {
+ fprintf(stderr, "ippserver: Bad resolution value \"%s\" on line %d of \"%s\".\n", token, *linenum, filename);
+ goto col_error;
+ }
+
+ if (!_cups_strcasecmp(units, "dpi"))
+ ippAddResolution(col, IPP_TAG_ZERO, attr, IPP_RES_PER_INCH, xres, yres);
+ else if (!_cups_strcasecmp(units, "dpc") ||
+ !_cups_strcasecmp(units, "dpcm"))
+ ippAddResolution(col, IPP_TAG_ZERO, attr, IPP_RES_PER_CM, xres, yres);
+ else
+ ippAddResolution(col, IPP_TAG_ZERO, attr, (ipp_res_t)0, xres, yres);
+ }
+ break;
+
+ case IPP_TAG_RANGE :
+ {
+ int lowers[4], /* Lower value */
+ uppers[4], /* Upper values */
+ num_vals; /* Number of values */
+
+
+ num_vals = sscanf(token, "%d-%d,%d-%d,%d-%d,%d-%d",
+ lowers + 0, uppers + 0,
+ lowers + 1, uppers + 1,
+ lowers + 2, uppers + 2,
+ lowers + 3, uppers + 3);
+
+ if ((num_vals & 1) || num_vals == 0)
+ {
+ fprintf(stderr, "ippserver: Bad rangeOfInteger value \"%s\" on line %d of \"%s\".\n", token, *linenum, filename);
+ goto col_error;
+ }
+
+ ippAddRanges(col, IPP_TAG_ZERO, attr, num_vals / 2, lowers,
+ uppers);
+ }
+ break;
+
+ case IPP_TAG_BEGIN_COLLECTION :
+ if (!strcmp(token, "{"))
+ {
+ ipp_t *subcol = get_collection(fp, filename, linenum);
+ /* Collection value */
+
+ if (subcol)
+ {
+ lastcol = ippAddCollection(col, IPP_TAG_ZERO, attr, subcol);
+ ippDelete(subcol);
+ }
+ else
+ goto col_error;
+ }
+ else
+ {
+ fprintf(stderr, "ippserver: Bad collection value on line %d of \"%s\".\n", *linenum, filename);
+ goto col_error;
+ }
+ break;
+ case IPP_TAG_STRING :
+ ippAddOctetString(col, IPP_TAG_ZERO, attr, token, (int)strlen(token));
+ break;
+
+ default :
+ if (!strchr(token, ','))
+ ippAddString(col, IPP_TAG_ZERO, value, attr, NULL, token);
+ else
+ {
+ /*
+ * Multiple string values...
+ */
+
+ int num_values; /* Number of values */
+ char *values[100], /* Values */
+ *ptr; /* Pointer to next value */
+
+
+ values[0] = token;
+ num_values = 1;
+
+ for (ptr = strchr(token, ','); ptr; ptr = strchr(ptr, ','))
+ {
+ *ptr++ = '\0';
+ values[num_values] = ptr;
+ num_values ++;
+ if (num_values >= (int)(sizeof(values) / sizeof(values[0])))
+ break;
+ }
+
+ ippAddStrings(col, IPP_TAG_ZERO, value, attr, num_values,
+ NULL, (const char **)values);
+ }
+ break;
+ }
+ }
+ }
+
+ return (col);
+
+ /*
+ * If we get here there was a parse error; free memory and return.
+ */
+
+ col_error:
+
+ ippDelete(col);
+
+ return (NULL);
+}
+
+
+/*
+ * 'get_token()' - Get a token from a file.
+ */
+
+static char * /* O - Token from file or NULL on EOF */
+get_token(FILE *fp, /* I - File to read from */
+ char *buf, /* I - Buffer to read into */
+ int buflen, /* I - Length of buffer */
+ int *linenum) /* IO - Current line number */
+{
+ int ch, /* Character from file */
+ quote; /* Quoting character */
+ char *bufptr, /* Pointer into buffer */
+ *bufend; /* End of buffer */
+
+
+ for (;;)
+ {
+ /*
+ * Skip whitespace...
+ */
+
+ while (isspace(ch = getc(fp)))
+ {
+ if (ch == '\n')
+ (*linenum) ++;
+ }
+
+ /*
+ * Read a token...
+ */
+
+ if (ch == EOF)
+ return (NULL);
+ else if (ch == '\'' || ch == '\"')
+ {
+ /*
+ * Quoted text or regular expression...
+ */
+
+ quote = ch;
+ bufptr = buf;
+ bufend = buf + buflen - 1;
+
+ while ((ch = getc(fp)) != EOF)
+ {
+ if (ch == '\\')
+ {
+ /*
+ * Escape next character...
+ */
+
+ if (bufptr < bufend)
+ *bufptr++ = (char)ch;
+
+ if ((ch = getc(fp)) != EOF && bufptr < bufend)
+ *bufptr++ = (char)ch;
+ }
+ else if (ch == quote)
+ break;
+ else if (bufptr < bufend)
+ *bufptr++ = (char)ch;
+ }
+
+ *bufptr = '\0';
+
+ return (buf);
+ }
+ else if (ch == '#')
+ {
+ /*
+ * Comment...
+ */
+
+ while ((ch = getc(fp)) != EOF)
+ if (ch == '\n')
+ break;
+
+ (*linenum) ++;
+ }
+ else if (ch == '{' || ch == '}' || ch == ',')
+ {
+ buf[0] = (char)ch;
+ buf[1] = '\0';
+
+ return (buf);
+ }
+ else
+ {
+ /*
+ * Whitespace delimited text...
+ */
+
+ ungetc(ch, fp);
+
+ bufptr = buf;
+ bufend = buf + buflen - 1;
+
+ while ((ch = getc(fp)) != EOF)
+ if (isspace(ch) || ch == '#')
+ break;
+ else if (bufptr < bufend)
+ *bufptr++ = (char)ch;
+
+ if (ch == '#')
+ ungetc(ch, fp);
+ else if (ch == '\n')
+ (*linenum) ++;
+
+ *bufptr = '\0';
+
+ return (buf);
+ }
+ }
+}
+
+
+/*
* 'html_escape()' - Write a HTML-safe string.
*/
@@ -3303,45 +3672,22 @@ ipp_get_printer_attributes(
"printer-state-reasons", NULL, "none");
else
{
- int num_reasons = 0;/* Number of reasons */
- const char *reasons[32]; /* Reason strings */
-
- if (printer->state_reasons & _IPP_PREASON_OTHER)
- reasons[num_reasons ++] = "other";
- if (printer->state_reasons & _IPP_PREASON_COVER_OPEN)
- reasons[num_reasons ++] = "cover-open";
- if (printer->state_reasons & _IPP_PREASON_INPUT_TRAY_MISSING)
- reasons[num_reasons ++] = "input-tray-missing";
- if (printer->state_reasons & _IPP_PREASON_MARKER_SUPPLY_EMPTY)
- reasons[num_reasons ++] = "marker-supply-empty-warning";
- if (printer->state_reasons & _IPP_PREASON_MARKER_SUPPLY_LOW)
- reasons[num_reasons ++] = "marker-supply-low-report";
- if (printer->state_reasons & _IPP_PREASON_MARKER_WASTE_ALMOST_FULL)
- reasons[num_reasons ++] = "marker-waste-almost-full-report";
- if (printer->state_reasons & _IPP_PREASON_MARKER_WASTE_FULL)
- reasons[num_reasons ++] = "marker-waste-full-warning";
- if (printer->state_reasons & _IPP_PREASON_MEDIA_EMPTY)
- reasons[num_reasons ++] = "media-empty-warning";
- if (printer->state_reasons & _IPP_PREASON_MEDIA_JAM)
- reasons[num_reasons ++] = "media-jam-warning";
- if (printer->state_reasons & _IPP_PREASON_MEDIA_LOW)
- reasons[num_reasons ++] = "media-low-report";
- if (printer->state_reasons & _IPP_PREASON_MEDIA_NEEDED)
- reasons[num_reasons ++] = "media-needed-report";
- if (printer->state_reasons & _IPP_PREASON_MOVING_TO_PAUSED)
- reasons[num_reasons ++] = "moving-to-paused";
- if (printer->state_reasons & _IPP_PREASON_PAUSED)
- reasons[num_reasons ++] = "paused";
- if (printer->state_reasons & _IPP_PREASON_SPOOL_AREA_FULL)
- reasons[num_reasons ++] = "spool-area-full";
- if (printer->state_reasons & _IPP_PREASON_TONER_EMPTY)
- reasons[num_reasons ++] = "toner-empty-warning";
- if (printer->state_reasons & _IPP_PREASON_TONER_LOW)
- reasons[num_reasons ++] = "toner-low-report";
-
- ippAddStrings(client->response, IPP_TAG_PRINTER,
- IPP_CONST_TAG(IPP_TAG_KEYWORD),
- "printer-state-reasons", num_reasons, NULL, reasons);
+ ipp_attribute_t *attr = NULL; /* printer-state-reasons */
+ _ipp_preason_t bit; /* Reason bit */
+ int i; /* Looping var */
+ char reason[32]; /* Reason string */
+
+ for (i = 0, bit = 1; i < (int)(sizeof(_ipp_preason_strings) / sizeof(_ipp_preason_strings[0])); i ++, bit *= 2)
+ {
+ if (printer->state_reasons & bit)
+ {
+ snprintf(reason, sizeof(reason), "%s-%s", _ipp_preason_strings[0], printer->state == IPP_PSTATE_IDLE ? "report" : printer->state == IPP_PSTATE_PROCESSING ? "warning" : "error");
+ if (attr)
+ ippSetString(client->response, &attr, ippGetCount(attr), reason);
+ else
+ attr = ippAddString(client->response, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "printer-state-reasons", NULL, reason);
+ }
+ }
}
}
@@ -3384,7 +3730,21 @@ static void
ipp_identify_printer(
_ipp_client_t *client) /* I - Client */
{
- /* TODO: Do something */
+ ipp_attribute_t *actions, /* identify-actions */
+ *message; /* message */
+
+
+ actions = ippFindAttribute(client->request, "identify-actions", IPP_TAG_KEYWORD);
+ message = ippFindAttribute(client->request, "message", IPP_TAG_TEXT);
+
+ if (!actions || ippContainsString(actions, "sound"))
+ {
+ putchar(0x07);
+ fflush(stdout);
+ }
+
+ if (ippContainsString(actions, "display"))
+ printf("IDENTIFY from %s: %s\n", client->hostname, message ? ippGetString(message, 0, NULL) : "No message supplied");
respond_ipp(client, IPP_STATUS_OK, NULL);
}
@@ -4432,6 +4792,296 @@ ipp_validate_job(_ipp_client_t *client) /* I - Client */
/*
+ * 'load_attributes()' - Load printer attributes from a file.
+ *
+ * Syntax is based on ipptool format:
+ *
+ * ATTR value-tag name value
+ */
+
+static void
+load_attributes(const char *filename, /* I - File to load */
+ ipp_t *attrs) /* I - Printer attributes */
+{
+ int linenum = 0; /* Current line number */
+ FILE *fp = NULL; /* Test file */
+ char attr[128], /* Attribute name */
+ token[1024], /* Token from file */
+ *tokenptr; /* Pointer into token */
+ ipp_tag_t value; /* Current value type */
+ ipp_attribute_t *attrptr, /* Attribute pointer */
+ *lastcol = NULL; /* Last collection attribute */
+
+
+ if ((fp = fopen(filename, "r")) == NULL)
+ {
+ fprintf(stderr, "ippserver: Unable to open \"%s\": %s\n", filename, strerror(errno));
+ exit(1);
+ }
+
+ while (get_token(fp, token, sizeof(token), &linenum) != NULL)
+ {
+ if (!_cups_strcasecmp(token, "ATTR"))
+ {
+ /*
+ * Attribute...
+ */
+
+ if (!get_token(fp, token, sizeof(token), &linenum))
+ {
+ fprintf(stderr, "ippserver: Missing ATTR value tag on line %d of \"%s\".\n", linenum, filename);
+ exit(1);
+ }
+
+ if ((value = ippTagValue(token)) == IPP_TAG_ZERO)
+ {
+ fprintf(stderr, "ippserver: Bad ATTR value tag \"%s\" on line %d of \"%s\".\n", token, linenum, filename);
+ exit(1);
+ }
+
+ if (!get_token(fp, attr, sizeof(attr), &linenum))
+ {
+ fprintf(stderr, "ippserver: Missing ATTR name on line %d of \"%s\".\n", linenum, filename);
+ exit(1);
+ }
+
+ if (!get_token(fp, token, sizeof(token), &linenum))
+ {
+ fprintf(stderr, "ippserver: Missing ATTR value on line %d of \"%s\".\n", linenum, filename);
+ exit(1);
+ }
+
+ attrptr = NULL;
+
+ switch (value)
+ {
+ case IPP_TAG_BOOLEAN :
+ if (!_cups_strcasecmp(token, "true"))
+ attrptr = ippAddBoolean(attrs, IPP_TAG_PRINTER, attr, 1);
+ else
+ attrptr = ippAddBoolean(attrs, IPP_TAG_PRINTER, attr, (char)atoi(token));
+ break;
+
+ case IPP_TAG_INTEGER :
+ case IPP_TAG_ENUM :
+ if (!strchr(token, ','))
+ attrptr = ippAddInteger(attrs, IPP_TAG_PRINTER, value, attr, (int)strtol(token, &tokenptr, 0));
+ else
+ {
+ int values[100], /* Values */
+ num_values = 1; /* Number of values */
+
+ values[0] = (int)strtol(token, &tokenptr, 10);
+ while (tokenptr && *tokenptr &&
+ num_values < (int)(sizeof(values) / sizeof(values[0])))
+ {
+ if (*tokenptr == ',')
+ tokenptr ++;
+ else if (!isdigit(*tokenptr & 255) && *tokenptr != '-')
+ break;
+
+ values[num_values] = (int)strtol(tokenptr, &tokenptr, 0);
+ num_values ++;
+ }
+
+ attrptr = ippAddIntegers(attrs, IPP_TAG_PRINTER, value, attr, num_values, values);
+ }
+
+ if (!tokenptr || *tokenptr)
+ {
+ fprintf(stderr, "ippserver: Bad %s value \"%s\" on line %d of \"%s\".\n", ippTagString(value), token, linenum, filename);
+ exit(1);
+ }
+ break;
+
+ case IPP_TAG_RESOLUTION :
+ {
+ int xres, /* X resolution */
+ yres; /* Y resolution */
+ ipp_res_t units; /* Units */
+ char *start, /* Start of value */
+ *ptr, /* Pointer into value */
+ *next = NULL; /* Next value */
+
+ for (start = token; start; start = next)
+ {
+ xres = yres = (int)strtol(start, (char **)&ptr, 10);
+ if (ptr > start && xres > 0)
+ {
+ if (*ptr == 'x')
+ yres = (int)strtol(ptr + 1, (char **)&ptr, 10);
+ }
+
+ if (ptr && (next = strchr(ptr, ',')) != NULL)
+ *next++ = '\0';
+
+ if (ptr <= start || xres <= 0 || yres <= 0 || !ptr ||
+ (_cups_strcasecmp(ptr, "dpi") &&
+ _cups_strcasecmp(ptr, "dpc") &&
+ _cups_strcasecmp(ptr, "dpcm") &&
+ _cups_strcasecmp(ptr, "other")))
+ {
+ fprintf(stderr, "ippserver: Bad resolution value \"%s\" on line %d of \"%s\".\n", token, linenum, filename);
+ exit(1);
+ }
+
+ if (!_cups_strcasecmp(ptr, "dpc") || !_cups_strcasecmp(ptr, "dpcm"))
+ units = IPP_RES_PER_CM;
+ else
+ units = IPP_RES_PER_INCH;
+
+ if (attrptr)
+ ippSetResolution(attrs, &attrptr, ippGetCount(attrptr), units, xres, yres);
+ else
+ attrptr = ippAddResolution(attrs, IPP_TAG_PRINTER, attr, units, xres, yres);
+ }
+ }
+ break;
+
+ case IPP_TAG_RANGE :
+ {
+ int lowers[4], /* Lower value */
+ uppers[4], /* Upper values */
+ num_vals; /* Number of values */
+
+
+ num_vals = sscanf(token, "%d-%d,%d-%d,%d-%d,%d-%d",
+ lowers + 0, uppers + 0,
+ lowers + 1, uppers + 1,
+ lowers + 2, uppers + 2,
+ lowers + 3, uppers + 3);
+
+ if ((num_vals & 1) || num_vals == 0)
+ {
+ fprintf(stderr, "ippserver: Bad rangeOfInteger value \"%s\" on line %d of \"%s\".", token, linenum, filename);
+ exit(1);
+ }
+
+ attrptr = ippAddRanges(attrs, IPP_TAG_PRINTER, attr, num_vals / 2, lowers,
+ uppers);
+ }
+ break;
+
+ case IPP_TAG_BEGIN_COLLECTION :
+ if (!strcmp(token, "{"))
+ {
+ ipp_t *col = get_collection(fp, filename, &linenum);
+ /* Collection value */
+
+ if (col)
+ {
+ attrptr = lastcol = ippAddCollection(attrs, IPP_TAG_PRINTER, attr, col);
+ ippDelete(col);
+ }
+ else
+ exit(1);
+ }
+ else
+ {
+ fprintf(stderr, "ippserver: Bad ATTR collection value on line %d of \"%s\".\n", linenum, filename);
+ exit(1);
+ }
+
+ do
+ {
+ ipp_t *col; /* Collection value */
+ long pos = ftell(fp); /* Save position of file */
+
+ if (!get_token(fp, token, sizeof(token), &linenum))
+ break;
+
+ if (strcmp(token, ","))
+ {
+ fseek(fp, pos, SEEK_SET);
+ break;
+ }
+
+ if (!get_token(fp, token, sizeof(token), &linenum) || strcmp(token, "{"))
+ {
+ fprintf(stderr, "ippserver: Unexpected \"%s\" on line %d of \"%s\".\n", token, linenum, filename);
+ exit(1);
+ }
+
+ if ((col = get_collection(fp, filename, &linenum)) == NULL)
+ break;
+
+ ippSetCollection(attrs, &attrptr, ippGetCount(attrptr), col);
+ lastcol = attrptr;
+ }
+ while (!strcmp(token, "{"));
+ break;
+
+ case IPP_TAG_STRING :
+ attrptr = ippAddOctetString(attrs, IPP_TAG_PRINTER, attr, token, (int)strlen(token));
+ break;
+
+ default :
+ fprintf(stderr, "ippserver: Unsupported ATTR value tag %s on line %d of \"%s\".\n", ippTagString(value), linenum, filename);
+ exit(1);
+
+ case IPP_TAG_TEXTLANG :
+ case IPP_TAG_NAMELANG :
+ case IPP_TAG_TEXT :
+ case IPP_TAG_NAME :
+ case IPP_TAG_KEYWORD :
+ case IPP_TAG_URI :
+ case IPP_TAG_URISCHEME :
+ case IPP_TAG_CHARSET :
+ case IPP_TAG_LANGUAGE :
+ case IPP_TAG_MIMETYPE :
+ if (!strchr(token, ','))
+ attrptr = ippAddString(attrs, IPP_TAG_PRINTER, value, attr, NULL, token);
+ else
+ {
+ /*
+ * Multiple string values...
+ */
+
+ int num_values; /* Number of values */
+ char *values[100], /* Values */
+ *ptr; /* Pointer to next value */
+
+
+ values[0] = token;
+ num_values = 1;
+
+ for (ptr = strchr(token, ','); ptr; ptr = strchr(ptr, ','))
+ {
+ if (ptr > token && ptr[-1] == '\\')
+ _cups_strcpy(ptr - 1, ptr);
+ else
+ {
+ *ptr++ = '\0';
+ values[num_values] = ptr;
+ num_values ++;
+ if (num_values >= (int)(sizeof(values) / sizeof(values[0])))
+ break;
+ }
+ }
+
+ attrptr = ippAddStrings(attrs, IPP_TAG_PRINTER, value, attr, num_values, NULL, (const char **)values);
+ }
+ break;
+ }
+
+ if (!attrptr)
+ {
+ fprintf(stderr, "ippserver: Unable to add attribute on line %d of \"%s\": %s\n", linenum, filename, cupsLastErrorString());
+ exit(1);
+ }
+ }
+ else
+ {
+ fprintf(stderr, "ippserver: Unknown directive \"%s\" on line %d of \"%s\".\n", token, linenum, filename);
+ exit(1);
+ }
+ }
+
+ fclose(fp);
+}
+
+
+/*
* 'parse_options()' - Parse URL options into CUPS options.
*
* The client->options string is destroyed by this function.
@@ -4466,6 +5116,20 @@ parse_options(_ipp_client_t *client, /* I - Client */
/*
+ * 'process_attr_message()' - Process an ATTR: message from a command.
+ */
+
+static void
+process_attr_message(
+ _ipp_job_t *job, /* I - Job */
+ char *message) /* I - Message */
+{
+ (void)job;
+ (void)message;
+}
+
+
+/*
* 'process_client()' - Process client requests on a thread.
*/
@@ -5391,6 +6055,13 @@ process_job(_ipp_job_t *job) /* I - Job */
ipp_attribute_t *attr; /* Job attribute */
char val[1280], /* IPP_NAME=value */
*valptr; /* Pointer into string */
+#ifndef WIN32
+ int mypipe[2]; /* Pipe for stderr */
+ char line[2048], /* Line from stderr */
+ *ptr, /* Pointer into line */
+ *endptr; /* End of line */
+ ssize_t bytes; /* Bytes read */
+#endif /* !WIN32 */
fprintf(stderr, "Running command \"%s %s\".\n", job->printer->command,
job->filename);
@@ -5450,13 +6121,25 @@ process_job(_ipp_job_t *job) /* I - Job */
#ifdef WIN32
status = _spawnvpe(_P_WAIT, job->printer->command, myargv, myenvp);
+
#else
+ if (pipe(mypipe))
+ {
+ perror("Unable to create pipe for stderr");
+ mypipe[0] = mypipe[1] = -1;
+ }
+
if ((pid = fork()) == 0)
{
/*
* Child comes here...
*/
+ close(2);
+ dup2(mypipe[1], 2);
+ close(mypipe[0]);
+ close(mypipe[1]);
+
execve(job->printer->command, myargv, myenvp);
exit(errno);
}
@@ -5469,6 +6152,9 @@ process_job(_ipp_job_t *job) /* I - Job */
perror("Unable to start job processing command");
status = -1;
+ close(mypipe[0]);
+ close(mypipe[1]);
+
/*
* Free memory used for environment...
*/
@@ -5484,6 +6170,55 @@ process_job(_ipp_job_t *job) /* I - Job */
while (myenvc > 0)
free(myenvp[-- myenvc]);
+
+ /*
+ * If the pipe exists, read from it until EOF...
+ */
+
+ if (mypipe[0] >= 0)
+ {
+ close(mypipe[1]);
+
+ endptr = line;
+ while ((bytes = read(mypipe[0], endptr, sizeof(line) - (size_t)(endptr - line) - 1)) > 0)
+ {
+ endptr += bytes;
+ *endptr = '\0';
+
+ while ((ptr = strchr(line, '\n')) != NULL)
+ {
+ *ptr++ = '\0';
+
+ if (!strncmp(line, "STATE:", 6))
+ {
+ /*
+ * Process printer-state-reasons keywords.
+ */
+
+ process_state_message(job, line);
+ }
+ else if (!strncmp(line, "ATTR:", 5))
+ {
+ /*
+ * Process printer attribute update.
+ */
+
+ process_attr_message(job, line);
+ }
+ else if (Verbosity > 1)
+ fprintf(stderr, "%s: %s\n", job->printer->command, line);
+
+ bytes = ptr - line;
+ if (ptr < endptr)
+ memmove(line, ptr, (size_t)(endptr - ptr));
+ endptr -= bytes;
+ *endptr = '\0';
+ }
+ }
+
+ close(mypipe[0]);
+ }
+
/*
* Wait for child to complete...
*/
@@ -5547,6 +6282,95 @@ process_job(_ipp_job_t *job) /* I - Job */
/*
+ * 'process_state_message()' - Process a STATE: message from a command.
+ */
+
+static void
+process_state_message(
+ _ipp_job_t *job, /* I - Job */
+ char *message) /* I - Message */
+{
+ int i; /* Looping var */
+ _ipp_preason_t state_reasons, /* printer-state-reasons values */
+ bit; /* Current reason bit */
+ char *ptr, /* Pointer into message */
+ *next; /* Next keyword in message */
+ int remove; /* Non-zero if we are removing keywords */
+
+
+ /*
+ * Skip leading "STATE:" and any whitespace...
+ */
+
+ for (message += 6; *message; message ++)
+ if (*message != ' ' && *message != '\t')
+ break;
+
+ /*
+ * Support the following forms of message:
+ *
+ * "keyword[,keyword,...]" to set the printer-state-reasons value(s).
+ *
+ * "-keyword[,keyword,...]" to remove keywords.
+ *
+ * "+keyword[,keyword,...]" to add keywords.
+ *
+ * Keywords may or may not have a suffix (-report, -warning, -error) per
+ * RFC 2911.
+ */
+
+ if (*message == '-')
+ {
+ remove = 1;
+ state_reasons = job->printer->state_reasons;
+ message ++;
+ }
+ else if (*message == '+')
+ {
+ remove = 0;
+ state_reasons = job->printer->state_reasons;
+ message ++;
+ }
+ else
+ {
+ remove = 0;
+ state_reasons = _IPP_PREASON_NONE;
+ }
+
+ while (*message)
+ {
+ if ((next = strchr(message, ',')) != NULL)
+ *next++ = '\0';
+
+ if ((ptr = strstr(message, "-error")) != NULL)
+ *ptr = '\0';
+ else if ((ptr = strstr(message, "-report")) != NULL)
+ *ptr = '\0';
+ else if ((ptr = strstr(message, "-warning")) != NULL)
+ *ptr = '\0';
+
+ for (i = 0, bit = 1; i < (int)(sizeof(_ipp_preason_strings) / sizeof(_ipp_preason_strings[0])); i ++, bit *= 2)
+ {
+ if (!strcmp(message, _ipp_preason_strings[i]))
+ {
+ if (remove)
+ state_reasons &= ~bit;
+ else
+ state_reasons |= bit;
+ }
+ }
+
+ if (next)
+ message = next;
+ else
+ break;
+ }
+
+ job->printer->state_reasons = state_reasons;
+}
+
+
+/*
* 'register_printer()' - Register a printer object via Bonjour.
*/
@@ -6064,7 +6888,7 @@ usage(int status) /* O - Exit status */
{
if (!status)
{
- puts(CUPS_SVERSION " - Copyright 2010-2014 by Apple Inc. All rights "
+ puts(CUPS_SVERSION " - Copyright 2010-2015 by Apple Inc. All rights "
"reserved.");
puts("");
}
@@ -6075,6 +6899,7 @@ usage(int status) /* O - Exit status */
puts("-2 Supports 2-sided printing (default=1-sided)");
puts("-M manufacturer Manufacturer name (default=Test)");
puts("-P PIN printing mode");
+ puts("-a attributes-file Load printer attributes from file");
puts("-c command Run command for every print job");
printf("-d spool-directory Spool directory "
"(default=/tmp/ippserver.%d)\n", (int)getpid());
@@ -6253,6 +7078,7 @@ valid_job_attributes(
_ipp_client_t *client) /* I - Client */
{
int i, /* Looping var */
+ count, /* Number of values */
valid = 1; /* Valid attributes? */
ipp_attribute_t *attr, /* Current attribute */
*supported; /* xxx-supported attribute */
@@ -6359,13 +7185,9 @@ valid_job_attributes(
}
else
{
- for (i = 0;
- i < (int)(sizeof(media_supported) / sizeof(media_supported[0]));
- i ++)
- if (!strcmp(ippGetString(attr, 0, NULL), media_supported[i]))
- break;
+ supported = ippFindAttribute(client->printer->attrs, "media-supported", IPP_TAG_KEYWORD);
- if (i >= (int)(sizeof(media_supported) / sizeof(media_supported[0])))
+ if (!ippContainsString(supported, ippGetString(attr, 0, NULL)))
{
respond_unsupported(client, attr);
valid = 0;
@@ -6375,13 +7197,86 @@ valid_job_attributes(
if ((attr = ippFindAttribute(client->request, "media-col", IPP_TAG_ZERO)) != NULL)
{
+ ipp_t *col, /* media-col collection */
+ *size; /* media-size collection */
+ ipp_attribute_t *member, /* Member attribute */
+ *x_dim, /* x-dimension */
+ *y_dim; /* y-dimension */
+ int x_value, /* y-dimension value */
+ y_value; /* x-dimension value */
+
if (ippGetCount(attr) != 1 ||
ippGetValueTag(attr) != IPP_TAG_BEGIN_COLLECTION)
{
respond_unsupported(client, attr);
valid = 0;
}
- /* TODO: check for valid media-col */
+
+ col = ippGetCollection(attr, 0);
+
+ if ((member = ippFindAttribute(col, "media-size-name", IPP_TAG_ZERO)) != NULL)
+ {
+ if (ippGetCount(member) != 1 ||
+ (ippGetValueTag(member) != IPP_TAG_NAME &&
+ ippGetValueTag(member) != IPP_TAG_NAMELANG &&
+ ippGetValueTag(member) != IPP_TAG_KEYWORD))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else
+ {
+ supported = ippFindAttribute(client->printer->attrs, "media-supported", IPP_TAG_KEYWORD);
+
+ if (!ippContainsString(supported, ippGetString(member, 0, NULL)))
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+ }
+ else if ((member = ippFindAttribute(col, "media-size", IPP_TAG_BEGIN_COLLECTION)) != NULL)
+ {
+ if (ippGetCount(member) != 1)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else
+ {
+ size = ippGetCollection(member, 0);
+
+ if ((x_dim = ippFindAttribute(size, "x-dimension", IPP_TAG_INTEGER)) == NULL || ippGetCount(x_dim) != 1 ||
+ (y_dim = ippFindAttribute(size, "y-dimension", IPP_TAG_INTEGER)) == NULL || ippGetCount(y_dim) != 1)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ else
+ {
+ x_value = ippGetInteger(x_dim, 0);
+ y_value = ippGetInteger(y_dim, 0);
+ supported = ippFindAttribute(client->printer->attrs, "media-size-supported", IPP_TAG_BEGIN_COLLECTION);
+ count = ippGetCount(supported);
+
+ for (i = 0; i < count ; i ++)
+ {
+ size = ippGetCollection(supported, i);
+ x_dim = ippFindAttribute(size, "x-dimension", IPP_TAG_ZERO);
+ y_dim = ippFindAttribute(size, "y-dimension", IPP_TAG_ZERO);
+
+ if (ippContainsInteger(x_dim, x_value) && ippContainsInteger(y_dim, y_value))
+ break;
+ }
+
+ if (i >= count)
+ {
+ respond_unsupported(client, attr);
+ valid = 0;
+ }
+ }
+ }
+ }
}
if ((attr = ippFindAttribute(client->request, "multiple-document-handling", IPP_TAG_ZERO)) != NULL)
@@ -6440,8 +7335,7 @@ valid_job_attributes(
}
else
{
- int count, /* Number of supported values */
- xdpi, /* Horizontal resolution for job template attribute */
+ int xdpi, /* Horizontal resolution for job template attribute */
ydpi, /* Vertical resolution for job template attribute */
sydpi; /* Vertical resolution for supported value */
ipp_res_t units, /* Units for job template attribute */
@@ -6494,5 +7388,5 @@ valid_job_attributes(
/*
- * End of "$Id: ippserver.c 12598 2015-05-05 18:57:57Z msweet $".
+ * End of "$Id: ippserver.c 12840 2015-08-09 02:10:23Z msweet $".
*/
diff --git a/test/run-stp-tests.sh b/test/run-stp-tests.sh
index 6bf7c0a84..1a761041a 100755
--- a/test/run-stp-tests.sh
+++ b/test/run-stp-tests.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# "$Id: run-stp-tests.sh 12820 2015-07-31 14:12:25Z msweet $"
+# "$Id: run-stp-tests.sh 12853 2015-08-28 13:38:46Z msweet $"
#
# Perform the complete set of IPP compliance tests specified in the
# CUPS Software Test Plan.
@@ -133,6 +133,7 @@ case "$testtype" in
pjobs=10
pprinters=0
loglevel="debug2"
+ testtype="1"
;;
esac
@@ -997,9 +998,9 @@ fi
# Warning log messages
count=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
if test $count != 8; then
- echo "FAIL: $count warning messages, expected 18."
+ echo "FAIL: $count warning messages, expected 8."
$GREP '^W ' $BASE/log/error_log
- echo "<P>FAIL: $count warning messages, expected 18.</P>" >>$strfile
+ echo "<P>FAIL: $count warning messages, expected 8.</P>" >>$strfile
echo "<PRE>" >>$strfile
$GREP '^W ' $BASE/log/error_log | sed -e '1,$s/&/&amp;/g' -e '1,$s/</&lt;/g' >>$strfile
echo "</PRE>" >>$strfile
@@ -1113,5 +1114,5 @@ if test $fail != 0; then
fi
#
-# End of "$Id: run-stp-tests.sh 12820 2015-07-31 14:12:25Z msweet $"
+# End of "$Id: run-stp-tests.sh 12853 2015-08-28 13:38:46Z msweet $"
#
diff --git a/vcnet/config.h b/vcnet/config.h
index 81cbb8a09..72bf9cc37 100644
--- a/vcnet/config.h
+++ b/vcnet/config.h
@@ -1,5 +1,5 @@
/*
- * "$Id: config.h 12763 2015-06-24 20:12:22Z msweet $"
+ * "$Id: config.h 12831 2015-08-05 14:24:32Z msweet $"
*
* Configuration file for CUPS on Windows.
*
@@ -96,8 +96,8 @@ typedef unsigned long useconds_t;
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.1b2"
-#define CUPS_MINIMAL "CUPS/2.1b2"
+#define CUPS_SVERSION "CUPS v2.1.0"
+#define CUPS_MINIMAL "CUPS/2.1.0"
/*
@@ -799,5 +799,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 12763 2015-06-24 20:12:22Z msweet $".
+ * End of "$Id: config.h 12831 2015-08-05 14:24:32Z msweet $".
*/
diff --git a/xcode/config.h b/xcode/config.h
index e145efc30..882730417 100644
--- a/xcode/config.h
+++ b/xcode/config.h
@@ -1,5 +1,5 @@
/*
- * "$Id: config.h 12763 2015-06-24 20:12:22Z msweet $"
+ * "$Id: config.h 12831 2015-08-05 14:24:32Z msweet $"
*
* Configuration file for CUPS and Xcode.
*
@@ -22,8 +22,8 @@
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.1b2"
-#define CUPS_MINIMAL "CUPS/2.1b2"
+#define CUPS_SVERSION "CUPS v2.1.0"
+#define CUPS_MINIMAL "CUPS/2.1.0"
/*
@@ -738,5 +738,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 12763 2015-06-24 20:12:22Z msweet $".
+ * End of "$Id: config.h 12831 2015-08-05 14:24:32Z msweet $".
*/