]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Import CUPS v2.1.0 release-2.1.0
authorMichael Sweet <msweet@msweet-imac.local>
Tue, 15 Mar 2016 14:43:24 +0000 (10:43 -0400)
committerMichael Sweet <msweet@msweet-imac.local>
Tue, 15 Mar 2016 14:43:24 +0000 (10:43 -0400)
131 files changed:
CHANGES.txt
INSTALL.txt
README.txt
conf/mime.types
config-scripts/cups-common.m4
config-scripts/cups-defaults.m4
config-scripts/cups-dnssd.m4
config-scripts/cups-startup.m4
configure
configure.ac
cups/Makefile
cups/http.c
cups/http.h
cups/language.c
cups/localize.c
cups/ppd.c
cups/testlang.c
doc/help/accounting.html
doc/help/api-array.html
doc/help/api-cgi.html
doc/help/api-cups.html
doc/help/api-filedir.html
doc/help/api-filter.html
doc/help/api-httpipp.html
doc/help/api-mime.html
doc/help/api-overview.html
doc/help/api-ppd.html
doc/help/api-ppdc.html
doc/help/api-raster.html
doc/help/kerberos.html
doc/help/man-backend.html
doc/help/man-cancel.html
doc/help/man-classes.conf.html
doc/help/man-cups-config.html
doc/help/man-cups-lpd.html
doc/help/man-cups-snmp.conf.html
doc/help/man-cups-snmp.html
doc/help/man-cups.html
doc/help/man-cupsaccept.html
doc/help/man-cupsaddsmb.html
doc/help/man-cupsctl.html
doc/help/man-cupsd-helper.html
doc/help/man-cupsd-logs.html
doc/help/man-cupsd.html
doc/help/man-cupsenable.html
doc/help/man-cupsfilter.html
doc/help/man-cupstestdsc.html
doc/help/man-cupstestppd.html
doc/help/man-filter.html
doc/help/man-ippfind.html
doc/help/man-ipptool.html
doc/help/man-lp.html
doc/help/man-lpc.html
doc/help/man-lpinfo.html
doc/help/man-lpmove.html
doc/help/man-lpoptions.html
doc/help/man-lpq.html
doc/help/man-lpr.html
doc/help/man-lprm.html
doc/help/man-lpstat.html
doc/help/man-mailto.conf.html
doc/help/man-mime.convs.html
doc/help/man-mime.types.html
doc/help/man-notifier.html
doc/help/man-ppdc.html
doc/help/man-ppdcfile.html
doc/help/man-ppdhtml.html
doc/help/man-ppdi.html
doc/help/man-ppdmerge.html
doc/help/man-ppdpo.html
doc/help/man-printers.conf.html
doc/help/man-subscriptions.conf.html
doc/help/postscript-driver.html
doc/help/ppd-compiler.html
doc/help/raster-driver.html
doc/help/spec-design.html
doc/help/spec-ppd.html
filter/spec-ppd.shtml
man/backend.man
man/cancel.man
man/classes.conf.man
man/cups-config.man
man/cups-lpd.man.in
man/cups-snmp.conf.man
man/cups-snmp.man.in
man/cups.man
man/cupsaccept.man
man/cupsaddsmb.man.in
man/cupsctl.man
man/cupsd-helper.man
man/cupsd-logs.man
man/cupsd.man.in
man/cupsenable.man
man/cupsfilter.man
man/cupstestdsc.man
man/cupstestppd.man
man/filter.man
man/ippfind.man
man/ipptool.man
man/lp.man
man/lpc.man
man/lpinfo.man
man/lpmove.man
man/lpoptions.man.in
man/lpq.man
man/lpr.man
man/lprm.man
man/lpstat.man
man/mailto.conf.man
man/mime.convs.man
man/mime.types.man
man/notifier.man
man/ppdc.man
man/ppdcfile.man
man/ppdhtml.man
man/ppdi.man
man/ppdmerge.man
man/ppdpo.man
man/printers.conf.man
man/subscriptions.conf.man
packaging/cups.spec
packaging/cups.spec.in
scheduler/ipp.c
scheduler/job.c
scheduler/log.c
test/identify-printer-display.test [new file with mode: 0644]
test/identify-printer-multiple.test [new file with mode: 0644]
test/ippserver.c
test/run-stp-tests.sh
vcnet/config.h
xcode/config.h

