summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sweet <msweet@msweet-imac.local>2016-03-15 10:40:47 -0400
committerMichael Sweet <msweet@msweet-imac.local>2016-03-15 10:40:47 -0400
commit00d0ae86f675c73d62c90f459fa47ef73b557931 (patch)
tree0ee766dce45c23e739628880b074319850d42ba3
parenta215cf8413f393c6751f6341b9ce7159e5ffd315 (diff)
downloadcups-branch-2.0.tar.gz
Import CUPS v2.0.4release-2.0.4branch-2.0
-rw-r--r--CHANGES.txt16
-rw-r--r--INSTALL.txt2
-rw-r--r--README.txt2
-rw-r--r--backend/ipp.c5
-rw-r--r--cgi-bin/ipp-var.c7
-rw-r--r--config-scripts/cups-common.m42
-rw-r--r--config-scripts/cups-compiler.m413
-rwxr-xr-xconfigure267
-rw-r--r--cups/cups.h8
-rw-r--r--cups/usersys.c41
-rw-r--r--doc/help/man-cupsd.conf.html5
-rw-r--r--doc/help/spec-cmp.html2
-rw-r--r--filter/error.c21
-rw-r--r--filter/interpret.c101
-rw-r--r--filter/raster.c131
-rw-r--r--man/Makefile8
-rw-r--r--man/cupsd.conf.man.in13
-rw-r--r--packaging/cups.spec18
-rw-r--r--packaging/cups.spec.in14
-rw-r--r--scheduler/client.c11
-rw-r--r--scheduler/ipp.c6
-rw-r--r--scheduler/job.c22
-rw-r--r--vcnet/config.h10
-rw-r--r--xcode/config.h10
24 files changed, 459 insertions, 276 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 50a1227ec..f2a44dc3b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,20 @@
-CHANGES.txt - 2.0.3 - 2015-06-08
+CHANGES.txt - 2.0.4 - 2015-07-31
--------------------------------
+CHANGES IN CUPS V2.0.4
+
+ - Fixed a bug in cupsRasterWritePixels (STR #4650)
+ - Fixed redirection in the web interface (STR #4538)
+ - The IPP backend did not respond to side-channel requests (STR #4645)
+ - The scheduler did not start all pending jobs at once (STR #4646)
+ - The web search incorrectly searched time-at-xxx values (STR #4652)
+ - Fixed an RPM spec file issue (STR #4657)
+ - The scheduler incorrectly started jobs while canceling multiple jobs
+ (STR #4648)
+ - Fixed processing of server overrides without port numbers (STR #4675)
+ - Documentation changes (STR #4651, STR #4674)
+
+
CHANGES IN CUPS V2.0.3
- Security: Fixed CERT VU #810572 exploiting the dynamic linker
diff --git a/INSTALL.txt b/INSTALL.txt
index d89f1ac62..bd8c28aaf 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -1,4 +1,4 @@
-INSTALL - CUPS v2.0.3 - 2015-06-08
+INSTALL - CUPS v2.0.4 - 2015-07-31
----------------------------------
This file describes how to compile and install CUPS from source code. For more
diff --git a/README.txt b/README.txt
index fbca3b027..8e4e64197 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-README - CUPS v2.0.3 - 2015-06-08
+README - CUPS v2.0.4 - 2015-07-31
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
diff --git a/backend/ipp.c b/backend/ipp.c
index b8be47a70..50dd73ea4 100644
--- a/backend/ipp.c
+++ b/backend/ipp.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp.c 12624 2015-05-06 23:50:20Z msweet $"
+ * "$Id: ipp.c 12759 2015-06-24 20:06:30Z msweet $"
*
* IPP backend for CUPS.
*
@@ -1562,6 +1562,7 @@ main(int argc, /* I - Number of command-line args */
FD_ZERO(&input);
FD_SET(fd, &input);
FD_SET(snmp_fd, &input);
+ FD_SET(CUPS_SC_FD, &input);
while (select(fd > snmp_fd ? fd + 1 : snmp_fd + 1, &input, NULL, NULL,
NULL) <= 0 && !job_canceled);
@@ -3769,5 +3770,5 @@ update_reasons(ipp_attribute_t *attr, /* I - printer-state-reasons or NULL */
}
/*
- * End of "$Id: ipp.c 12624 2015-05-06 23:50:20Z msweet $".
+ * End of "$Id: ipp.c 12759 2015-06-24 20:06:30Z msweet $".
*/
diff --git a/cgi-bin/ipp-var.c b/cgi-bin/ipp-var.c
index d24b0704e..98300537c 100644
--- a/cgi-bin/ipp-var.c
+++ b/cgi-bin/ipp-var.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp-var.c 12701 2015-06-08 18:33:44Z msweet $"
+ * "$Id: ipp-var.c 12769 2015-06-30 16:13:48Z msweet $"
*
* CGI <-> IPP variable routines for CUPS.
*
@@ -222,6 +222,9 @@ cgiGetIPPObjects(ipp_t *response, /* I - IPP response */
break;
case IPP_TAG_INTEGER :
+ if (!strncmp(ippGetName(attr), "time-at-", 8))
+ break; /* Ignore time-at-xxx */
+
for (i = 0; !add && i < attr->num_values; i ++)
{
char buf[255]; /* Number buffer */
@@ -1547,5 +1550,5 @@ cgiText(const char *message) /* I - Message */
/*
- * End of "$Id: ipp-var.c 12701 2015-06-08 18:33:44Z msweet $".
+ * End of "$Id: ipp-var.c 12769 2015-06-30 16:13:48Z msweet $".
*/
diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4
index d2c881576..929267da6 100644
--- a/config-scripts/cups-common.m4
+++ b/config-scripts/cups-common.m4
@@ -20,7 +20,7 @@ dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number information...
-CUPS_VERSION=2.0.3
+CUPS_VERSION=2.0.4
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
diff --git a/config-scripts/cups-compiler.m4 b/config-scripts/cups-compiler.m4
index ca3bae8e0..aa18e9525 100644
--- a/config-scripts/cups-compiler.m4
+++ b/config-scripts/cups-compiler.m4
@@ -1,5 +1,5 @@
dnl
-dnl "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $"
+dnl "$Id: cups-compiler.m4 12743 2015-06-23 14:49:09Z msweet $"
dnl
dnl Compiler stuff for CUPS.
dnl
@@ -156,6 +156,15 @@ if test -n "$GCC"; then
# Add useful warning options for tracking down problems...
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
+ AC_MSG_CHECKING(whether compiler supports -Wno-unused-result)
+ OLDCFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror -Wno-unused-result"
+ AC_TRY_COMPILE(,,
+ [OPTIM="$OPTIM -Wno-unused-result"
+ AC_MSG_RESULT(yes)],
+ AC_MSG_RESULT(no))
+ CFLAGS="$OLDCFLAGS"
+
AC_MSG_CHECKING(whether compiler supports -Wsign-conversion)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wsign-conversion"
@@ -237,5 +246,5 @@ case $uname in
esac
dnl
-dnl End of "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $".
+dnl End of "$Id: cups-compiler.m4 12743 2015-06-23 14:49:09Z msweet $".
dnl
diff --git a/configure b/configure
index 9233327ab..6836c7db1 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,9 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68.
+# Generated by GNU Autoconf 2.69.
#
#
-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -134,6 +132,31 @@ 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
@@ -167,7 +190,8 @@ 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\$exitcode = x0 || exit 1
+test -x / || 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'\" &&
@@ -212,21 +236,25 @@ IFS=$as_save_IFS
if test "x$CONFIG_SHELL" != x; then :
- # 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+"$@"}
+ 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
fi
if test x$as_have_required = xno; then :
@@ -328,6 +356,14 @@ $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
@@ -449,6 +485,10 @@ 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).
@@ -483,16 +523,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 -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -504,28 +544,8 @@ else
as_mkdir_p=false
fi
-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
+as_test_x='test -x'
+as_executable_p=as_fn_executable_p
# 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'"
@@ -1358,8 +1378,6 @@ 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
@@ -1683,9 +1701,9 @@ test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
configure
-generated by GNU Autoconf 2.68
+generated by GNU Autoconf 2.69
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1836,7 +1854,7 @@ $as_echo "$ac_try_echo"; } >&5
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
- $as_test_x conftest$ac_exeext
+ test -x conftest$ac_exeext
}; then :
ac_retval=0
else
@@ -2143,7 +2161,7 @@ This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2519,7 +2537,7 @@ esac
ac_config_headers="$ac_config_headers config.h"
-CUPS_VERSION=2.0.3
+CUPS_VERSION=2.0.4
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -2568,7 +2586,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -2616,7 +2634,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -2660,7 +2678,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3104,8 +3122,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdarg.h>
#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
+struct stat;
/* 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);
@@ -3355,7 +3372,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3399,7 +3416,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3601,7 +3618,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3641,7 +3658,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3694,7 +3711,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3734,7 +3751,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3774,7 +3791,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3814,7 +3831,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3854,7 +3871,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3894,7 +3911,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3934,7 +3951,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -3974,7 +3991,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -4014,7 +4031,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -4054,7 +4071,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -4130,7 +4147,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -4173,7 +4190,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -4583,7 +4600,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"
- { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ as_fn_executable_p "$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
@@ -4649,7 +4666,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"
- { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ as_fn_executable_p "$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
@@ -6769,6 +6786,32 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# Add useful warning options for tracking down problems...
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wno-unused-result" >&5
+$as_echo_n "checking whether compiler supports -Wno-unused-result... " >&6; }
+ OLDCFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror -Wno-unused-result"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ OPTIM="$OPTIM -Wno-unused-result"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$OLDCFLAGS"
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wsign-conversion" >&5
$as_echo_n "checking whether compiler supports -Wsign-conversion... " >&6; }
OLDCFLAGS="$CFLAGS"
@@ -7581,7 +7624,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -7624,7 +7667,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -8173,7 +8216,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -8216,7 +8259,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -8271,7 +8314,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -8314,7 +8357,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -8875,6 +8918,8 @@ _ACEOF
esac
rm -rf conftest*
fi
+
+
fi
@@ -9872,7 +9917,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -9935,7 +9980,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -9998,7 +10043,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -10039,7 +10084,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -10107,7 +10152,7 @@ do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
- if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if as_fn_executable_p "$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
@@ -10576,16 +10621,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 -p'.
+ # In both cases, we have to default to `cp -pR'.
ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
elif ln conf$$.file conf$$ 2>/dev/null; then
as_ln_s=ln
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
else
- as_ln_s='cp -p'
+ as_ln_s='cp -pR'
fi
rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
rmdir conf$$.dir 2>/dev/null
@@ -10645,28 +10690,16 @@ else
as_mkdir_p=false
fi
-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
+
+# 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
# 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'"
@@ -10688,7 +10721,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# values after options handling.
ac_log="
This file was extended by $as_me, which was
-generated by GNU Autoconf 2.68. Invocation command line was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -10750,10 +10783,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.68,
+configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2010 Free Software Foundation, Inc.
+Copyright (C) 2012 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -10842,7 +10875,7 @@ fi
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
- set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
\$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
diff --git a/cups/cups.h b/cups/cups.h
index 50e27284b..969919015 100644
--- a/cups/cups.h
+++ b/cups/cups.h
@@ -1,5 +1,5 @@
/*
- * "$Id: cups.h 12704 2015-06-08 19:08:01Z msweet $"
+ * "$Id: cups.h 12761 2015-06-24 20:10:19Z msweet $"
*
* API definitions for CUPS.
*
@@ -49,10 +49,10 @@ extern "C" {
* Constants...
*/
-# define CUPS_VERSION 2.0003
+# define CUPS_VERSION 2.0004
# define CUPS_VERSION_MAJOR 2
# define CUPS_VERSION_MINOR 0
-# define CUPS_VERSION_PATCH 3
+# define CUPS_VERSION_PATCH 4
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
@@ -628,5 +628,5 @@ extern int cupsSetServerCredentials(const char *path, const char *common_name,
#endif /* !_CUPS_CUPS_H_ */
/*
- * End of "$Id: cups.h 12704 2015-06-08 19:08:01Z msweet $".
+ * End of "$Id: cups.h 12761 2015-06-24 20:10:19Z msweet $".
*/
diff --git a/cups/usersys.c b/cups/usersys.c
index cf187af41..a04217104 100644
--- a/cups/usersys.c
+++ b/cups/usersys.c
@@ -1,5 +1,5 @@
/*
- * "$Id: usersys.c 12481 2015-02-03 12:45:14Z msweet $"
+ * "$Id: usersys.c 12813 2015-07-30 15:00:40Z msweet $"
*
* User, system, and password routines for CUPS.
*
@@ -68,6 +68,7 @@ typedef struct _cups_client_conf_s /**** client.conf config data ****/
static void cups_finalize_client_conf(_cups_client_conf_t *cc);
static void cups_init_client_conf(_cups_client_conf_t *cc);
static void cups_read_client_conf(cups_file_t *fp, _cups_client_conf_t *cc);
+static void cups_set_default_ipp_port(_cups_globals_t *cg);
static void cups_set_encryption(_cups_client_conf_t *cc, const char *value);
#ifdef HAVE_GSSAPI
static void cups_set_gss_service_name(_cups_client_conf_t *cc, const char *value);
@@ -382,6 +383,9 @@ cupsSetServer(const char *server) /* I - Server name */
cg->ipp_port = atoi(port);
}
+ if (!cg->ipp_port)
+ cups_set_default_ipp_port(cg);
+
if (cg->server[0] == '/')
strlcpy(cg->servername, "localhost", sizeof(cg->servername));
else
@@ -392,6 +396,7 @@ cupsSetServer(const char *server) /* I - Server name */
cg->server[0] = '\0';
cg->servername[0] = '\0';
cg->server_version = 20;
+ cg->ipp_port = 0;
}
if (cg->http)
@@ -908,17 +913,7 @@ _cupsSetDefaults(void)
cupsSetServer(cc.server_name);
if (!cg->ipp_port)
- {
- const char *ipp_port; /* IPP_PORT environment variable */
-
- if ((ipp_port = getenv("IPP_PORT")) != NULL)
- {
- if ((cg->ipp_port = atoi(ipp_port)) <= 0)
- cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
- }
- else
- cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
- }
+ cups_set_default_ipp_port(cg);
if (!cg->user[0])
strlcpy(cg->user, cc.user, sizeof(cg->user));
@@ -1151,6 +1146,26 @@ cups_read_client_conf(
/*
+ * 'cups_set_default_ipp_port()' - Set the default IPP port value.
+ */
+
+static void
+cups_set_default_ipp_port(
+ _cups_globals_t *cg) /* I - Global data */
+{
+ const char *ipp_port; /* IPP_PORT environment variable */
+
+
+ if ((ipp_port = getenv("IPP_PORT")) != NULL)
+ {
+ if ((cg->ipp_port = atoi(ipp_port)) <= 0)
+ cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
+ }
+ else
+ cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
+}
+
+/*
* 'cups_set_encryption()' - Set the Encryption value.
*/
@@ -1264,5 +1279,5 @@ cups_set_user(
/*
- * End of "$Id: usersys.c 12481 2015-02-03 12:45:14Z msweet $".
+ * End of "$Id: usersys.c 12813 2015-07-30 15:00:40Z msweet $".
*/
diff --git a/doc/help/man-cupsd.conf.html b/doc/help/man-cupsd.conf.html
index f378bffa7..c2ef877e2 100644
--- a/doc/help/man-cupsd.conf.html
+++ b/doc/help/man-cupsd.conf.html
@@ -240,7 +240,8 @@ The following percent sequences are recognized:
"%u" inserts the username.
</pre>
-The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
+The default is the empty string, which disables page logging.
+The string "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}" creates a page log with the standard items.
<dt><a name="PassEnv"></a><b>PassEnv </b><i>variable </i>[ ... <i>variable </i>]
<dd style="margin-left: 5.0em">Passes the specified environment variable(s) to child processes.
<dt><a name="Policy"></a><b>&lt;Policy </b><i>name</i><b>> </b>... <b>&lt;/Policy></b>
@@ -588,7 +589,7 @@ Require authentication for accesses from outside the 10. network:
<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2014 by Apple Inc.
+Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
diff --git a/doc/help/spec-cmp.html b/doc/help/spec-cmp.html
index 4bbe7f0ee..e0142cfe0 100644
--- a/doc/help/spec-cmp.html
+++ b/doc/help/spec-cmp.html
@@ -14,7 +14,7 @@
<H2 CLASS="title"><A NAME="OVERVIEW">Overview</A></H2>
-<P>CUPS is developed by Apple Inc. and distributed as open source software under a combination of GNU GPL2 and GNU LGPL2 licenses with exceptions to allow linking to OpenSSL (which has a GPL-incompatible license) and for developers on Apple's operating systems to develop CUPS-based software until alternate license terms. Significant contributions to CUPS must be licensed to Apple using the <A HREF="https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf">Apple Contributor Agreement</A>.</P>
+<P>CUPS is developed by Apple Inc. and distributed as open source software under a combination of GNU GPL2 and GNU LGPL2 licenses with exceptions to allow linking to OpenSSL (which has a GPL-incompatible license) and for developers on Apple's operating systems to develop CUPS-based software under alternate license terms. Significant contributions to CUPS must be licensed to Apple using the <A HREF="https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf">Apple Contributor Agreement</A>.</P>
<P>Apple releases updates to the CUPS software approximately every three months. Each release has a version number consisting of the major version (currently 1), minor version (currently 6), and patch version (starting at 0) separated by the period, for example "1.6.0". Releases where only the patch version number changes will contain only bug fixes to the previous release, for example "1.6.1" includes bug fixes for the "1.6.0" release. New features require the major or minor version numbers to change, for example "1.6.0" release contains new features compared to the "1.5.3" release. Multiple beta and "candidate" releases generally precede each new feature release, for example "1.5b1", "1.5b2", and "1.5rc1" preceded the "1.5.0" release. Finally, we also post regular Subversion snapshot releases, for example "1.6svn-r10486", which represent a snapshot of the development for the next feature release.</P>
diff --git a/filter/error.c b/filter/error.c
index e062757a1..bb9f14f00 100644
--- a/filter/error.c
+++ b/filter/error.c
@@ -1,9 +1,9 @@
/*
- * "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $"
+ * "$Id: error.c 12748 2015-06-24 15:58:40Z msweet $"
*
* Raster error handling for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -56,6 +56,8 @@ _cupsRasterAddError(const char *f, /* I - Printf-style error message */
ssize_t bytes; /* Bytes in message string */
+ DEBUG_printf(("_cupsRasterAddError(f=\"%s\", ...)", f));
+
va_start(ap, f);
bytes = vsnprintf(s, sizeof(s), f, ap);
va_end(ap);
@@ -63,6 +65,8 @@ _cupsRasterAddError(const char *f, /* I - Printf-style error message */
if (bytes <= 0)
return;
+ DEBUG_printf(("1_cupsRasterAddError: %s", s));
+
bytes ++;
if ((size_t)bytes >= sizeof(s))
@@ -185,7 +189,7 @@ get_error_buffer(void)
* Initialize the global data exactly once...
*/
- DEBUG_puts("get_error_buffer()");
+ DEBUG_puts("3get_error_buffer()");
pthread_once(&raster_key_once, raster_init);
@@ -196,7 +200,7 @@ get_error_buffer(void)
if ((buf = (_cups_raster_error_t *)pthread_getspecific(raster_key))
== NULL)
{
- DEBUG_puts("get_error_buffer: allocating memory for thread...");
+ DEBUG_puts("4get_error_buffer: allocating memory for thread.");
/*
* No, allocate memory as set the pointer for the key...
@@ -205,7 +209,7 @@ get_error_buffer(void)
buf = calloc(1, sizeof(_cups_raster_error_t));
pthread_setspecific(raster_key, buf);
- DEBUG_printf((" buf=%p\n", buf));
+ DEBUG_printf(("4get_error_buffer: buf=%p", buf));
}
/*
@@ -225,8 +229,7 @@ raster_init(void)
{
pthread_key_create(&raster_key, raster_destructor);
- DEBUG_printf(("raster_init(): raster_key=%x(%u)\n", (unsigned)raster_key,
- (unsigned)raster_key));
+ DEBUG_printf(("3raster_init(): raster_key=%x(%u)", (unsigned)raster_key, (unsigned)raster_key));
}
@@ -241,7 +244,7 @@ raster_destructor(void *value) /* I - Data to free */
/* Error buffer */
- DEBUG_printf(("raster_destructor(value=%p)\n", value));
+ DEBUG_printf(("3raster_destructor(value=%p)", value));
if (buf->start)
free(buf->start);
@@ -272,5 +275,5 @@ get_error_buffer(void)
/*
- * End of "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $".
+ * End of "$Id: error.c 12748 2015-06-24 15:58:40Z msweet $".
*/
diff --git a/filter/interpret.c b/filter/interpret.c
index f784fa090..c8a724552 100644
--- a/filter/interpret.c
+++ b/filter/interpret.c
@@ -1,9 +1,9 @@
/*
- * "$Id: interpret.c 11848 2014-05-07 00:26:44Z msweet $"
+ * "$Id: interpret.c 12748 2015-06-24 15:58:40Z msweet $"
*
* PPD command interpreter for CUPS.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
* Copyright 1993-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -91,8 +91,8 @@ static int setpagedevice(_cups_ps_stack_t *st,
cups_page_header2_t *h,
int *preferred_bits);
#ifdef DEBUG
-static void DEBUG_object(_cups_ps_obj_t *obj);
-static void DEBUG_stack(_cups_ps_stack_t *st);
+static void DEBUG_object(const char *prefix, _cups_ps_obj_t *obj);
+static void DEBUG_stack(const char *prefix, _cups_ps_stack_t *st);
#endif /* DEBUG */
@@ -547,8 +547,8 @@ _cupsRasterExecPS(
while ((obj = scan_ps(st, &codeptr)) != NULL)
{
#ifdef DEBUG
- DEBUG_printf(("_cupsRasterExecPS: Stack (%d objects)\n", st->num_objs));
- DEBUG_object(obj);
+ DEBUG_printf(("_cupsRasterExecPS: Stack (%d objects)", st->num_objs));
+ DEBUG_object("_cupsRasterExecPS", obj);
#endif /* DEBUG */
switch (obj->type)
@@ -561,11 +561,11 @@ _cupsRasterExecPS(
pop_stack(st);
if (cleartomark_stack(st))
- _cupsRasterAddError("cleartomark: Stack underflow!\n");
+ _cupsRasterAddError("cleartomark: Stack underflow.\n");
#ifdef DEBUG
- DEBUG_puts(" dup: ");
- DEBUG_stack(st);
+ DEBUG_puts("1_cupsRasterExecPS: dup");
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
@@ -577,7 +577,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: copy");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
break;
@@ -588,7 +588,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: dup");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
@@ -600,7 +600,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: index");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
break;
@@ -611,7 +611,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: pop");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
@@ -630,7 +630,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: roll");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
}
@@ -642,7 +642,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: setpagedevice");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
@@ -653,10 +653,9 @@ _cupsRasterExecPS(
break;
case CUPS_PS_OTHER :
- _cupsRasterAddError("Unknown operator \"%s\"!\n", obj->value.other);
+ _cupsRasterAddError("Unknown operator \"%s\".\n", obj->value.other);
error = 1;
- DEBUG_printf(("_cupsRasterExecPS: Unknown operator \"%s\"!\n",
- obj->value.other));
+ DEBUG_printf(("_cupsRasterExecPS: Unknown operator \"%s\".", obj->value.other));
break;
}
@@ -675,8 +674,8 @@ _cupsRasterExecPS(
error_stack(st, "Stack not empty:");
#ifdef DEBUG
- DEBUG_puts("_cupsRasterExecPS: Stack not empty:");
- DEBUG_stack(st);
+ DEBUG_puts("_cupsRasterExecPS: Stack not empty");
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
delete_stack(st);
@@ -977,7 +976,7 @@ roll_stack(_cups_ps_stack_t *st, /* I - Stack */
int n; /* Index into array */
- DEBUG_printf((" roll_stack(st=%p, s=%d, c=%d)\n", st, s, c));
+ DEBUG_printf(("3roll_stack(st=%p, s=%d, c=%d)", st, s, c));
/*
* Range check input...
@@ -1435,7 +1434,7 @@ setpagedevice(
* Now pull /name and value pairs from the dictionary...
*/
- DEBUG_puts("setpagedevice: Dictionary:");
+ DEBUG_puts("3setpagedevice: Dictionary:");
for (obj ++; obj < end; obj ++)
{
@@ -1450,8 +1449,8 @@ setpagedevice(
obj ++;
#ifdef DEBUG
- DEBUG_printf(("setpagedevice: /%s ", name));
- DEBUG_object(obj);
+ DEBUG_printf(("4setpagedevice: /%s ", name));
+ DEBUG_object("setpagedevice", obj);
#endif /* DEBUG */
/*
@@ -1601,7 +1600,7 @@ setpagedevice(
* Ignore unknown name+value...
*/
- DEBUG_printf((" Unknown name (\"%s\") or value...\n", name));
+ DEBUG_printf(("4setpagedevice: Unknown name (\"%s\") or value...\n", name));
while (obj[1].type != CUPS_PS_NAME && obj < end)
obj ++;
@@ -1618,91 +1617,92 @@ setpagedevice(
*/
static void
-DEBUG_object(_cups_ps_obj_t *obj) /* I - Object to print */
+DEBUG_object(const char *prefix, /* I - Prefix string */
+ _cups_ps_obj_t *obj) /* I - Object to print */
{
switch (obj->type)
{
case CUPS_PS_NAME :
- DEBUG_printf(("/%s\n", obj->value.name));
+ DEBUG_printf(("4%s: /%s\n", prefix, obj->value.name));
break;
case CUPS_PS_NUMBER :
- DEBUG_printf(("%g\n", obj->value.number));
+ DEBUG_printf(("4%s: %g\n", prefix, obj->value.number));
break;
case CUPS_PS_STRING :
- DEBUG_printf(("(%s)\n", obj->value.string));
+ DEBUG_printf(("4%s: (%s)\n", prefix, obj->value.string));
break;
case CUPS_PS_BOOLEAN :
if (obj->value.boolean)
- DEBUG_puts("true");
+ DEBUG_printf(("4%s: true", prefix));
else
- DEBUG_puts("false");
+ DEBUG_printf(("4%s: false", prefix));
break;
case CUPS_PS_NULL :
- DEBUG_puts("null");
+ DEBUG_printf(("4%s: null", prefix));
break;
case CUPS_PS_START_ARRAY :
- DEBUG_puts("[");
+ DEBUG_printf(("4%s: [", prefix));
break;
case CUPS_PS_END_ARRAY :
- DEBUG_puts("]");
+ DEBUG_printf(("4%s: ]", prefix));
break;
case CUPS_PS_START_DICT :
- DEBUG_puts("<<");
+ DEBUG_printf(("4%s: <<", prefix));
break;
case CUPS_PS_END_DICT :
- DEBUG_puts(">>");
+ DEBUG_printf(("4%s: >>", prefix));
break;
case CUPS_PS_START_PROC :
- DEBUG_puts("{");
+ DEBUG_printf(("4%s: {", prefix));
break;
case CUPS_PS_END_PROC :
- DEBUG_puts("}");
+ DEBUG_printf(("4%s: }", prefix));
break;
case CUPS_PS_CLEARTOMARK :
- DEBUG_puts("--cleartomark--");
+ DEBUG_printf(("4%s: --cleartomark--", prefix));
break;
case CUPS_PS_COPY :
- DEBUG_puts("--copy--");
+ DEBUG_printf(("4%s: --copy--", prefix));
break;
case CUPS_PS_DUP :
- DEBUG_puts("--dup--");
+ DEBUG_printf(("4%s: --dup--", prefix));
break;
case CUPS_PS_INDEX :
- DEBUG_puts("--index--");
+ DEBUG_printf(("4%s: --index--", prefix));
break;
case CUPS_PS_POP :
- DEBUG_puts("--pop--");
+ DEBUG_printf(("4%s: --pop--", prefix));
break;
case CUPS_PS_ROLL :
- DEBUG_puts("--roll--");
+ DEBUG_printf(("4%s: --roll--", prefix));
break;
case CUPS_PS_SETPAGEDEVICE :
- DEBUG_puts("--setpagedevice--");
+ DEBUG_printf(("4%s: --setpagedevice--", prefix));
break;
case CUPS_PS_STOPPED :
- DEBUG_puts("--stopped--");
+ DEBUG_printf(("4%s: --stopped--", prefix));
break;
case CUPS_PS_OTHER :
- DEBUG_printf(("--%s--\n", obj->value.other));
+ DEBUG_printf(("4%s: --%s--", prefix, obj->value.other));
break;
}
}
@@ -1713,18 +1713,19 @@ DEBUG_object(_cups_ps_obj_t *obj) /* I - Object to print */
*/
static void
-DEBUG_stack(_cups_ps_stack_t *st) /* I - Stack */
+DEBUG_stack(const char *prefix, /* I - Prefix string */
+ _cups_ps_stack_t *st) /* I - Stack */
{
int c; /* Looping var */
_cups_ps_obj_t *obj; /* Current object on stack */
for (obj = st->objs, c = st->num_objs; c > 0; c --, obj ++)
- DEBUG_object(obj);
+ DEBUG_object(prefix, obj);
}
#endif /* DEBUG */
/*
- * End of "$Id: interpret.c 11848 2014-05-07 00:26:44Z msweet $".
+ * End of "$Id: interpret.c 12748 2015-06-24 15:58:40Z msweet $".
*/
diff --git a/filter/raster.c b/filter/raster.c
index 97c470b6d..820382d64 100644
--- a/filter/raster.c
+++ b/filter/raster.c
@@ -1,5 +1,5 @@
/*
- * "$Id: raster.c 12679 2015-05-28 19:09:57Z msweet $"
+ * "$Id: raster.c 12748 2015-06-24 15:58:40Z msweet $"
*
* Raster file routines for CUPS.
*
@@ -50,6 +50,9 @@ struct _cups_raster_s /**** Raster stream data ****/
*bufptr, /* Current (read) position in buffer */
*bufend; /* End of current (read) buffer */
size_t bufsize; /* Buffer size */
+#ifdef DEBUG
+ size_t iocount; /* Number of bytes read/written */
+#endif /* DEBUG */
};
@@ -193,7 +196,7 @@ cupsRasterOpenIO(
r->sync == CUPS_RASTER_REVSYNCv2)
r->swapped = 1;
- DEBUG_printf(("r->swapped=%d, r->sync=%08x\n", r->swapped, r->sync));
+ DEBUG_printf(("1cupsRasterOpenIO: r->swapped=%d, r->sync=%08x\n", r->swapped, r->sync));
}
else
{
@@ -287,6 +290,8 @@ cupsRasterReadHeader2(
* Get the raster header...
*/
+ DEBUG_printf(("cupsRasterReadHeader2(r=%p, h=%p)", r, h));
+
if (!cups_raster_read_header(r))
{
memset(h, 0, sizeof(cups_page_header2_t));
@@ -325,9 +330,16 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
unsigned count; /* Repetition count */
+ DEBUG_printf(("cupsRasterReadPixels(r=%p, p=%p, len=%u)", r, p, len));
+
if (r == NULL || r->mode != CUPS_RASTER_READ || r->remaining == 0 ||
r->header.cupsBytesPerLine == 0)
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Returning 0.");
return (0);
+ }
+
+ DEBUG_printf(("1cupsRasterReadPixels: compressed=%d, remaining=%u", r->compressed, r->remaining));
if (!r->compressed)
{
@@ -338,7 +350,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
r->remaining -= len / r->header.cupsBytesPerLine;
if (cups_raster_io(r, p, len) < (ssize_t)len)
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
+ }
/*
* Swap bytes as needed...
@@ -354,6 +369,8 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
* Return...
*/
+ DEBUG_printf(("1cupsRasterReadPixels: Returning %u", len));
+
return (len);
}
@@ -382,7 +399,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
*/
if (!cups_raster_read(r, &byte, 1))
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
+ }
r->count = (unsigned)byte + 1;
@@ -399,7 +419,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
*/
if (!cups_raster_read(r, &byte, 1))
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
+ }
if (byte & 128)
{
@@ -413,7 +436,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
count = (unsigned)bytes;
if (!cups_raster_read(r, temp, count))
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
+ }
temp += count;
bytes -= count;
@@ -434,7 +460,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
bytes -= count;
if (!cups_raster_read(r, temp, r->bpp))
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
+ }
temp += r->bpp;
count -= r->bpp;
@@ -506,6 +535,8 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
p += bytes;
}
+ DEBUG_printf(("1cupsRasterReadPixels: Returning %u", len));
+
return (len);
}
@@ -795,10 +826,15 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
* Write the byte-swapped buffer...
*/
- return ((unsigned)cups_raster_io(r, r->buffer, len));
+ bytes = cups_raster_io(r, r->buffer, len);
}
else
- return ((unsigned)cups_raster_io(r, p, len));
+ bytes = cups_raster_io(r, p, len);
+
+ if (bytes < len)
+ return (0);
+ else
+ return (len);
}
/*
@@ -822,7 +858,7 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
if (memcmp(p, r->pcurrent, (size_t)bytes))
{
- if (!cups_raster_write(r, r->pixels))
+ if (cups_raster_write(r, r->pixels) <= 0)
return (0);
r->count = 0;
@@ -851,10 +887,15 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
r->remaining --;
if (r->remaining == 0)
- return ((unsigned)cups_raster_write(r, r->pixels));
+ {
+ if (cups_raster_write(r, r->pixels) <= 0)
+ return (0);
+ else
+ return (len);
+ }
else if (r->count == 256)
{
- if (cups_raster_write(r, r->pixels) == 0)
+ if (cups_raster_write(r, r->pixels) <= 0)
return (0);
r->count = 0;
@@ -891,7 +932,10 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
r->remaining --;
if (r->remaining == 0)
- return ((unsigned)cups_raster_write(r, r->pixels));
+ {
+ if (cups_raster_write(r, r->pixels) <= 0)
+ return (0);
+ }
}
}
}
@@ -911,9 +955,13 @@ cups_raster_read_header(
size_t len; /* Length for read/swap */
+ DEBUG_printf(("3cups_raster_read_header(r=%p), r->mode=%d", r, r ? r->mode : 0));
+
if (r == NULL || r->mode != CUPS_RASTER_READ)
return (0);
+ DEBUG_printf(("4cups_raster_read_header: r->iocount=" CUPS_LLFMT, CUPS_LLCAST r->iocount));
+
/*
* Get the length of the raster header...
*/
@@ -923,6 +971,8 @@ cups_raster_read_header(
else
len = sizeof(cups_page_header2_t);
+ DEBUG_printf(("4cups_raster_read_header: len=%d", (int)len));
+
/*
* Read the header...
*/
@@ -930,7 +980,10 @@ cups_raster_read_header(
memset(&(r->header), 0, sizeof(r->header));
if (cups_raster_read(r, (unsigned char *)&(r->header), len) < (ssize_t)len)
+ {
+ DEBUG_printf(("4cups_raster_read_header: EOF, r->iocount=" CUPS_LLFMT, CUPS_LLCAST r->iocount));
return (0);
+ }
/*
* Swap bytes as needed...
@@ -942,21 +995,19 @@ cups_raster_read_header(
temp; /* Temporary copy */
- DEBUG_puts("Swapping header bytes...");
+ DEBUG_puts("4cups_raster_read_header: Swapping header bytes.");
for (len = 81, s = &(r->header.AdvanceDistance);
len > 0;
len --, s ++)
{
- DEBUG_printf(("%08x =>", *s));
-
temp = *s;
*s = ((temp & 0xff) << 24) |
((temp & 0xff00) << 8) |
((temp & 0xff0000) >> 8) |
((temp & 0xff000000) >> 24);
- DEBUG_printf((" %08x\n", *s));
+ DEBUG_printf(("4cups_raster_read_header: %08x => %08x", temp, *s));
}
}
@@ -966,6 +1017,8 @@ cups_raster_read_header(
cups_raster_update(r);
+ DEBUG_printf(("4cups_raster_read_header: cupsBitsPerPixel=%u, cupsBitsPerColor=%u, cupsBytesPerLine=%u, cupsWidth=%u, cupsHeight=%u, r->bpp=%d", r->header.cupsBitsPerPixel, r->header.cupsBitsPerColor, r->header.cupsBytesPerLine, r->header.cupsWidth, r->header.cupsHeight, r->bpp));
+
return (r->header.cupsBitsPerPixel != 0 && r->header.cupsBitsPerColor != 0 && r->header.cupsBytesPerLine != 0 && r->header.cupsHeight != 0 && (r->header.cupsBytesPerLine % r->bpp) == 0);
}
@@ -983,20 +1036,31 @@ cups_raster_io(cups_raster_t *r, /* I - Raster stream */
total; /* Total bytes read/written */
- DEBUG_printf(("4cups_raster_io(r=%p, buf=%p, bytes=" CUPS_LLFMT ")", r, buf, CUPS_LLCAST bytes));
+ DEBUG_printf(("5cups_raster_io(r=%p, buf=%p, bytes=" CUPS_LLFMT ")", r, buf, CUPS_LLCAST bytes));
for (total = 0; total < (ssize_t)bytes; total += count, buf += count)
{
count = (*r->iocb)(r->ctx, buf, bytes - (size_t)total);
- DEBUG_printf(("5cups_raster_io: count=%d, total=%d", (int)count,
- (int)total));
+ DEBUG_printf(("6cups_raster_io: count=%d, total=%d", (int)count, (int)total));
if (count == 0)
+ {
+ DEBUG_puts("6cups_raster_io: Returning 0.");
return (0);
+ }
else if (count < 0)
+ {
+ DEBUG_puts("6cups_raster_io: Returning -1 on error.");
return (-1);
+ }
+
+#ifdef DEBUG
+ r->iocount += (size_t)count;
+#endif /* DEBUG */
}
+ DEBUG_printf(("6cups_raster_io: Returning " CUPS_LLFMT ".", CUPS_LLCAST total));
+
return (total);
}
@@ -1015,7 +1079,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
total; /* Total bytes read */
- DEBUG_printf(("cups_raster_read(r=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", r, buf, CUPS_LLCAST bytes));
+ DEBUG_printf(("5cups_raster_read(r=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", r, buf, CUPS_LLCAST bytes));
if (!r->compressed)
return (cups_raster_io(r, buf, bytes));
@@ -1025,6 +1089,8 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
*/
count = (ssize_t)(2 * r->header.cupsBytesPerLine);
+ if (count < 65536)
+ count = 65536;
if ((size_t)count > r->bufsize)
{
@@ -1057,7 +1123,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
{
count = (ssize_t)bytes - total;
- DEBUG_printf(("count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p...\n", CUPS_LLCAST count, CUPS_LLCAST remaining, buf, r->bufptr, r->bufend));
+ DEBUG_printf(("6cups_raster_read: count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p", CUPS_LLCAST count, CUPS_LLCAST remaining, buf, r->bufptr, r->bufend));
if (remaining == 0)
{
@@ -1073,6 +1139,10 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
r->bufptr = r->buffer;
r->bufend = r->buffer + remaining;
+
+#ifdef DEBUG
+ r->iocount += (size_t)remaining;
+#endif /* DEBUG */
}
else
{
@@ -1085,6 +1155,10 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
if (count <= 0)
return (0);
+#ifdef DEBUG
+ r->iocount += (size_t)count;
+#endif /* DEBUG */
+
continue;
}
}
@@ -1134,6 +1208,8 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
}
}
+ DEBUG_printf(("6cups_raster_read: Returning %ld", (long)total));
+
return (total);
}
@@ -1283,15 +1359,15 @@ cups_raster_write(
count; /* Count */
- DEBUG_printf(("cups_raster_write(r=%p, pixels=%p)\n", r, pixels));
+ DEBUG_printf(("3cups_raster_write(r=%p, pixels=%p)\n", r, pixels));
/*
* Allocate a write buffer as needed...
*/
count = r->header.cupsBytesPerLine * 2;
- if (count < 3)
- count = 3;
+ if (count < 65536)
+ count = 65536;
if ((size_t)count > r->bufsize)
{
@@ -1301,7 +1377,10 @@ cups_raster_write(
wptr = malloc(count);
if (!wptr)
+ {
+ DEBUG_printf(("4cups_raster_write: Unable to allocate " CUPS_LLFMT " bytes for raster buffer: %s", CUPS_LLCAST count, strerror(errno)));
return (-1);
+ }
r->buffer = wptr;
r->bufsize = count;
@@ -1374,6 +1453,8 @@ cups_raster_write(
}
}
+ DEBUG_printf(("4cups_raster_write: Writing " CUPS_LLFMT " bytes.", CUPS_LLCAST (wptr - r->buffer)));
+
return (cups_raster_io(r, r->buffer, (size_t)(wptr - r->buffer)));
}
@@ -1398,7 +1479,12 @@ cups_read_fd(void *ctx, /* I - File descriptor as pointer */
while ((count = read(fd, buf, bytes)) < 0)
#endif /* WIN32 */
if (errno != EINTR && errno != EAGAIN)
+ {
+ DEBUG_printf(("4cups_read_fd: %s", strerror(errno)));
return (-1);
+ }
+
+ DEBUG_printf(("4cups_read_fd: Returning %d bytes.", (int)count));
return (count);
}
@@ -1450,12 +1536,15 @@ cups_write_fd(void *ctx, /* I - File descriptor pointer */
while ((count = write(fd, buf, bytes)) < 0)
#endif /* WIN32 */
if (errno != EINTR && errno != EAGAIN)
+ {
+ DEBUG_printf(("4cups_write_fd: %s", strerror(errno)));
return (-1);
+ }
return (count);
}
/*
- * End of "$Id: raster.c 12679 2015-05-28 19:09:57Z msweet $".
+ * End of "$Id: raster.c 12748 2015-06-24 15:58:40Z msweet $".
*/
diff --git a/man/Makefile b/man/Makefile
index dc1a8c0a4..15feafab2 100644
--- a/man/Makefile
+++ b/man/Makefile
@@ -1,9 +1,9 @@
#
-# "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $"
+# "$Id: Makefile 12815 2015-07-30 15:03:38Z msweet $"
#
# Man page makefile for CUPS.
#
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2015 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -43,6 +43,7 @@ MAN5 = classes.conf.$(MAN5EXT) \
cups-files.conf.$(MAN5EXT) \
cups-snmp.conf.$(MAN5EXT) \
cupsd.conf.$(MAN5EXT) \
+ cupsd-logs.$(MAN5EXT) \
ipptoolfile.$(MAN5EXT) \
mailto.conf.$(MAN5EXT) \
mime.convs.$(MAN5EXT) \
@@ -61,7 +62,6 @@ MAN8 = cupsaccept.$(MAN8EXT) \
cups-snmp.$(MAN8EXT) \
cupsd.$(MAN8EXT) \
cupsd-helper.$(MAN8EXT) \
- cupsd-logs.$(MAN8EXT) \
cupsenable.$(MAN8EXT) \
lpadmin.$(MAN8EXT) \
lpinfo.$(MAN8EXT) \
@@ -228,5 +228,5 @@ mantohtml: mantohtml.o ../cups/$(LIBCUPSSTATIC)
#
-# End of "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $".
+# End of "$Id: Makefile 12815 2015-07-30 15:03:38Z msweet $".
#
diff --git a/man/cupsd.conf.man.in b/man/cupsd.conf.man.in
index 6362644ec..97238426f 100644
--- a/man/cupsd.conf.man.in
+++ b/man/cupsd.conf.man.in
@@ -1,9 +1,9 @@
.\"
-.\" "$Id: cupsd.conf.man.in 12363 2014-12-12 19:51:33Z msweet $"
+.\" "$Id: cupsd.conf.man.in 12769 2015-06-30 16:13:48Z msweet $"
.\"
.\" cupsd.conf 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 cupsd.conf 5 "CUPS" "20 October 2014" "Apple Inc."
+.TH cupsd.conf 5 "CUPS" "30 June 2015" "Apple Inc."
.SH NAME
cupsd.conf \- server configuration file for cups
.SH DESCRIPTION
@@ -369,7 +369,8 @@ The following percent sequences are recognized:
"%u" inserts the username.
.fi
-The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
+The default is the empty string, which disables page logging.
+The string "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}" creates a page log with the standard items.
.\"#PassEnv
.TP 5
\fBPassEnv \fIvariable \fR[ ... \fIvariable \fR]
@@ -869,7 +870,7 @@ Require authentication for accesses from outside the 10. network:
.BR subscriptions.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
+Copyright \[co] 2007-2015 by Apple Inc.
.\"
-.\" End of "$Id: cupsd.conf.man.in 12363 2014-12-12 19:51:33Z msweet $".
+.\" End of "$Id: cupsd.conf.man.in 12769 2015-06-30 16:13:48Z msweet $".
.\"
diff --git a/packaging/cups.spec b/packaging/cups.spec
index 0b0293288..7ddcc5212 100644
--- a/packaging/cups.spec
+++ b/packaging/cups.spec
@@ -1,11 +1,11 @@
#
-# "$Id: cups.spec.in 12501 2015-02-09 15:23:13Z msweet $"
+# "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $"
#
# RPM "spec" file for CUPS.
#
# Original version by Jason McMullan <jmcc@ontv.com>.
#
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2015 by Apple Inc.
# Copyright 1999-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -44,12 +44,12 @@
Summary: CUPS
Name: cups
-Version: 2.0.3
+Version: 2.0.4
Release: 1
Epoch: 1
License: GPL
Group: System Environment/Daemons
-Source: http://www.cups.org/software/2.0.3/cups-2.0.3-source.tar.bz2
+Source: http://www.cups.org/software/2.0.4/cups-2.0.4-source.tar.bz2
Url: http://www.cups.org
Packager: Anonymous <anonymous@foo.com>
Vendor: Apple Inc.
@@ -268,19 +268,23 @@ rm -rf $RPM_BUILD_ROOT
#/usr/share/doc/cups/ca/*
#%dir /usr/share/doc/cups/cs
#/usr/share/doc/cups/cs/*
+%dir /usr/share/doc/cups/de
+/usr/share/doc/cups/de/*
%dir /usr/share/doc/cups/es
/usr/share/doc/cups/es/*
#%dir /usr/share/doc/cups/fr
#/usr/share/doc/cups/fr/*
%dir /usr/share/doc/cups/ja
/usr/share/doc/cups/ja/*
-#%dir /usr/share/doc/cups/ru
-#/usr/share/doc/cups/ru/*
+%dir /usr/share/doc/cups/ru
+/usr/share/doc/cups/ru/*
%dir /usr/share/locale/ca
/usr/share/locale/ca/cups_ca.po
%dir /usr/share/locale/cs
/usr/share/locale/cs/cups_cs.po
+%dir /usr/share/locale/de
+/usr/share/locale/de/cups_de.po
%dir /usr/share/locale/es
/usr/share/locale/es/cups_es.po
%dir /usr/share/locale/fr
@@ -395,5 +399,5 @@ rm -rf $RPM_BUILD_ROOT
#
-# End of "$Id: cups.spec.in 12501 2015-02-09 15:23:13Z msweet $".
+# End of "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $".
#
diff --git a/packaging/cups.spec.in b/packaging/cups.spec.in
index 6711ae00b..4e8fbfe50 100644
--- a/packaging/cups.spec.in
+++ b/packaging/cups.spec.in
@@ -1,11 +1,11 @@
#
-# "$Id: cups.spec.in 12501 2015-02-09 15:23:13Z msweet $"
+# "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $"
#
# RPM "spec" file for CUPS.
#
# Original version by Jason McMullan <jmcc@ontv.com>.
#
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2015 by Apple Inc.
# Copyright 1999-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -268,19 +268,23 @@ rm -rf $RPM_BUILD_ROOT
#/usr/share/doc/cups/ca/*
#%dir /usr/share/doc/cups/cs
#/usr/share/doc/cups/cs/*
+%dir /usr/share/doc/cups/de
+/usr/share/doc/cups/de/*
%dir /usr/share/doc/cups/es
/usr/share/doc/cups/es/*
#%dir /usr/share/doc/cups/fr
#/usr/share/doc/cups/fr/*
%dir /usr/share/doc/cups/ja
/usr/share/doc/cups/ja/*
-#%dir /usr/share/doc/cups/ru
-#/usr/share/doc/cups/ru/*
+%dir /usr/share/doc/cups/ru
+/usr/share/doc/cups/ru/*
%dir /usr/share/locale/ca
/usr/share/locale/ca/cups_ca.po
%dir /usr/share/locale/cs
/usr/share/locale/cs/cups_cs.po
+%dir /usr/share/locale/de
+/usr/share/locale/de/cups_de.po
%dir /usr/share/locale/es
/usr/share/locale/es/cups_es.po
%dir /usr/share/locale/fr
@@ -395,5 +399,5 @@ rm -rf $RPM_BUILD_ROOT
#
-# End of "$Id: cups.spec.in 12501 2015-02-09 15:23:13Z msweet $".
+# End of "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $".
#
diff --git a/scheduler/client.c b/scheduler/client.c
index 15abbe3f0..8c67272d4 100644
--- a/scheduler/client.c
+++ b/scheduler/client.c
@@ -1,5 +1,5 @@
/*
- * "$Id: client.c 12701 2015-06-08 18:33:44Z msweet $"
+ * "$Id: client.c 12754 2015-06-24 19:37:53Z msweet $"
*
* Client routines for the CUPS scheduler.
*
@@ -2159,6 +2159,9 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
http_status_t code, /* I - Error code */
int auth_type)/* I - Authentication type */
{
+ char location[HTTP_MAX_VALUE]; /* Location field */
+
+
cupsdLogClient(con, CUPSD_LOG_DEBUG2, "cupsdSendError code=%d, auth_type=%d",
code, auth_type);
@@ -2191,8 +2194,12 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
* never disable it in that case.
*/
+ strlcpy(location, httpGetField(con->http, HTTP_FIELD_LOCATION), sizeof(location));
+
httpClearFields(con->http);
+ httpSetField(con->http, HTTP_FIELD_LOCATION, location);
+
if (code >= HTTP_STATUS_BAD_REQUEST && con->type != CUPSD_AUTH_NEGOTIATE)
httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
@@ -4065,5 +4072,5 @@ write_pipe(cupsd_client_t *con) /* I - Client connection */
/*
- * End of "$Id: client.c 12701 2015-06-08 18:33:44Z msweet $".
+ * End of "$Id: client.c 12754 2015-06-24 19:37:53Z msweet $".
*/
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
index 3251fcd5d..c84e34f7e 100644
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -1,5 +1,5 @@
/*
- * "$Id: ipp.c 12701 2015-06-08 18:33:44Z msweet $"
+ * "$Id: ipp.c 12778 2015-07-07 17:28:51Z msweet $"
*
* IPP routines for the CUPS scheduler.
*
@@ -3284,6 +3284,8 @@ cancel_all_jobs(cupsd_client_t *con, /* I - Client connection */
}
con->response->request.status.status_code = IPP_OK;
+
+ cupsdCheckJobs();
}
@@ -11047,5 +11049,5 @@ validate_user(cupsd_job_t *job, /* I - Job */
/*
- * End of "$Id: ipp.c 12701 2015-06-08 18:33:44Z msweet $".
+ * End of "$Id: ipp.c 12778 2015-07-07 17:28:51Z msweet $".
*/
diff --git a/scheduler/job.c b/scheduler/job.c
index 3f0028698..8ca308c61 100644
--- a/scheduler/job.c
+++ b/scheduler/job.c
@@ -1,5 +1,5 @@
/*
- * "$Id: job.c 12701 2015-06-08 18:33:44Z msweet $"
+ * "$Id: job.c 12778 2015-07-07 17:28:51Z msweet $"
*
* Job management routines for the CUPS scheduler.
*
@@ -213,8 +213,6 @@ cupsdCancelJobs(const char *dest, /* I - Destination to cancel */
"Job canceled by user.");
}
}
-
- cupsdCheckJobs();
}
@@ -392,7 +390,9 @@ cupsdCheckJobs(void)
* Start the job...
*/
+ cupsArraySave(ActiveJobs);
start_job(job, printer);
+ cupsArrayRestore(ActiveJobs);
}
}
}
@@ -3491,13 +3491,6 @@ finalize_job(cupsd_job_t *job, /* I - Job */
job->printer->job = NULL;
job->printer = NULL;
-
- /*
- * Try printing another job...
- */
-
- if (printer_state != IPP_PRINTER_STOPPED)
- cupsdCheckJobs();
}
@@ -4804,6 +4797,8 @@ update_job(cupsd_job_t *job) /* I - Job to check */
*ptr; /* Pointer update... */
int loglevel, /* Log level for message */
event = 0; /* Events? */
+ cupsd_printer_t *printer = job->printer;
+ /* Printer */
static const char * const levels[] = /* Log levels */
{
"NONE",
@@ -5157,10 +5152,11 @@ update_job(cupsd_job_t *job) /* I - Job to check */
finalize_job(job, 1);
/*
- * Check for new jobs...
+ * Try printing another job...
*/
- cupsdCheckJobs();
+ if (printer->state != IPP_PRINTER_STOPPED)
+ cupsdCheckJobs();
}
}
@@ -5280,5 +5276,5 @@ update_job_attrs(cupsd_job_t *job, /* I - Job to update */
/*
- * End of "$Id: job.c 12701 2015-06-08 18:33:44Z msweet $".
+ * End of "$Id: job.c 12778 2015-07-07 17:28:51Z msweet $".
*/
diff --git a/vcnet/config.h b/vcnet/config.h
index b2655fb18..7a8bd0fda 100644
--- a/vcnet/config.h
+++ b/vcnet/config.h
@@ -1,9 +1,9 @@
/*
- * "$Id: config.h 12280 2014-12-02 01:49:48Z msweet $"
+ * "$Id: config.h 12762 2015-06-24 20:11:53Z msweet $"
*
* Configuration file for CUPS on Windows.
*
- * 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
@@ -96,8 +96,8 @@ typedef unsigned long useconds_t;
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.0.1"
-#define CUPS_MINIMAL "CUPS/2.0.1"
+#define CUPS_SVERSION "CUPS v2.0.4"
+#define CUPS_MINIMAL "CUPS/2.0.4"
/*
@@ -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 12280 2014-12-02 01:49:48Z msweet $".
+ * End of "$Id: config.h 12762 2015-06-24 20:11:53Z msweet $".
*/
diff --git a/xcode/config.h b/xcode/config.h
index c10087464..24f2da2fc 100644
--- a/xcode/config.h
+++ b/xcode/config.h
@@ -1,9 +1,9 @@
/*
- * "$Id: config.h 12280 2014-12-02 01:49:48Z msweet $"
+ * "$Id: config.h 12762 2015-06-24 20:11:53Z msweet $"
*
* Configuration file for CUPS and Xcode.
*
- * 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
@@ -20,8 +20,8 @@
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.0.1"
-#define CUPS_MINIMAL "CUPS/2.0.1"
+#define CUPS_SVERSION "CUPS v2.0.4"
+#define CUPS_MINIMAL "CUPS/2.0.4"
/*
@@ -713,5 +713,5 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 12280 2014-12-02 01:49:48Z msweet $".
+ * End of "$Id: config.h 12762 2015-06-24 20:11:53Z msweet $".
*/