index 4adbe798da79c06d6ea315831d56e4d842c076f5..ab1574c1f2e17deafdd029b38659aafbe2d38b28 100644 (file)
@@ -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
 
index 28e4eefd32e141df4cb145121eaa2e6f9a50a2c3..bdc219c47d0f176d3ffd36bb986ac27a6d9bbf25 100644 (file)
@@ -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
index c21935fa86be23791d481febc7ae226ff2acf9f0..901e0c3d0150ebbe11d1433f78eafbebfcbbf3b1 100644 (file)
@@ -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...
 
index 68759232a53a6a2fa15363159fb6c39b10cdd38d..dcb07710ef40df6f444637ee9b07d27f841f1e85 100644 (file)
@@ -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") \
index 63526682fe2c1d463e127d5d9499f2c9fbfc27d7..0d6fc2fe7c3a772a028b4340fa7a2ed653f3727a 100644 (file)
@@ -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
index 3db1e912124ccfccc1a732323a8802bf20785e38..432a92734dcc12c53ff7c4941b111f77da0b4521 100644 (file)
@@ -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
index 570856321165f42c21664beae8c70cfef97de7d9..69e5d37075f15235c04c8b7f99aa39a0d4a0814b 100644 (file)
@@ -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
index ea7b23150bdbd82fd5ce565ae325a1e5a7156731..dfe4740c97932bff10542efa542f0bb523216a6b 100644 (file)
@@ -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
index b841ef5d9015a9fdf2d3e42700cb95d8b68647e4..ae0d326fed672051a3eecc57cc5c019cba0f80ad 100755 (executable)
--- 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'
index f19c603581876a97b69cdafe5ed98f986efbfcf7..209d19d19f04ce125b0211c934cbaef13d4ebc78 100644 (file)
@@ -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
index ed44fab588575b7f02899ad42a2cab6d616c3c10..7b652147971c251dceafd5b4fc8b672a3002bf87 100644 (file)
@@ -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 $".
 #
index 98188a4b5665f45a48b13c934d08e3d0d186f5d1..5c7d649a367292e52e74d5f6d953190aa75b3d27 100644 (file)
@@ -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 $".
  */
index 867517b719142f33feef665ef1bc133cabb29905..a451a2c1e0798ad827e4c9a76e9c730d553284f0 100644 (file)
@@ -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 $".
  */
index aa81063555ce67f1372e1376fde95bb0db69eef9..8579787537d68464459ee80704122d1d58d95f4c 100644 (file)
@@ -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 $".
  */
index 42c5fff93544226727c450a9697a5b4086bcf1d4..23faa555c26f97f099e373adef9e3d848fee56d0 100644 (file)
@@ -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 $".
  */
index b3ebea4d4087a2b35d87cb8643d84e754e2247f1..4afc4bba1f56900093da85f18d9f7bc6e5145233 100644 (file)
@@ -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 $".
  */
index 7c16f821b1046e87f3ef40ec2cbb05fa8b671ed6..1b7b6869763f594070e6e7bf349b646cb8e1d298 100644 (file)
@@ -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 $".
  */
index d25d5019a007e5adfe4dc3aeeb34ac36033a06a2..ea37a556dd9a75b5009063327c7c5a199c9f0002 100644 (file)
@@ -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
index cd93e87fb269e9962b42d251dca0d68a66c7524b..220c0f1cb0eddce2f0baaad444022fcb3041ecfd 100644 (file)
@@ -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;
index 4996c87c25f7b44471e4620b8ee9867fb4a7af8b..63eb9ca6d029b40911680e6aad513d65d1f78722 100644 (file)
@@ -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;
index 489c23a6f66cf511d4587c152ff693fc2818d34b..12691827fb4937c9a4e6516ff747813c709d5bd5 100644 (file)
@@ -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>
index 0354761e1f291307e0ba9495cabd994bdb56560c..309d09daae8fb0e69700bcb0e4c29c598f320382 100644 (file)
@@ -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;
index 39d183729c731ca1e8b3a9e1b7839d78bd3dbd53..1ab935b51e17087b822f70e1c60d439f276baddc 100644 (file)
@@ -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;
index 236c24923e5495b5b96f6355b76f0732d80524e0..7fc0c066c44afbfec83a3c2060cb074929ae99b7 100644 (file)
@@ -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>
index 2496acdcc414f087d00ab681edcd1df6152ad609..d95734299579f12700985f8ec94a645f01deef58 100644 (file)
@@ -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;
index 3cd6f26f43c35c06bc3fe32bfa53e8421f8577cf..01a041493cf6a33e225dd25e7b8e37dab3cac65e 100644 (file)
@@ -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;
index 5ff14c622f4d0ac5bb48d2d6a141dba74cae5399..df8f7a98c5825b42195943223057f97edec06cd8 100644 (file)
@@ -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>
index d4290b7229a14f68d507dda2d69ac84bace57f60..df321357543b487ce0e31b11c8f70e8f0cc711c4 100644 (file)
@@ -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;
index 3c8ffe8b1fe889ea11e6fb51997c809e58696d99..9acda474fd21123701dc5f0978a48978f36db4d7 100644 (file)
@@ -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;
index e17f900aa89fce6f1b4e43f86d7895193c4d1876..d6c208c0860b42d1796f5c9c5029b38b613353e0 100644 (file)
@@ -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>
index e60bc53b193b6ba395f4162732bbe69ddd152db4..4ccad790dc123f3e83df8012c52fb79624c3c7fd 100644 (file)
@@ -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>
index 40b3bf218d50962cd8eb91923d05dcee72f4657c..f68f4406ab7ab8e2a95da9739adb9e5608304cb7 100644 (file)
@@ -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>
index 76e7c0b80bb7b563bf0aa7069ba562ef575fe9ea..a453bbcaf14fe8f98a53f7a18a7c02d9d162e5ba 100644 (file)
@@ -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>
index 389c08110a56c8f4f322602abb0122e6875e437e..705e2006f9b071101e83290536e7315a0040dcb3 100644 (file)
@@ -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>
index b4f1184e04148f7fc66e2b13d7cc406075c17a82..697518ac0eda7d5f05df8d2eb6828f69f4dc3724 100644 (file)
@@ -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>
index fb8c88925f33935eb1b98ae006737a3c2c15b7fc..e0c18bd318bee306b1dd5e7d4385bde17f222956 100644 (file)
@@ -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>
index 06a48133fff7ad7c208abdce8b061774a72f35fd..faa57639dcd5c0a862cfc1edd79951d05e0fcc00 100644 (file)
@@ -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>
index 016056e2a3fc3b2a925507b2895e69106e8c32b3..bc7390c850ae1adf22bb4e9205027b7e50673a4c 100644 (file)
@@ -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>
index 739d615f006a2c7e597df220171fc7f32190e87b..fe46291cf9b5244ff519f49ca8b0e48587b376c7 100644 (file)
@@ -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>
index 622d30a7d2ea8e177b9e024a0212708ddf7a541c..cb2901e2761c57135d529d8c44740ad260b0ec29 100644 (file)
@@ -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>
index 7fe7fe99c6466c0e44eeb16e1428002169aaddba..6ab47db2fc9cf37af5aa02c218ac846561a84add 100644 (file)
@@ -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>
index ecdb2ac8fa54a02ba4701726113e670e60bd36bd..324408b074dc7bee65c63aa13028dd871a7ac98c 100644 (file)
@@ -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>
index aa1a77b7f4c66443affa13374a97c8569b562566..25506817df580144d9860a40c274289d6320bad3 100644 (file)
@@ -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>
index 8f90f447c43057876f58865bbc48051979f3e0b8..de1294217030b249649f0f7d628fd855be815ebd 100644 (file)
@@ -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>
index dbd8ab6e20651987cbaedbb97c97d12753080a1a..fe00393e01b408914b387eedc2603ee6dc100d2b 100644 (file)
@@ -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>
index 4053c6e9c000ced29f9c57a696584d4e5ccbfd27..1e32c1e641f702ddfddbde59bddd1f47bc8c66e7 100644 (file)
@@ -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>
index 74f42efcfdd1cfcd4b88b90eeb99c831e015a6d8..5a99948f1825b4174a19613da92256a31ef1895e 100644 (file)
@@ -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>
index 549426da005229777160df39aef9a52ab2c80214..28d251804d5c20358bd10ab1c461deb3a8954a94 100644 (file)
@@ -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>
index 1ed2a9595a511e17d3f6e8152db1724a652e48c0..bb4f620bcb9e41257fd7c03c344509a399e70b1b 100644 (file)
@@ -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>
index b946c987ed986aedea3a7c43b240a20f2996c486..41445fefc723efdbacebce3c50338806c3baa889 100644 (file)
@@ -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>
index 7f0dd54965d4d67ff8df082b30c36d8a369169f7..f3e3dc0434e5bb8dcd3e9eb7a27497f657d5732c 100644 (file)
@@ -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">
index 0af3e0b5317e888aa7706dabd6af604a71f8d210..73d7c2d93767b4c75731c7f0af8c45e876c3c1a0 100644 (file)
@@ -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>
index c79e47061deb9924ded877661db3c9c60e710425..e482a783d1d1293c3d5d9aefcf4385d19f43dfc0 100644 (file)
@@ -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>
index 876e1f693fca39cb09ea00c065df6a1833570fc8..bafd2bf4f42a552b3e2d1243e6ed1f53e3ae7a79 100644 (file)
@@ -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>
index 526c084e0d01c49b54fa42fb2047a1f7114001fb..8e902cd0d59e803c83a087280f3dc3e9f010c0a9 100644 (file)
@@ -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>
index 2e171296b5da1ee3e39e265c4f0f623be512b7b1..0aeed451da103343e6f76de69b48d01c9bdcabdc 100644 (file)
@@ -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>
index 8eecc512dec09b179fd09fba42a953f469f5b300..d54378ea94ca81572c10370b628199f5da9565f2 100644 (file)
@@ -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>
index b4aaaf57e85b1e8d833c1db966ddc7b4a0e6ab66..98fc7c638321731c224c494c1ae4e966ee19f01f 100644 (file)
@@ -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>
index 09b177c75a33f62fc2b80874f7afff674fc92b65..558da4e2c2e37b20b0c2ab0f910eb25ecff91305 100644 (file)
@@ -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>
index b394b0c1de653c8574da1fc7969b40a9d29e6bc3..3b7024e456a16eea2157999a7fa8971e28fd892d 100644 (file)
@@ -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>
index 966b3651ba068781c6d5ee0291f552ff7eb922fa..05b1e1497eeff418c6c885573e3a258e9fdf1a20 100644 (file)
@@ -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>
index f1e045e5ae18e641c109143aca5b8192078edc8f..4d412624e2164daeae108957fd9129ada909536a 100644 (file)
@@ -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>
index 89c8a498f9eccc4380c60affcb4831bb3e491e4e..34168d5887a7025b308d234e1ec03f0b9e1b811a 100644 (file)
@@ -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>
index 5c65778d1a1b97bc2d9236d5a8e4a43223c3bcf7..0a2cec0a7c2dfc5bbf3e93750198f431eaadd3d8 100644 (file)
@@ -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>
index 5982c2f9ab7c6487d7d3b1f6b94a278f7970424b..7e5063e531d15875efd957266b10b0c2cd440c99 100644 (file)
@@ -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>
index 01876d96490548a07377f205b15cf72a56a34811..4e4279722f6b1b5677ef53efac7cf05b8878eec6 100644 (file)
@@ -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>
index 51cdcd227c5a85e3dd3f09703292b19fb19a7907..e009f7e38b28aeb2c53b0c55d4bd6e47ea93871a 100644 (file)
@@ -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>
index 9fb849990e9e3a7f45fce1682b3584565f608b63..bb5c08ba413470a6f1956594efc5518642040fed 100644 (file)
@@ -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>
index 1a9d05ae225e644504f85a1fa6a8334c11b59643..efb0950882e8316da993c5b8e404a2d705765cf4 100644 (file)
@@ -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>
index dfbf27840cfb717083866c9b1bbec0b4d3607f2a..4696f1c46996da400cb50039494be278bb195ea6 100644 (file)
@@ -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>
index 625115a8bf8e38a77a2d74944ea59b01bf2e16d2..8dfcce07ad5a56cae208610ac419b0227abbe8da 100644 (file)
@@ -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>
index 19868e546af00ff5e2533e61ff00a516f1635856..0c7b5d03be9ed5ea0ce0f52728a9d403fb975545 100644 (file)
@@ -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>
index 2c0cd2eec8a3865aaf1a53dbd7a0b1305e31e687..1469f45e51da7857aee050e573af1fc8fab8a78f 100644 (file)
@@ -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;
index 7e24866bb4dd9bc5236ae289388572978ec07508..729e26851ee2a8f3fe827de0cbfd0a548473148b 100644 (file)
@@ -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;
index 3a6c1320fac70d2f50ec929612408b613e7fe99c..8055705f4f2cc2ddafb7a424c18694e067fb855d 100644 (file)
@@ -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;
index 4b1311a9ed60368ab6ae1dfd2077b2ef1e1a2a2a..76cbd9cab87908dd017de636b6cecd7890b281d6 100644 (file)
@@ -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>
index f25113b0c652c8b98e6cb14c03a30c46af89e03c..58c50f7cc95044fe14b1d59e410c1c927d37c020 100644 (file)
@@ -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>
 
index 33c2d5791f6a5d0353b97aec24b314f0b140aeb9..89d70603953553a6e49cfdbc0a232aa17ce9399f 100644 (file)
@@ -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>
 
index 16070da8047a1d0d492867a9a245d62eff10325a..c744b11158eafd7cad9a992b0d7ace11fa5b8671 100644 (file)
@@ -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 $".
 .\"
index 5f5501d07d44708ec599e3e8667410e0ec9fe451..97c5b720daaaea90adc544bd60bc80c7bbaa6062 100644 (file)
@@ -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 $".
 .\"
index 1cbac426bfeddef0792845b50a3b0aacd41319e8..9e4a113f3abeb4ec11c52fa95a04a76eff6fa704 100644 (file)
@@ -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 $".
 .\"
index 731ae0cb3d28a2cdc0114a86abb8b59f718b0050..0cd37a61858f8f6eeeb13024e6d47517c305f72d 100644 (file)
@@ -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 $".
 .\"
index 9c3f7ba88a39b673524f10a16fcc11cf264e601d..2b52fa64ccb789231d70df5eccc1ebb202857c4f 100644 (file)
@@ -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 $".
 .\"
index 4de799ee114c55ffa27f27b5fb72f3abcdbbe293..07dfcfbb05a070cae22510249f3b544fe9e5cdba 100644 (file)
@@ -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 $".
 .\"
index 89ddf489c2226ee9880a0df5cb22c1662f6cf0ab..1ab30258ec5b84e8aaee308235fab17c6cc9577e 100644 (file)
@@ -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 $".
 .\"
index 357be2145f8edfc683684a7453d1f94a1f6ed5f0..02a9bac7c3ccdace26dc97e46fbb7916b77b2f59 100644 (file)
@@ -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 $".
 .\"
index 8d34b866f12f7c3b9de9cc098ee71aa686c59457..70385f82797c5b742baefd1198af371f023d1927 100644 (file)
@@ -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 $".
 .\"
index 4d3a06905004cb37925a55de14a71cb024d74acc..355c3726beb5bb41cf1fdc85352fa85c88183e67 100644 (file)
@@ -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 $".
 .\"
index 38684b87dd842b8e7d054cffb4ba50dab2cb5009..47ac9e2aebad06a752c0a4406ea05f7ad7ae8c1e 100644 (file)
@@ -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 $".
 .\"
index 213fb797cabd1631f8b6e950f3ce40541de32769..51bdc30ff4ddd9e2b05963bf492ce977a7b994ee 100644 (file)
@@ -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 $".
 .\"
index 8b8e0c8952bbacb051222797a80a2747a90023a0..7dbb7065556d2524467de22e4eed200159153717 100644 (file)
@@ -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 $".
 .\"
index f410d4bdf385d6ab9713624f4f8d0f057a30faeb..5b16c8a0ac627cf604264970bb384e174e6b9200 100644 (file)
@@ -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 $".
 .\"
index 752ccbe49467e8388a1f5379ee108f5e08846d34..c81f4fd908bab8ce4a31af48ef1dcc00212df015 100644 (file)
@@ -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 $".
 .\"
index 6e3f133689b5f356a838208b5e8ecf56b6b8cd6e..321d030f27b95f2a73d8b2843a64f7b76db21ca5 100644 (file)
@@ -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 $".
 .\"
index 5b07afd0c4ce38ddda08516f65f155d905ee63be..e6d7c664809cdd8df98609885587a0a5b6900135 100644 (file)
@@ -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 $".
 .\"
index 153a48c9cd0f77386f571c5b32f796f4b6c7b5d5..cf5f550a3b79dc0d43f8a090cf9f3a3d4e0bbef0 100644 (file)
@@ -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 $".
 .\"
index 46d0b12498d15dda34b5ae5febe5c606dc2d7ed4..0d51e99bdeb1d22cb278516c5c1aa6f5ff450df4 100644 (file)
@@ -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 $".
 .\"
index c9f6c1328ce49b0d62bdf5d3bd89ac8b86703479..df0505050ce4b09a3091fe453c734ea520b35f24 100644 (file)
@@ -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 $".
 .\"
index b04d2480971d1dceb05856f5c95a7d6aac3e0d3f..6dee72cd2921175e4202e029b154a1276f27c32d 100644 (file)
@@ -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 $".
 .\"
index 6594282a37036b4f8027ff107e1110bb6a1976bf..cd4237b68b556850d43462101fde9b5a655d0a92 100644 (file)
@@ -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 $".
 .\"
index 3b1553d1a86fb82754cef9476c420a9fc6429dd6..4286b017051a6e390b997ef9d83e288eb3e5bb79 100644 (file)
@@ -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 $".
 .\"
index 850a4122716959b1d818881fce153a3ce6f0c6cd..f8dc471ba4303df7f6ba988befbd2e146046c30f 100644 (file)
@@ -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 $".
 .\"
index 9641b5ae233d5e49a8a72f7c37b5fd6568e676ea..2447410c40ccc5b316d47d561dc5c70c44522f47 100644 (file)
@@ -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 $".
 .\"
index 3c8f22d5be0055bf113a17dc9bfd9aaa586c9bdb..c9377c3397f2dc91739320c36154d380330c9b43 100644 (file)
@@ -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 $".
 .\"
index 6607924baaeff6c25209a5feae09d8ea1fcd4ec2..7f7172026547b2c3d35c8e019c5a4f9e267124eb 100644 (file)
@@ -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 $".
 .\"
index 7cd400afaa5cf294fb0cab88b84df07d69aa7453..ac24e3dbcfc9ed046fbfff991cb919d4d022af4e 100644 (file)
@@ -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 $".
 .\"
index 41071b983e1c6539d080f8b82716e088175d2dab..c989394088ade57d3b2d2b6dcec31603b0fb78fb 100644 (file)
@@ -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 $".
 .\"
index 7a8cce48301c347bfb7b0a459790853b89be6e0e..d5d82c5530e0388e1e02116aca035ae1d84b8563 100644 (file)
@@ -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 $".
 .\"
index 8d182098e9468e7ba1731a1746d9db15381dae8b..c2f3c8589bd8399b20d3ae82f3a00d7d5fbd3375 100644 (file)
@@ -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 $".
 .\"
index 7a25c8023175e1043cb00d5d27617a2a26e1e23d..d5145ce71f6f37ab8a7c87bd33803258eae71089 100644 (file)
@@ -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 $".
 .\"
index 07e397c9ffe6057f8a6cffc4c47144ad21401d27..c3dd2f30976bd2ddcffe9934b03ee8eee4260e7f 100644 (file)
@@ -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 $".
 .\"
index c7c051809cb4b5e3b01b88325e0eb9359abb2699..3284f593a3681e0a7fa505964fd0bec04d8580a7 100644 (file)
@@ -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 $".
 .\"
index 8ef9650079cb4172d303266cd0ab9f8b96c49301..20e96c416e35e594c98e8dfcf25e0fce655abd4f 100644 (file)
@@ -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 $".
 .\"
index 23d0d307ad6e225c861548330d415a8bbb2ae80c..79ec4ebebe883e023cbecccd011511f105c5799f 100644 (file)
@@ -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 $".
 .\"
index 6454804f63df008b945e3b5ffa56a85e3e083ea0..f5a9596219ccd47614aed01191ae2c98b2d6c07d 100644 (file)
@@ -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 $".
 .\"
index b6b6bdfb335e0d8159181fef13998c1ab6d5d1cb..db0447621cf7d5cfe84f587a70df8f3e160e3671 100644 (file)
@@ -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 $".
 .\"
index 38109b05374ee8c42a7e43e6a74df5a636a79961..71239adedf26e162872a54fc614148628a1e7913 100644 (file)
@@ -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 $".
 .\"
index b2786babb1f60111a7c61557d4568e7df6e27df3..6acf098bf50f315d08def0a6fbd47c7014f46771 100644 (file)
@@ -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 $".
 .\"
index 73076b0f2e6dfee86a2d117489399bb64780cbcf..9a3d14864ca689537ad2d26cc2e0a4d982a3c756 100644 (file)
@@ -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 $".
 .\"
index 3e265e8b16cfadc35d7de896b4505f15ccab239e..860c086821c576aba9cc27d85d9f6c6b6d276e37 100644 (file)
@@ -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 $".
 .\"
index 0b8ecda64b706caa91575cccda51b0a1b72a2d50..428392335f12e775fc7634f6acc86c3ab8abbfd7 100644 (file)
@@ -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}
 
 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 $".
 #
index 4f911783de532c1cae48391c4ca3ac3b40e58b7b..63320a54199561db0ee7abb91dcefda96a82511c 100644 (file)
@@ -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 $".
 #
index 5c50f9bed8967a32001950118ed1c16256454de5..8d2c79baa40f236450a2ff735c3f9569234050bc 100644 (file)
@@ -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 $".
  */
index e6b86b7b76cf8d398cdb0f96aac2a97a41fc4627..54ee4ed7ca012efa503b9738a648e64c3a2d1f80 100644 (file)
@@ -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 $".
  */
index a5a69e0823e62e09bd80f0c3abf53eee0b78b6fe..be23fa90342e381c7653bb4f13a7209eca8cbafa 100644 (file)
@@ -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 (file)
index 0000000..4957a26
--- /dev/null
@@ -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 (file)
index 0000000..79b2580
--- /dev/null
@@ -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
+}
index 03c8cfb2a4de85d777f92238072313edd852150e..2d9e7b905275a473dc27106aab7871470a7e8000 100644 (file)
@@ -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]);
 
@@ -2477,6 +2527,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);
 }
@@ -4431,6 +4791,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.
  *
@@ -4465,6 +5115,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...
       */
@@ -5546,6 +6281,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 $".
  */
index 6bf7c0a8458204e77c5296121b7ac0e7d3f4c715..1a761041ad2e4fc0f7e4f20cfa494864da5e984f 100755 (executable)
@@ -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 $"
 #
index 81cbb8a090a15236bc3216899a9bb696e00fe621..72bf9cc37096beebf43f30f8ba1bb9b430972205 100644 (file)
@@ -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 $".
  */
index e145efc30584bd53db73e3bd96ba2a960fd468f7..88273041785a857490ee4f78bfc53ff22d502dbe 100644 (file)
@@ -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 $".
  */