CHANGES-2.0.txt
---------------
+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
-CHANGES.txt - 2.1b1 - 2015-06-03
---------------------------------
+CHANGES.txt - 2.1rc1 - 2015-07-31
+---------------------------------
+
+CHANGES IN CUPS V2.1rc1
+
+ - Added support for 3D printers (basic types only, no built-in filters)
+ based on PWG white paper.
+ - Fixed bugs in the new journald support (STR #4655, STR #4658,
+ STR #4661)
+ - Fixed domain socket support on Linux (STR #4679)
+ - Fixed signal handlers in the dnssd and usb backends (STR #4671)
+ - <Limit All> in <Policy> sections now applies to all operations when
+ used by itself (STR #4659)
+ - Configure script changes for systemd support (STR #4669)
+ - Updated autoconf sources to use newer form of AC_INIT (STR #4664)
+
CHANGES IN CUPS V2.1b1
-INSTALL - CUPS v2.1b1 - 2015-06-08
-----------------------------------
+INSTALL - CUPS v2.1rc1 - 2015-07-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
-README - CUPS v2.1b1 - 2015-06-08
----------------------------------
+README - CUPS v2.1rc1 - 2015-07-31
+----------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
/*
- * "$Id: dnssd.c 12659 2015-05-22 19:06:41Z msweet $"
+ * "$Id: dnssd.c 12818 2015-07-31 13:29:25Z msweet $"
*
* DNS-SD discovery backend for CUPS.
*
(void)sig;
if (job_canceled)
- exit(CUPS_BACKEND_OK);
+ _exit(CUPS_BACKEND_OK);
else
job_canceled = 1;
}
/*
- * End of "$Id: dnssd.c 12659 2015-05-22 19:06:41Z msweet $".
+ * End of "$Id: dnssd.c 12818 2015-07-31 13:29:25Z msweet $".
*/
/*
- * "$Id: ipp.c 12676 2015-05-28 01:19:14Z msweet $"
+ * "$Id: ipp.c 12757 2015-06-24 19:55:31Z msweet $"
*
* IPP backend for CUPS.
*
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);
}
/*
- * End of "$Id: ipp.c 12676 2015-05-28 01:19:14Z msweet $".
+ * End of "$Id: ipp.c 12757 2015-06-24 19:55:31Z msweet $".
*/
/*
- * "$Id: usb-darwin.c 12672 2015-05-28 00:10:27Z msweet $"
+ * "$Id: usb-darwin.c 12818 2015-07-31 13:29:25Z msweet $"
*
- * Copyright 2005-2014 Apple Inc. All rights reserved.
+ * Copyright 2005-2015 Apple Inc. All rights reserved.
*
* IMPORTANT: This Apple software is supplied to you by Apple Computer,
* Inc. ("Apple") in consideration of your agreement to the following
#define WAIT_SIDE_DELAY 3
#define DEFAULT_TIMEOUT 5000L
-#define USB_INTERFACE_KIND CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID190)
+#define USB_INTERFACE_KIND CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID245)
#define kUSBLanguageEnglish 0x409
#define PRINTER_POLLING_INTERVAL 5 /* seconds */
#define kUSBPrintingProtocolBidirectional 2
#define kUSBPrintingProtocolIPP 4
-typedef IOUSBInterfaceInterface190 **printer_interface_t;
+typedef IOUSBInterfaceInterface245 **printer_interface_t;
typedef struct iodevice_request_s /**** Device request ****/
{
ssize_t debug_bytes; /* Current bytes to read */
#endif /* DEBUG_WRITES */
+ Boolean use_generic_class_driver;
Boolean wait_eof;
int drain_output; /* Drain all pending output */
int bidi_flag; /* 0=unidirectional, 1=bidirectional */
static void parse_pserror (char *sockBuffer, int len);
#endif /* PARSE_PS_ERRORS */
-static IOUSBInterfaceInterface220 **usb_interface220_for_service(io_service_t usbClass);
+static printer_interface_t usb_printer_interface_interface(io_service_t usbClass);
static IOUSBDeviceInterface **usb_device_interface_for_device(io_service_t usbDevice);
-static CFStringRef copy_printer_interface_deviceid(IOUSBInterfaceInterface220 **printer, UInt8 alternateSetting);
-static CFStringRef copy_printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language);
+static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer, UInt8 alternateSetting);
+static CFStringRef copy_printer_interface_indexed_description(printer_interface_t printer, UInt8 index, UInt16 language);
static CFStringRef deviceIDCopyManufacturer(CFStringRef deviceID);
static CFStringRef deviceIDCopyModel(CFStringRef deviceID);
static CFStringRef deviceIDCopySerialNumber(CFStringRef deviceID);
} while (g.wait_eof || !g.read_thread_stop); /* Abort from main thread tests error here */
+ /* Workaround for usb race condition. <rdar://problem/21882551> */
+ if (!g.wait_eof && g.use_generic_class_driver)
+ {
+ const char *pdl = getenv("FINAL_CONTENT_TYPE");
+ if (pdl && strcmp(pdl, "application/vnd.cups-postscript") == 0)
+ {
+ while (readstatus == kIOReturnSuccess && ((rbytes > 0 && readbuffer[rbytes-1] != 0x4) || rbytes == 0))
+ {
+ start = mach_absolute_time();
+
+ rbytes = sizeof(readbuffer);
+ readstatus = (*g.classdriver)->ReadPipe(g.classdriver, readbuffer, &rbytes);
+ if (readstatus == kIOReturnSuccess && rbytes > 0 && readbuffer[rbytes-1] == 0x4)
+ break;
+
+ /* Make sure this loop executes no more than once every 250 miliseconds... */
+ mach_wait_until(start + delay);
+ }
+ }
+ }
+
/*
* Let the main thread know that we have completed the read thread...
*/
while (reference->keepRunning && (intf = IOIteratorNext(intfIterator)))
{
- IOUSBInterfaceInterface220 **intf220 = usb_interface220_for_service(intf);
- if (intf220 != NULL)
+ printer_interface_t printerIntf = usb_printer_interface_interface(intf);
+ if (printerIntf != NULL)
{
UInt8 intfClass = 0, intfSubclass = 0, intfProtocol = 0, intfNumber = 0;
- (*intf220)->GetInterfaceClass(intf220, &intfClass);
- (*intf220)->GetInterfaceSubClass(intf220, &intfSubclass);
- (*intf220)->GetInterfaceProtocol(intf220, &intfProtocol);
- (*intf220)->GetInterfaceNumber(intf220, &intfNumber);
+ (*printerIntf)->GetInterfaceClass(printerIntf, &intfClass);
+ (*printerIntf)->GetInterfaceSubClass(printerIntf, &intfSubclass);
+ (*printerIntf)->GetInterfaceProtocol(printerIntf, &intfProtocol);
+ (*printerIntf)->GetInterfaceNumber(printerIntf, &intfNumber);
if (IsPrintingInterface(intfClass, intfSubclass, intfProtocol))
{
- CFStringRef deviceIDString = copy_printer_interface_deviceid(intf220, 0);
+ CFStringRef deviceIDString = copy_printer_interface_deviceid(printerIntf, 0);
if (deviceIDString != NULL)
{
reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, 0);
}
IOUSBInterfaceDescriptor *intfDesc = NULL;
- while (reference->keepRunning && (intfDesc = (IOUSBInterfaceDescriptor *)(*intf220)->FindNextAssociatedDescriptor(intf220, intfDesc, kUSBInterfaceDesc)))
+ while (reference->keepRunning && (intfDesc = (IOUSBInterfaceDescriptor *)(*printerIntf)->FindNextAssociatedDescriptor(printerIntf, intfDesc, kUSBInterfaceDesc)))
{
intfClass = intfDesc->bInterfaceClass;
intfSubclass = intfDesc->bInterfaceSubClass;
if ((IsPrintingInterface(intfClass, intfSubclass, intfProtocol)))
{
- CFStringRef deviceIDString = copy_printer_interface_deviceid(intf220, intfDesc->bAlternateSetting);
+ CFStringRef deviceIDString = copy_printer_interface_deviceid(printerIntf, intfDesc->bAlternateSetting);
if (deviceIDString != NULL)
{
reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, intfDesc->bAlternateSetting);
}
}
}
- (*intf220)->Release(intf220);
+ (*printerIntf)->Release(printerIntf);
}
IOObjectRelease(intf);
}
cupsBackendReport("direct", uristr, make_modelstr, make_modelstr, idstr,
NULL);
-
+
if (make != NULL) CFRelease(make);
if (model != NULL) CFRelease(model);
if (serial != NULL) CFRelease(serial);
{
*driverBundlePath = IORegistryEntryCreateCFProperty(g.printer_obj, kUSBClassDriverProperty, NULL, kNilOptions);
+ g.use_generic_class_driver = (*driverBundlePath == NULL || (CFStringCompare(*driverBundlePath, kUSBGenericTOPrinterClassDriver, 0x0) == kCFCompareEqualTo));
kr = load_classdriver(*driverBundlePath, interface, &g.classdriver);
if (kr != kIOReturnSuccess)
return kr;
}
-static IOUSBInterfaceInterface220 **usb_interface220_for_service(io_service_t usbClass)
+static printer_interface_t usb_printer_interface_interface(io_service_t usbClass)
{
- IOUSBInterfaceInterface220 ** intf = NULL;
+ printer_interface_t intf = NULL;
IOCFPlugInInterface **plugin = NULL;
SInt32 score;
int kr = IOCreatePlugInInterfaceForService(usbClass, kIOUSBInterfaceUserClientTypeID, kIOCFPlugInInterfaceID, &plugin, &score);
if (kr == kIOReturnSuccess)
{
- (*plugin)->QueryInterface(plugin, CFUUIDGetUUIDBytes(kIOUSBInterfaceInterfaceID220), (LPVOID *)&intf);
+ (*plugin)->QueryInterface(plugin, USB_INTERFACE_KIND, (LPVOID *)&intf);
IODestroyPlugInInterface(plugin);
}
}
-static CFStringRef copy_printer_interface_deviceid(IOUSBInterfaceInterface220 **printer, UInt8 alternateSetting)
+static CFStringRef copy_printer_interface_deviceid(printer_interface_t printer, UInt8 alternateSetting)
{
// I have tried to make this function as neat as I can, but the possibility of needing to resend
// a request to get the entire string makes it hideous...
if (manufacturer != NULL)
CFRelease(manufacturer);
-
+
if (model != NULL)
CFRelease(model);
-
+
if (serial != NULL)
CFRelease(serial);
CFRelease(ret);
return NULL;
}
-
+
return ret;
}
-static CFStringRef copy_printer_interface_indexed_description(IOUSBInterfaceInterface220 ** printer, UInt8 index, UInt16 language)
+static CFStringRef copy_printer_interface_indexed_description(printer_interface_t printer, UInt8 index, UInt16 language)
{
IOReturn err;
UInt8 description[256]; // Max possible descriptor length
while (waitpid(child_pid, &status, 0) < 0 && errno == EINTR);
if (WIFEXITED(status))
- exit(WEXITSTATUS(status));
+ _exit(WEXITSTATUS(status));
else if (status == SIGTERM || status == SIGKILL)
- exit(0);
+ _exit(0);
else
{
- fprintf(stderr, "DEBUG: Child crashed on signal %d\n", status);
- exit(CUPS_BACKEND_STOP);
+ write(2, "DEBUG: Child crashed.\n", 22);
+ _exit(CUPS_BACKEND_STOP);
}
}
#endif /* __i386__ || __x86_64__ */
if (g.printer_obj != IO_OBJECT_NULL)
{
- IOUSBInterfaceInterface220 **intf220 = usb_interface220_for_service(g.printer_obj);
- if (intf220)
+ printer_interface_t printerIntf = usb_printer_interface_interface(g.printer_obj);
+ if (printerIntf)
{
- deviceIDString = copy_printer_interface_deviceid(intf220, g.alternateSetting);
- (*intf220)->Release(intf220);
+ deviceIDString = copy_printer_interface_deviceid(printerIntf, g.alternateSetting);
+ (*printerIntf)->Release(printerIntf);
}
}
/*
- * End of "$Id: usb-darwin.c 12672 2015-05-28 00:10:27Z msweet $".
+ * End of "$Id: usb-darwin.c 12818 2015-07-31 13:29:25Z msweet $".
*/
/*
- * "$Id: ipp-var.c 12700 2015-06-08 18:32:35Z msweet $"
+ * "$Id: ipp-var.c 12768 2015-06-30 16:13:38Z msweet $"
*
* CGI <-> IPP variable routines for CUPS.
*
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 */
/*
- * End of "$Id: ipp-var.c 12700 2015-06-08 18:32:35Z msweet $".
+ * End of "$Id: ipp-var.c 12768 2015-06-30 16:13:38Z msweet $".
*/
# VERSIONS OF CUPS. Instead, create a "local.types" file that
# reflects your local configuration changes.
#
-# 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
(contains(0,4096,<0a>%!) + \
!contains(0,4096,"ENTER LANGUAGE")))
+application/g-code gcode
+application/sla stl string(0,"solid ") + contains(0,4096,"facet") + contains(0,4096,"vertex")
+application/vnd.makerbot-s3g x3g
+model/amf amf
+model/vnd.collada+xml dae
+
+
########################################################################
#
# Image files...
dnl
-dnl "$Id: cups-common.m4 12697 2015-06-08 17:42:16Z msweet $"
+dnl "$Id: cups-common.m4 12785 2015-07-14 18:07:49Z msweet $"
dnl
dnl Common configuration stuff for CUPS.
dnl
-dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 2007-2015 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
-dnl We need at least autoconf 2.60...
-AC_PREREQ(2.60)
-
dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number information...
-CUPS_VERSION=2.1b1
-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'`"
-#fi
+CUPS_VERSION=2.1rc1
+
+case "$CUPS_VERSION" in
+ *svn)
+ 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'`"
+ else
+ CUPS_REVISION=""
+ fi
+ ;;
+
+ *)
+ CUPS_REVISION=""
+ ;;
+esac
+
CUPS_BUILD="cups-$CUPS_VERSION"
AC_ARG_WITH(cups_build, [ --with-cups-build set "cups-config --build" string ],
AC_SUBST(CUPS_VERSION)
AC_SUBST(CUPS_REVISION)
AC_SUBST(CUPS_BUILD)
-AC_DEFINE_UNQUOTED(CUPS_SVERSION, "CUPS v$CUPS_VERSION$CUPS_REVISION")
-AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "CUPS/$CUPS_VERSION$CUPS_REVISION")
+AC_DEFINE_UNQUOTED(CUPS_SVERSION, "AC_PACKAGE_NAME v$CUPS_VERSION$CUPS_REVISION")
+AC_DEFINE_UNQUOTED(CUPS_MINIMAL, "AC_PACKAGE_NAME/$CUPS_VERSION$CUPS_REVISION")
dnl Default compiler flags...
CFLAGS="${CFLAGS:=}"
AC_SUBST(BUILDDIRS)
dnl
-dnl End of "$Id: cups-common.m4 12697 2015-06-08 17:42:16Z msweet $".
+dnl End of "$Id: cups-common.m4 12785 2015-07-14 18:07:49Z msweet $".
dnl
dnl
-dnl "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $"
+dnl "$Id: cups-compiler.m4 12742 2015-06-23 14:48:53Z msweet $"
dnl
dnl Compiler stuff for CUPS.
dnl
# 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"
esac
dnl
-dnl End of "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $".
+dnl End of "$Id: cups-compiler.m4 12742 2015-06-23 14:48:53Z msweet $".
dnl
dnl
-dnl "$Id: cups-startup.m4 12691 2015-06-04 18:00:31Z msweet $"
+dnl "$Id: cups-startup.m4 12784 2015-07-14 17:39:26Z msweet $"
dnl
dnl Launch-on-demand/startup stuff for CUPS.
dnl
-dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 2007-2015 by Apple Inc.
dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
AC_MSG_ERROR(Need pkg-config to enable systemd support.)
fi
else
- AC_MSG_CHECKING(for libsystemd-daemon)
- if $PKGCONFIG --exists libsystemd-daemon; then
+ AC_MSG_CHECKING(for libsystemd)
+ if $PKGCONFIG --exists libsystemd; then
AC_MSG_RESULT(yes)
- ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
- ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
+ ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd`
+ ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd`
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
- AC_MSG_CHECKING(for libsystemd-journal)
- if $PKGCONFIG --exists libsystemd-journal; then
- AC_MSG_RESULT(yes)
- ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`"
- ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`"
- AC_CHECK_HEADER(systemd/sd-journal.h,AC_DEFINE(HAVE_SYSTEMD_SD_JOURNAL_H))
- else
- AC_MSG_RESULT(no)
- fi
fi
fi
dnl
-dnl End of "$Id: cups-startup.m4 12691 2015-06-04 18:00:31Z msweet $".
+dnl End of "$Id: cups-startup.m4 12784 2015-07-14 17:39:26Z msweet $".
dnl
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68.
+# Generated by GNU Autoconf 2.69 for CUPS 2.1rc1.
#
+# Report bugs to <https://www.cups.org/str.php>.
#
-# 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
# 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
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'\" &&
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 :
$as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
$as_echo "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
+ $as_echo "$0: Please tell bug-autoconf@gnu.org and
+$0: https://www.cups.org/str.php about your system,
$0: including any error possibly output before this
$0: message. Then install a modern shell, or manually run
$0: the script under such a shell if you do have one."
} # 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
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).
# ... 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
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'"
MAKEFLAGS=
# Identity of this package.
-PACKAGE_NAME=
-PACKAGE_TARNAME=
-PACKAGE_VERSION=
-PACKAGE_STRING=
-PACKAGE_BUGREPORT=
-PACKAGE_URL=
-
-ac_unique_file="cups/cups.h"
+PACKAGE_NAME='CUPS'
+PACKAGE_TARNAME='cups'
+PACKAGE_VERSION='2.1rc1'
+PACKAGE_STRING='CUPS 2.1rc1'
+PACKAGE_BUGREPORT='https://www.cups.org/str.php'
+PACKAGE_URL='https://www.cups.org/'
+
# Factoring default headers for most tests.
ac_includes_default="\
#include <stdio.h>
localstatedir='${prefix}/var'
includedir='${prefix}/include'
oldincludedir='/usr/include'
-docdir='${datarootdir}/doc/${PACKAGE}'
+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
infodir='${datarootdir}/info'
htmldir='${docdir}'
dvidir='${docdir}'
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
# 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 this package to adapt to many kinds of systems.
+\`configure' configures CUPS 2.1rc1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
- --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/cups]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
fi
if test -n "$ac_init_help"; then
-
+ case $ac_init_help in
+ short | recursive ) echo "Configuration of CUPS 2.1rc1:";;
+ esac
cat <<\_ACEOF
Optional Features:
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
-Report bugs to the package provider.
+Report bugs to <https://www.cups.org/str.php>.
+CUPS home page: <https://www.cups.org/>.
_ACEOF
ac_status=$?
fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-configure
-generated by GNU Autoconf 2.68
+CUPS configure 2.1rc1
+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
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
$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
+( $as_echo "## ------------------------------------------- ##
+## Report this to https://www.cups.org/str.php ##
+## ------------------------------------------- ##"
+ ) | sed "s/^/$as_me: WARNING: /" >&2
;;
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
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
+It was created by CUPS $as_me 2.1rc1, which was
+generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
+ac_config_headers="$ac_config_headers config.h"
-ac_config_headers="$ac_config_headers config.h"
+CUPS_VERSION=2.1rc1
+case "$CUPS_VERSION" in
+ *svn)
+ 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'`"
+ else
+ CUPS_REVISION=""
+ fi
+ ;;
+
+ *)
+ CUPS_REVISION=""
+ ;;
+esac
-CUPS_VERSION=2.1b1
-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'`"
-#fi
CUPS_BUILD="cups-$CUPS_VERSION"
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
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
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
/* 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);
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
# 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"
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
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
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
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
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
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
esac
rm -rf conftest*
fi
+
+
fi
as_fn_error $? "Need pkg-config to enable systemd support." "$LINENO" 5
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd-daemon" >&5
-$as_echo_n "checking for libsystemd-daemon... " >&6; }
- if $PKGCONFIG --exists libsystemd-daemon; then
+ { $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; }
- ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd-daemon`
- ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd-daemon`
+ ONDEMANDFLAGS=`$PKGCONFIG --cflags libsystemd`
+ ONDEMANDLIBS=`$PKGCONFIG --libs libsystemd`
$as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h
- 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
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsystemd-journal" >&5
-$as_echo_n "checking for libsystemd-journal... " >&6; }
- if $PKGCONFIG --exists libsystemd-journal; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- ONDEMANDFLAGS="$ONDEMANDFLAGS `$PKGCONFIG --cflags libsystemd-journal`"
- ONDEMANDLIBS="$ONDEMANDLIBS `$PKGCONFIG --libs libsystemd-journal`"
ac_fn_c_check_header_mongrel "$LINENO" "systemd/sd-journal.h" "ac_cv_header_systemd_sd_journal_h" "$ac_includes_default"
if test "x$ac_cv_header_systemd_sd_journal_h" = xyes; then :
$as_echo "#define HAVE_SYSTEMD_SD_JOURNAL_H 1" >>confdefs.h
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; }
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
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
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
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
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
# ... 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
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'"
# report actual input values of CONFIG_FILES etc. instead of their
# 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
+This file was extended by CUPS $as_me 2.1rc1, which was
+generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
Configuration headers:
$config_headers
-Report bugs to the package provider."
+Report bugs to <https://www.cups.org/str.php>.
+CUPS home page: <https://www.cups.org/>."
_ACEOF
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,
+CUPS config.status 2.1rc1
+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."
_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'
dnl
-dnl "$Id: configure.ac 12278 2014-12-01 13:53:56Z msweet $"
+dnl "$Id: configure.ac 12787 2015-07-14 21:19:57Z msweet $"
dnl
dnl Configuration script for CUPS.
dnl
-dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 2007-2015 by Apple Inc.
dnl Copyright 1997-2007 by Easy Software Products, all rights reserved.
dnl
dnl These coded instructions, statements, and computer programs are the
dnl file is missing or damaged, see the license at "http://www.cups.org/".
dnl
-AC_INIT(cups/cups.h)
+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/])
sinclude(config-scripts/cups-opsys.m4)
sinclude(config-scripts/cups-common.m4)
chmod +x cups-config
dnl
-dnl End of "$Id: configure.ac 12278 2014-12-01 13:53:56Z msweet $".
+dnl End of "$Id: configure.ac 12787 2015-07-14 21:19:57Z msweet $".
dnl
/*
- * "$Id: cups.h 12722 2015-06-08 22:00:19Z msweet $"
+ * "$Id: cups.h 12733 2015-06-12 01:21:05Z msweet $"
*
* API definitions for CUPS.
*
* @since CUPS 1.4/OS X 10.6@ */
CUPS_PRINTER_MFP = 0x4000000, /* Printer with scanning capabilities
* @since CUPS 1.4/OS X 10.6@ */
+ CUPS_PRINTER_3D = 0x8000000, /* 3D Printing @since CUPS 2.1@ */
CUPS_PRINTER_OPTIONS = 0x6fffc /* ~(CLASS | REMOTE | IMPLICIT |
* DEFAULT | FAX | REJECTING | DELETE |
* NOT_SHARED | AUTHENTICATED |
#endif /* !_CUPS_CUPS_H_ */
/*
- * End of "$Id: cups.h 12722 2015-06-08 22:00:19Z msweet $".
+ * End of "$Id: cups.h 12733 2015-06-12 01:21:05Z msweet $".
*/
/*
- * "$Id: dest.c 12722 2015-06-08 22:00:19Z msweet $"
+ * "$Id: dest.c 12733 2015-06-12 01:21:05Z msweet $"
*
* User-defined destination (and option) support for CUPS.
*
*/
num_dests = _cupsGetDests(CUPS_HTTP_DEFAULT, IPP_OP_CUPS_GET_PRINTERS, NULL,
- &dests, type, mask);
+ &dests, type, mask | CUPS_PRINTER_3D);
if ((user_default = _cupsUserDefault(name, sizeof(name))) != NULL)
defprinter = name;
*/
*dests = (cups_dest_t *)0;
- num_dests = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, dests, 0, 0);
+ num_dests = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, dests, 0, CUPS_PRINTER_3D);
if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
{
* Get the printer's attributes...
*/
- if (!_cupsGetDests(http, op, name, &dest, 0, 0))
+ if (!_cupsGetDests(http, op, name, &dest, 0, CUPS_PRINTER_3D))
return (NULL);
if (instance)
* Get the server destinations...
*/
- num_temps = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, &temps, 0, 0);
+ num_temps = _cupsGetDests(http, IPP_OP_CUPS_GET_PRINTERS, NULL, &temps, 0, CUPS_PRINTER_3D);
if (cupsLastError() >= IPP_STATUS_REDIRECTION_OTHER_SITE)
{
/*
- * End of "$Id: dest.c 12722 2015-06-08 22:00:19Z msweet $".
+ * End of "$Id: dest.c 12733 2015-06-12 01:21:05Z msweet $".
*/
/*
- * "$Id: http-support.c 12124 2014-08-28 15:37:22Z msweet $"
+ * "$Id: http-support.c 12752 2015-06-24 19:30:47Z msweet $"
*
* HTTP support 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
while (time(NULL) < end_time)
{
if (options & _HTTP_RESOLVE_STDERR)
- _cupsLangPrintFilter(stderr, "INFO", _("Looking for printer."));
+ _cupsLangPrintFilter(stderr, "INFO", _("Looking for printer..."));
if (cb && !(*cb)(context))
{
/*
- * End of "$Id: http-support.c 12124 2014-08-28 15:37:22Z msweet $".
+ * End of "$Id: http-support.c 12752 2015-06-24 19:30:47Z msweet $".
*/
/*
- * "$Id: language.c 12262 2014-11-19 15:18:33Z msweet $"
+ * "$Id: language.c 12790 2015-07-20 17:05:06Z msweet $"
*
* I18N/language support 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
appleMessageLoad(const char *locale) /* I - Locale ID */
{
char filename[1024], /* Path to cups.strings file */
- applelang[256]; /* Apple language ID */
+ applelang[256], /* Apple language ID */
+ baselang[3]; /* Base language */
CFURLRef url; /* URL to cups.strings file */
CFReadStreamRef stream = NULL; /* File stream */
CFPropertyListRef plist = NULL; /* Localization file */
locale = "Japanese";
else if (!strncmp(locale, "es", 2))
locale = "Spanish";
+ else if (strstr(locale, "_") != NULL || strstr(locale, "-") != NULL)
+ {
+ /*
+ * Drop country code, just try language...
+ */
+
+ strlcpy(baselang, locale, sizeof(baselang));
+ locale = baselang;
+ }
snprintf(filename, sizeof(filename),
CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings", locale);
/*
- * End of "$Id: language.c 12262 2014-11-19 15:18:33Z msweet $".
+ * End of "$Id: language.c 12790 2015-07-20 17:05:06Z msweet $".
*/
/*
- * "$Id: ppd-cache.c 12722 2015-06-08 22:00:19Z msweet $"
+ * "$Id: ppd-cache.c 12733 2015-06-12 01:21:05Z msweet $"
*
* PPD cache implementation for CUPS.
*
static int pwg_compare_finishings(_pwg_finishings_t *a,
_pwg_finishings_t *b);
static void pwg_free_finishings(_pwg_finishings_t *f);
+static void pwg_free_material(_pwg_material_t *m);
static void pwg_ppdize_name(const char *ipp, char *name, size_t namesize);
static void pwg_ppdize_resolution(ipp_attribute_t *attr, int element, int *xres, int *yres, char *name, size_t namesize);
static void pwg_unppdize_name(const char *ppd, char *name, size_t namesize,
_cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad PPD cache file."), 1);
goto create_error;
}
+ else if (!_cups_strcasecmp(line, "3D"))
+ {
+ pc->cups_3d = _cupsStrAlloc(value);
+ }
+ else if (!_cups_strcasecmp(line, "LayerOrder"))
+ {
+ pc->cups_layer_order = _cupsStrAlloc(value);
+ }
+ else if (!_cups_strcasecmp(line, "Accuracy"))
+ {
+ sscanf(value, "%d%d%d", pc->cups_accuracy + 0, pc->cups_accuracy + 1, pc->cups_accuracy + 2);
+ }
+ else if (!_cups_strcasecmp(line, "Volume"))
+ {
+ sscanf(value, "%d%d%d", pc->cups_volume + 0, pc->cups_volume + 1, pc->cups_volume + 2);
+ }
+ else if (!_cups_strcasecmp(line, "Material"))
+ {
+ /*
+ * Material key "name" name=value ... name=value
+ */
+
+ if ((valueptr = strchr(value, ' ')) != NULL)
+ {
+ _pwg_material_t *material = (_pwg_material_t *)calloc(1, sizeof(_pwg_material_t));
+
+ *valueptr++ = '\0';
+
+ material->key = _cupsStrAlloc(value);
+
+ if (*valueptr == '\"')
+ {
+ value = valueptr + 1;
+ if ((valueptr = strchr(value, '\"')) != NULL)
+ {
+ *valueptr++ = '\0';
+ material->name = _cupsStrAlloc(value);
+ material->num_props = cupsParseOptions(valueptr, 0, &material->props);
+ }
+ }
+
+ if (!pc->materials)
+ pc->materials = cupsArrayNew3(NULL, NULL, NULL, 0, NULL, (cups_afree_func_t)pwg_free_material);
+
+ cupsArrayAdd(pc->materials, material);
+ }
+ }
else if (!_cups_strcasecmp(line, "Filter"))
{
if (!pc->filters)
if ((ppd_attr = ppdFindAttr(ppd, "APPrinterIconPath", NULL)) != NULL)
cupsArrayAdd(pc->support_files, ppd_attr->value);
+ /*
+ * 3D stuff...
+ */
+
+ if ((ppd_attr = ppdFindAttr(ppd, "cups3D", NULL)) != NULL)
+ pc->cups_3d = _cupsStrAlloc(ppd_attr->value);
+
+ if ((ppd_attr = ppdFindAttr(ppd, "cupsLayerOrder", NULL)) != NULL)
+ pc->cups_layer_order = _cupsStrAlloc(ppd_attr->value);
+
+ if ((ppd_attr = ppdFindAttr(ppd, "cupsAccuracy", NULL)) != NULL)
+ sscanf(ppd_attr->value, "%d%d%d", pc->cups_accuracy + 0, pc->cups_accuracy + 1, pc->cups_accuracy + 2);
+
+ if ((ppd_attr = ppdFindAttr(ppd, "cupsVolume", NULL)) != NULL)
+ sscanf(ppd_attr->value, "%d%d%d", pc->cups_volume + 0, pc->cups_volume + 1, pc->cups_volume + 2);
+
+ for (ppd_attr = ppdFindAttr(ppd, "cupsMaterial", NULL);
+ ppd_attr;
+ ppd_attr = ppdFindNextAttr(ppd, "cupsMaterial", NULL))
+ {
+ /*
+ * *cupsMaterial key/name: "name=value ... name=value"
+ */
+
+ _pwg_material_t *material = (_pwg_material_t *)calloc(1, sizeof(_pwg_material_t));
+
+ material->key = _cupsStrAlloc(ppd_attr->name);
+ material->name = _cupsStrAlloc(ppd_attr->text);
+ material->num_props = cupsParseOptions(ppd_attr->value, 0, &material->props);
+
+ if (!pc->materials)
+ pc->materials = cupsArrayNew3(NULL, NULL, NULL, 0, NULL, (cups_afree_func_t)pwg_free_material);
+
+ cupsArrayAdd(pc->materials, material);
+ }
+
/*
* Return the cache data...
*/
cupsArrayDelete(pc->support_files);
+ _cupsStrFree(pc->cups_3d);
+ _cupsStrFree(pc->cups_layer_order);
+
+ cupsArrayDelete(pc->materials);
+
free(pc);
}
cups_option_t *option; /* Current option */
const char *value; /* Filter/pre-filter value */
char newfile[1024]; /* New filename */
+ _pwg_material_t *m; /* Material */
/*
value = (char *)cupsArrayNext(pc->support_files))
cupsFilePutConf(fp, "SupportFile", value);
+ /*
+ * 3D stuff...
+ */
+
+ if (pc->cups_3d)
+ cupsFilePutConf(fp, "3D", pc->cups_3d);
+
+ if (pc->cups_layer_order)
+ cupsFilePutConf(fp, "LayerOrder", pc->cups_layer_order);
+
+ if (pc->cups_accuracy[0] || pc->cups_accuracy[0] || pc->cups_accuracy[2])
+ cupsFilePrintf(fp, "Accuracy %d %d %d\n", pc->cups_accuracy[0], pc->cups_accuracy[1], pc->cups_accuracy[2]);
+
+ if (pc->cups_volume[0] || pc->cups_volume[0] || pc->cups_volume[2])
+ cupsFilePrintf(fp, "Volume %d %d %d\n", pc->cups_volume[0], pc->cups_volume[1], pc->cups_volume[2]);
+
+ for (m = (_pwg_material_t *)cupsArrayFirst(pc->materials);
+ m;
+ m = (_pwg_material_t *)cupsArrayNext(pc->materials))
+ {
+ cupsFilePrintf(fp, "Material %s \"%s\"", m->key, m->name);
+ for (i = 0; i < m->num_props; i ++)
+ cupsFilePrintf(fp, " %s=%s", m->props[i].name, m->props[i].value);
+ cupsFilePuts(fp, "\n");
+ }
+
/*
* IPP attributes, if any...
*/
}
+/*
+ * 'pwg_free_material()' - Free a material value.
+ */
+
+static void
+pwg_free_material(_pwg_material_t *m) /* I - Material value */
+{
+ _cupsStrFree(m->key);
+ _cupsStrFree(m->name);
+
+ cupsFreeOptions(m->num_props, m->props);
+
+ free(m);
+}
+
+
/*
* 'pwg_ppdize_name()' - Convert an IPP keyword to a PPD keyword.
*/
}
-
/*
* 'pwg_ppdize_resolution()' - Convert PWG resolution values to PPD values.
*/
/*
- * End of "$Id: ppd-cache.c 12722 2015-06-08 22:00:19Z msweet $".
+ * End of "$Id: ppd-cache.c 12733 2015-06-12 01:21:05Z msweet $".
*/
/*
- * "$Id: ppd-private.h 12722 2015-06-08 22:00:19Z msweet $"
+ * "$Id: ppd-private.h 12733 2015-06-12 01:21:05Z msweet $"
*
* Private PPD definitions for CUPS.
*
cups_option_t *options; /* Options to apply */
} _pwg_finishings_t;
+typedef struct _pwg_material_s /**** PWG material mapping data ****/
+{
+ char *key, /* material-key value */
+ *name; /* material-name value */
+ int num_props; /* Number of properties */
+ cups_option_t *props; /* Material properties */
+} _pwg_material_t;
+
struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/
{
int num_bins; /* Number of output bins */
cups_array_t *mandatory; /* cupsMandatory value */
char *charge_info_uri; /* cupsChargeInfoURI value */
cups_array_t *support_files; /* Support files - ICC profiles, etc. */
+ char *cups_3d, /* cups3D value */
+ *cups_layer_order; /* cupsLayerOrder value */
+ int cups_accuracy[3]; /* cupsAccuracy value - x, y, and z in nanometers */
+ int cups_volume[3]; /* cupsVolume value - x, y, and z in millimeters */
+ cups_array_t *materials; /* cupsMaterial values */
};
#endif /* !_CUPS_PPD_PRIVATE_H_ */
/*
- * End of "$Id: ppd-private.h 12722 2015-06-08 22:00:19Z msweet $".
+ * End of "$Id: ppd-private.h 12733 2015-06-12 01:21:05Z msweet $".
*/
/*
- * "$Id: usersys.c 12647 2015-05-20 18:37:52Z msweet $"
+ * "$Id: usersys.c 12817 2015-07-30 15:45:46Z msweet $"
*
* User, system, and password routines for CUPS.
*
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);
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
cg->server[0] = '\0';
cg->servername[0] = '\0';
cg->server_version = 20;
+ cg->ipp_port = 0;
}
if (cg->http)
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));
struct stat sockinfo; /* Domain socket information */
if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) &&
- (sockinfo.st_mode & S_IRWXO) == S_IRWXO)
+ (sockinfo.st_mode & (S_IROTH | S_IWOTH)) == (S_IROTH | S_IWOTH))
cups_set_server_name(cc, CUPS_DEFAULT_DOMAINSOCKET);
else
#endif /* CUPS_DEFAULT_DOMAINSOCKET */
}
+/*
+ * '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.
*/
/*
- * End of "$Id: usersys.c 12647 2015-05-20 18:37:52Z msweet $".
+ * End of "$Id: usersys.c 12817 2015-07-30 15:45:46Z msweet $".
*/
"%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><Policy </b><i>name</i><b>> </b>... <b></Policy></b>
<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright © 2007-2014 by Apple Inc.
+Copyright © 2007-2015 by Apple Inc.
</body>
</html>
<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 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>
/*
- * "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $"
+ * "$Id: error.c 12747 2015-06-24 15:55:05Z 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
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);
if (bytes <= 0)
return;
+ DEBUG_printf(("1_cupsRasterAddError: %s", s));
+
bytes ++;
if ((size_t)bytes >= sizeof(s))
* Initialize the global data exactly once...
*/
- DEBUG_puts("get_error_buffer()");
+ DEBUG_puts("3get_error_buffer()");
pthread_once(&raster_key_once, raster_init);
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...
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));
}
/*
{
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));
}
/* Error buffer */
- DEBUG_printf(("raster_destructor(value=%p)\n", value));
+ DEBUG_printf(("3raster_destructor(value=%p)", value));
if (buf->start)
free(buf->start);
/*
- * End of "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $".
+ * End of "$Id: error.c 12747 2015-06-24 15:55:05Z msweet $".
*/
/*
- * "$Id: interpret.c 11848 2014-05-07 00:26:44Z msweet $"
+ * "$Id: interpret.c 12746 2015-06-24 13:28:36Z 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
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 */
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)
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;
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: copy");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
break;
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: dup");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: index");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
break;
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: pop");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: roll");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
}
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: setpagedevice");
- DEBUG_stack(st);
+ DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
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;
}
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);
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...
* Now pull /name and value pairs from the dictionary...
*/
- DEBUG_puts("setpagedevice: Dictionary:");
+ DEBUG_puts("3setpagedevice: Dictionary:");
for (obj ++; obj < end; obj ++)
{
obj ++;
#ifdef DEBUG
- DEBUG_printf(("setpagedevice: /%s ", name));
- DEBUG_object(obj);
+ DEBUG_printf(("4setpagedevice: /%s ", name));
+ DEBUG_object("setpagedevice", obj);
#endif /* DEBUG */
/*
* 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 ++;
*/
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;
}
}
*/
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 12746 2015-06-24 13:28:36Z msweet $".
*/
/*
- * "$Id: raster.c 12678 2015-05-28 19:09:48Z msweet $"
+ * "$Id: raster.c 12747 2015-06-24 15:55:05Z msweet $"
*
* Raster file routines for CUPS.
*
*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 */
};
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
{
* 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));
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)
{
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...
* Return...
*/
+ DEBUG_printf(("1cupsRasterReadPixels: Returning %u", len));
+
return (len);
}
*/
if (!cups_raster_read(r, &byte, 1))
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
+ }
r->count = (unsigned)byte + 1;
*/
if (!cups_raster_read(r, &byte, 1))
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
+ }
if (byte & 128)
{
count = (unsigned)bytes;
if (!cups_raster_read(r, temp, count))
+ {
+ DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
+ }
temp += count;
bytes -= count;
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;
p += bytes;
}
+ DEBUG_printf(("1cupsRasterReadPixels: Returning %u", len));
+
return (len);
}
* 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);
}
/*
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;
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;
r->remaining --;
if (r->remaining == 0)
- return ((unsigned)cups_raster_write(r, r->pixels));
+ {
+ if (cups_raster_write(r, r->pixels) <= 0)
+ return (0);
+ }
}
}
}
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...
*/
else
len = sizeof(cups_page_header2_t);
+ DEBUG_printf(("4cups_raster_read_header: len=%d", (int)len));
+
/*
* Read the 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...
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));
}
}
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);
}
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);
}
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));
*/
count = (ssize_t)(2 * r->header.cupsBytesPerLine);
+ if (count < 65536)
+ count = 65536;
if ((size_t)count > r->bufsize)
{
{
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)
{
r->bufptr = r->buffer;
r->bufend = r->buffer + remaining;
+
+#ifdef DEBUG
+ r->iocount += (size_t)remaining;
+#endif /* DEBUG */
}
else
{
if (count <= 0)
return (0);
+#ifdef DEBUG
+ r->iocount += (size_t)count;
+#endif /* DEBUG */
+
continue;
}
}
}
}
+ DEBUG_printf(("6cups_raster_read: Returning %ld", (long)total));
+
return (total);
}
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)
{
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;
}
}
+ 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)));
}
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);
}
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 12678 2015-05-28 19:09:48Z msweet $".
+ * End of "$Id: raster.c 12747 2015-06-24 15:55:05Z msweet $".
*/
/*
- * "$Id: testraster.c 11558 2014-02-06 18:33:34Z msweet $"
+ * "$Id: testraster.c 12746 2015-06-24 13:28:36Z msweet $"
*
* Raster test program routines 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
free(data);
}
+ printf("EOF at %ld\n", (long)lseek(fd, SEEK_CUR, 0));
+
cupsRasterClose(ras);
close(fd);
/*
- * End of "$Id: testraster.c 11558 2014-02-06 18:33:34Z msweet $".
+ * End of "$Id: testraster.c 12746 2015-06-24 13:28:36Z msweet $".
*/
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "%s accepting requests since %s"
msgstr ""
-#: scheduler/ipp.c:9984
+#: scheduler/ipp.c:9986
#, c-format
msgid "%s cannot be changed."
msgstr ""
msgid "B9"
msgstr ""
-#: scheduler/ipp.c:10929
+#: scheduler/ipp.c:10931
#, c-format
msgid "Bad 'document-format' value \"%s\"."
msgstr ""
msgid "Bad device-uri scheme \"%s\"."
msgstr ""
-#: scheduler/ipp.c:8141 scheduler/ipp.c:8159 scheduler/ipp.c:9385
+#: scheduler/ipp.c:8143 scheduler/ipp.c:8161 scheduler/ipp.c:9387
#, c-format
msgid "Bad document-format \"%s\"."
msgstr ""
-#: scheduler/ipp.c:9403
+#: scheduler/ipp.c:9405
#, c-format
msgid "Bad document-format-default \"%s\"."
msgstr ""
msgid "Bad job-name value: Wrong type or count."
msgstr ""
-#: scheduler/ipp.c:9999
+#: scheduler/ipp.c:10001
msgid "Bad job-priority value."
msgstr ""
msgid "Bad job-sheets value type."
msgstr ""
-#: scheduler/ipp.c:10029
+#: scheduler/ipp.c:10031
msgid "Bad job-state value."
msgstr ""
-#: scheduler/ipp.c:2970 scheduler/ipp.c:3430 scheduler/ipp.c:5935
-#: scheduler/ipp.c:6082 scheduler/ipp.c:7570 scheduler/ipp.c:7839
-#: scheduler/ipp.c:8703 scheduler/ipp.c:8927 scheduler/ipp.c:9279
-#: scheduler/ipp.c:9892
+#: scheduler/ipp.c:2970 scheduler/ipp.c:3432 scheduler/ipp.c:5937
+#: scheduler/ipp.c:6084 scheduler/ipp.c:7572 scheduler/ipp.c:7841
+#: scheduler/ipp.c:8705 scheduler/ipp.c:8929 scheduler/ipp.c:9281
+#: scheduler/ipp.c:9894
#, c-format
msgid "Bad job-uri \"%s\"."
msgstr ""
-#: scheduler/ipp.c:2018 scheduler/ipp.c:5473
+#: scheduler/ipp.c:2018 scheduler/ipp.c:5475
#, c-format
msgid "Bad notify-pull-method \"%s\"."
msgstr ""
-#: scheduler/ipp.c:1982 scheduler/ipp.c:5437
+#: scheduler/ipp.c:1982 scheduler/ipp.c:5439
#, c-format
msgid "Bad notify-recipient-uri \"%s\"."
msgstr ""
msgid "Cancel RSS Subscription"
msgstr ""
-#: backend/ipp.c:2205
+#: backend/ipp.c:2206
msgid "Canceling print job."
msgstr ""
msgid "Change Settings"
msgstr ""
-#: scheduler/ipp.c:2030 scheduler/ipp.c:5485
+#: scheduler/ipp.c:2030 scheduler/ipp.c:5487
#, c-format
msgid "Character set \"%s\" not supported."
msgstr ""
msgid "Clean Print Heads"
msgstr ""
-#: scheduler/ipp.c:3882
+#: scheduler/ipp.c:3884
msgid "Close-Job doesn't support the job-uri attribute."
msgstr ""
msgid "Disabled"
msgstr ""
-#: scheduler/ipp.c:5984
+#: scheduler/ipp.c:5986
#, c-format
msgid "Document #%d does not exist in job #%d."
msgstr ""
msgid "English"
msgstr ""
-#: scheduler/client.c:2219
+#: scheduler/client.c:2226
msgid "Enter your username and password or the root username and password to access this page. If you are using Kerberos authentication, make sure you have a valid Kerberos ticket."
msgstr ""
msgid "Glossy Paper"
msgstr ""
-#: scheduler/ipp.c:2948 scheduler/ipp.c:3356 scheduler/ipp.c:3894
-#: scheduler/ipp.c:5913 scheduler/ipp.c:6060 scheduler/ipp.c:7547
-#: scheduler/ipp.c:8681 scheduler/ipp.c:8905 scheduler/ipp.c:9257
-#: scheduler/ipp.c:9870
+#: scheduler/ipp.c:2948 scheduler/ipp.c:3358 scheduler/ipp.c:3896
+#: scheduler/ipp.c:5915 scheduler/ipp.c:6062 scheduler/ipp.c:7549
+#: scheduler/ipp.c:8683 scheduler/ipp.c:8907 scheduler/ipp.c:9259
+#: scheduler/ipp.c:9872
msgid "Got a printer-uri attribute but no job-id."
msgstr ""
msgid "JIS B9"
msgstr ""
-#: scheduler/ipp.c:8977
+#: scheduler/ipp.c:8979
#, c-format
msgid "Job #%d cannot be restarted - no files."
msgstr ""
#: scheduler/ipp.c:2988 scheduler/ipp.c:3222 scheduler/ipp.c:3281
-#: scheduler/ipp.c:3458 scheduler/ipp.c:3904 scheduler/ipp.c:5571
-#: scheduler/ipp.c:5953 scheduler/ipp.c:6100 scheduler/ipp.c:6438
-#: scheduler/ipp.c:7394 scheduler/ipp.c:7416 scheduler/ipp.c:7588
-#: scheduler/ipp.c:7813 scheduler/ipp.c:7856 scheduler/ipp.c:8721
-#: scheduler/ipp.c:8945 scheduler/ipp.c:9297 scheduler/ipp.c:9910
+#: scheduler/ipp.c:3460 scheduler/ipp.c:3906 scheduler/ipp.c:5573
+#: scheduler/ipp.c:5955 scheduler/ipp.c:6102 scheduler/ipp.c:6440
+#: scheduler/ipp.c:7396 scheduler/ipp.c:7418 scheduler/ipp.c:7590
+#: scheduler/ipp.c:7815 scheduler/ipp.c:7858 scheduler/ipp.c:8723
+#: scheduler/ipp.c:8947 scheduler/ipp.c:9299 scheduler/ipp.c:9912
#, c-format
msgid "Job #%d does not exist."
msgstr ""
-#: scheduler/ipp.c:3490
+#: scheduler/ipp.c:3492
#, c-format
msgid "Job #%d is already aborted - can't cancel."
msgstr ""
-#: scheduler/ipp.c:3484
+#: scheduler/ipp.c:3486
#, c-format
msgid "Job #%d is already canceled - can't cancel."
msgstr ""
-#: scheduler/ipp.c:3496
+#: scheduler/ipp.c:3498
#, c-format
msgid "Job #%d is already completed - can't cancel."
msgstr ""
-#: scheduler/ipp.c:7614 scheduler/ipp.c:7898 scheduler/ipp.c:9925
+#: scheduler/ipp.c:7616 scheduler/ipp.c:7900 scheduler/ipp.c:9927
#, c-format
msgid "Job #%d is finished and cannot be altered."
msgstr ""
-#: scheduler/ipp.c:8959
+#: scheduler/ipp.c:8961
#, c-format
msgid "Job #%d is not complete."
msgstr ""
msgid "Job #%d is not held for authentication."
msgstr ""
-#: scheduler/ipp.c:8735
+#: scheduler/ipp.c:8737
#, c-format
msgid "Job #%d is not held."
msgstr ""
-#: cgi-bin/ipp-var.c:1035
+#: cgi-bin/ipp-var.c:1038
msgid "Job Completed"
msgstr ""
-#: cgi-bin/ipp-var.c:1033
+#: cgi-bin/ipp-var.c:1036
msgid "Job Created"
msgstr ""
-#: cgi-bin/ipp-var.c:1039
+#: cgi-bin/ipp-var.c:1042
msgid "Job Options Changed"
msgstr ""
-#: cgi-bin/ipp-var.c:1037
+#: cgi-bin/ipp-var.c:1040
msgid "Job Stopped"
msgstr ""
-#: scheduler/ipp.c:10007
+#: scheduler/ipp.c:10009
msgid "Job is completed and cannot be changed."
msgstr ""
msgid "Job operation failed"
msgstr ""
-#: scheduler/ipp.c:10043 scheduler/ipp.c:10060 scheduler/ipp.c:10071
+#: scheduler/ipp.c:10045 scheduler/ipp.c:10062 scheduler/ipp.c:10073
msgid "Job state cannot be changed."
msgstr ""
-#: scheduler/ipp.c:8825
+#: scheduler/ipp.c:8827
msgid "Job subscriptions cannot be renewed."
msgstr ""
msgid "Label Top"
msgstr ""
-#: scheduler/ipp.c:2039 scheduler/ipp.c:5494
+#: scheduler/ipp.c:2039 scheduler/ipp.c:5496
#, c-format
msgid "Language \"%s\" not supported."
msgstr ""
msgstr ""
#: cups/http-support.c:1725
-msgid "Looking for printer."
+msgid "Looking for printer..."
msgstr ""
#: ppdc/sample.c:260
msgid "Missing asterisk in column 1"
msgstr ""
-#: scheduler/ipp.c:5976
+#: scheduler/ipp.c:5978
msgid "Missing document-number attribute."
msgstr ""
msgid "Missing form variable"
msgstr ""
-#: scheduler/ipp.c:9351
+#: scheduler/ipp.c:9353
msgid "Missing last-document attribute in request."
msgstr ""
msgid "Missing media-size in media-col."
msgstr ""
-#: scheduler/ipp.c:6579
+#: scheduler/ipp.c:6581
msgid "Missing notify-subscription-ids attribute."
msgstr ""
msgid "Modify Printer"
msgstr ""
-#: cgi-bin/ipp-var.c:410 cgi-bin/ipp-var.c:501
+#: cgi-bin/ipp-var.c:413 cgi-bin/ipp-var.c:504
msgid "Move All Jobs"
msgstr ""
-#: cgi-bin/ipp-var.c:349 cgi-bin/ipp-var.c:408 cgi-bin/ipp-var.c:499
+#: cgi-bin/ipp-var.c:352 cgi-bin/ipp-var.c:411 cgi-bin/ipp-var.c:502
msgid "Move Job"
msgstr ""
msgid "No active connection."
msgstr ""
-#: scheduler/ipp.c:3407
+#: scheduler/ipp.c:3409
#, c-format
msgid "No active jobs on %s."
msgstr ""
msgid "No community name"
msgstr ""
-#: scheduler/ipp.c:5776
+#: scheduler/ipp.c:5778
msgid "No default printer."
msgstr ""
-#: cgi-bin/ipp-var.c:421 scheduler/ipp.c:7160
+#: cgi-bin/ipp-var.c:424 scheduler/ipp.c:7162
msgid "No destinations added."
msgstr ""
msgid "No error-status"
msgstr ""
-#: scheduler/ipp.c:8103 scheduler/ipp.c:9365
+#: scheduler/ipp.c:8105 scheduler/ipp.c:9367
msgid "No file in print request."
msgstr ""
msgid "No printer-uri found for class"
msgstr ""
-#: scheduler/ipp.c:6184
+#: scheduler/ipp.c:6186
msgid "No printer-uri in request."
msgstr ""
msgid "No request-id"
msgstr ""
-#: scheduler/ipp.c:5379
+#: scheduler/ipp.c:5381
msgid "No subscription attributes in request."
msgstr ""
-#: scheduler/ipp.c:7487
+#: scheduler/ipp.c:7489
msgid "No subscriptions found."
msgstr ""
msgid "Not Supported"
msgstr ""
-#: scheduler/ipp.c:1506 scheduler/ipp.c:10624
+#: scheduler/ipp.c:1506 scheduler/ipp.c:10626
msgid "Not allowed to print."
msgstr ""
msgid "Print Speed"
msgstr ""
-#: cgi-bin/ipp-var.c:777
+#: cgi-bin/ipp-var.c:780
msgid "Print Test Page"
msgstr ""
msgid "Print file sent."
msgstr ""
-#: backend/ipp.c:2179
+#: backend/ipp.c:2180
msgid "Print job canceled at printer."
msgstr ""
-#: backend/ipp.c:2171
+#: backend/ipp.c:2172
msgid "Print job too large."
msgstr ""
-#: backend/ipp.c:1653
+#: backend/ipp.c:1654
msgid "Print job was not accepted."
msgstr ""
-#: cgi-bin/ipp-var.c:1027
+#: cgi-bin/ipp-var.c:1030
msgid "Printer Added"
msgstr ""
msgid "Printer Default"
msgstr ""
-#: cgi-bin/ipp-var.c:1031
+#: cgi-bin/ipp-var.c:1034
msgid "Printer Deleted"
msgstr ""
-#: cgi-bin/ipp-var.c:1029
+#: cgi-bin/ipp-var.c:1032
msgid "Printer Modified"
msgstr ""
-#: cgi-bin/ipp-var.c:1025
+#: cgi-bin/ipp-var.c:1028
msgid "Printer Paused"
msgstr ""
msgid "Printer Settings"
msgstr ""
-#: backend/ipp.c:2174
+#: backend/ipp.c:2175
msgid "Printer cannot print supplied content."
msgstr ""
-#: backend/ipp.c:2177
+#: backend/ipp.c:2178
msgid "Printer cannot print with supplied options."
msgstr ""
msgid "Quarto"
msgstr ""
-#: scheduler/ipp.c:1501 scheduler/ipp.c:10619
+#: scheduler/ipp.c:1501 scheduler/ipp.c:10621
msgid "Quota limit reached."
msgstr ""
msgid "Sending data to printer."
msgstr ""
-#: cgi-bin/ipp-var.c:1041
+#: cgi-bin/ipp-var.c:1044
msgid "Server Restarted"
msgstr ""
-#: cgi-bin/ipp-var.c:1047
+#: cgi-bin/ipp-var.c:1050
msgid "Server Security Auditing"
msgstr ""
-#: cgi-bin/ipp-var.c:1043
+#: cgi-bin/ipp-var.c:1046
msgid "Server Started"
msgstr ""
-#: cgi-bin/ipp-var.c:1045
+#: cgi-bin/ipp-var.c:1048
msgid "Server Stopped"
msgstr ""
msgid "Statement"
msgstr ""
-#: scheduler/ipp.c:3553 scheduler/ipp.c:6595 scheduler/ipp.c:7300
-#: scheduler/ipp.c:8813
+#: scheduler/ipp.c:3555 scheduler/ipp.c:6597 scheduler/ipp.c:7302
+#: scheduler/ipp.c:8815
#, c-format
msgid "Subscription #%d does not exist."
msgstr ""
msgid "The \"%s\" attribute is required for print jobs."
msgstr ""
-#: scheduler/ipp.c:6255 scheduler/ipp.c:6335 scheduler/ipp.c:6348
-#: scheduler/ipp.c:6360 scheduler/ipp.c:6375
+#: scheduler/ipp.c:6257 scheduler/ipp.c:6337 scheduler/ipp.c:6350
+#: scheduler/ipp.c:6362 scheduler/ipp.c:6377
#, c-format
msgid "The %s attribute cannot be provided with job-ids."
msgstr ""
msgid "The '%s' Job Status attribute cannot be supplied in a job creation request."
msgstr ""
-#: scheduler/ipp.c:5188
+#: scheduler/ipp.c:5190
#, c-format
msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
msgstr ""
-#: scheduler/ipp.c:6825
+#: scheduler/ipp.c:6827
#, c-format
msgid "The PPD file \"%s\" could not be found."
msgstr ""
-#: scheduler/ipp.c:6812
+#: scheduler/ipp.c:6814
#, c-format
msgid "The PPD file \"%s\" could not be opened: %s"
msgstr ""
msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
msgstr ""
-#: scheduler/ipp.c:2049 scheduler/ipp.c:5504
+#: scheduler/ipp.c:2049 scheduler/ipp.c:5506
#, c-format
msgid "The notify-user-data value is too large (%d > 63 octets)."
msgstr ""
msgstr ""
#: backend/ipp.c:829 backend/ipp.c:948 backend/ipp.c:1062 backend/ipp.c:1459
-#: backend/ipp.c:1625 backend/lpd.c:836 backend/socket.c:379
+#: backend/ipp.c:1626 backend/lpd.c:836 backend/socket.c:379
#: backend/usb-unix.c:124 backend/usb-unix.c:414 backend/usb-unix.c:497
msgid "The printer is in use."
msgstr ""
msgstr ""
#: scheduler/ipp.c:787 scheduler/ipp.c:1055 scheduler/ipp.c:3194
-#: scheduler/ipp.c:3373 scheduler/ipp.c:5171 scheduler/ipp.c:5338
-#: scheduler/ipp.c:5652 scheduler/ipp.c:6221 scheduler/ipp.c:7030
-#: scheduler/ipp.c:7086 scheduler/ipp.c:7406 scheduler/ipp.c:7672
-#: scheduler/ipp.c:7761 scheduler/ipp.c:7794 scheduler/ipp.c:8118
-#: scheduler/ipp.c:8525 scheduler/ipp.c:8607 scheduler/ipp.c:9779
-#: scheduler/ipp.c:10231 scheduler/ipp.c:10582 scheduler/ipp.c:10664
-#: scheduler/ipp.c:11039
+#: scheduler/ipp.c:3375 scheduler/ipp.c:5173 scheduler/ipp.c:5340
+#: scheduler/ipp.c:5654 scheduler/ipp.c:6223 scheduler/ipp.c:7032
+#: scheduler/ipp.c:7088 scheduler/ipp.c:7408 scheduler/ipp.c:7674
+#: scheduler/ipp.c:7763 scheduler/ipp.c:7796 scheduler/ipp.c:8120
+#: scheduler/ipp.c:8527 scheduler/ipp.c:8609 scheduler/ipp.c:9781
+#: scheduler/ipp.c:10233 scheduler/ipp.c:10584 scheduler/ipp.c:10666
+#: scheduler/ipp.c:11041
msgid "The printer or class does not exist."
msgstr ""
msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
msgstr ""
-#: scheduler/client.c:2242
+#: scheduler/client.c:2249
msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
msgstr ""
-#: scheduler/ipp.c:6319
+#: scheduler/ipp.c:6321
#, c-format
msgid "The which-jobs value \"%s\" is not supported."
msgstr ""
-#: scheduler/ipp.c:5582
+#: scheduler/ipp.c:5584
msgid "There are too many subscriptions."
msgstr ""
msgid "Unable to add class"
msgstr ""
-#: backend/ipp.c:1807
+#: backend/ipp.c:1808
msgid "Unable to add document to print job."
msgstr ""
msgid "Unable to cancel RSS subscription"
msgstr ""
-#: backend/ipp.c:2084 backend/ipp.c:2532
+#: backend/ipp.c:2085 backend/ipp.c:2533
msgid "Unable to cancel print job."
msgstr ""
msgid "Unable to establish a secure connection to host."
msgstr ""
-#: cgi-bin/ipp-var.c:350
+#: cgi-bin/ipp-var.c:353
msgid "Unable to find destination for job"
msgstr ""
msgid "Unable to find server credentials."
msgstr ""
-#: backend/ipp.c:3220
+#: backend/ipp.c:3221
msgid "Unable to get backend exit status."
msgstr ""
msgid "Unable to modify printer"
msgstr ""
-#: cgi-bin/ipp-var.c:417 cgi-bin/ipp-var.c:506
+#: cgi-bin/ipp-var.c:420 cgi-bin/ipp-var.c:509
msgid "Unable to move job"
msgstr ""
-#: cgi-bin/ipp-var.c:419 cgi-bin/ipp-var.c:508
+#: cgi-bin/ipp-var.c:422 cgi-bin/ipp-var.c:511
msgid "Unable to move jobs"
msgstr ""
msgid "Unable to open device file"
msgstr ""
-#: scheduler/ipp.c:5997
+#: scheduler/ipp.c:5999
#, c-format
msgid "Unable to open document #%d in job #%d."
msgstr ""
msgid "Unable to open help file."
msgstr ""
-#: backend/ipp.c:382 backend/ipp.c:1554 backend/ipp.c:1762 backend/lpd.c:496
+#: backend/ipp.c:382 backend/ipp.c:1554 backend/ipp.c:1763 backend/lpd.c:496
#: backend/socket.c:150 backend/usb.c:237 filter/gziptoany.c:73
#: filter/pstops.c:270
msgid "Unable to open print file"
msgid "Unable to open raster file"
msgstr ""
-#: cgi-bin/ipp-var.c:780
+#: cgi-bin/ipp-var.c:783
msgid "Unable to print test page"
msgstr ""
msgid "Unable to read print data."
msgstr ""
-#: scheduler/ipp.c:8277 scheduler/ipp.c:9518
+#: scheduler/ipp.c:8279 scheduler/ipp.c:9520
msgid "Unable to rename job document file."
msgstr ""
msgid "Unable to see in file"
msgstr ""
-#: cgi-bin/ipp-var.c:583 cgi-bin/ipp-var.c:603
+#: cgi-bin/ipp-var.c:586 cgi-bin/ipp-var.c:606
msgid "Unable to send command to printer driver"
msgstr ""
msgid "Unable to set server default"
msgstr ""
-#: backend/ipp.c:3079 backend/ipp.c:3156 backend/ipp.c:3164
+#: backend/ipp.c:3080 backend/ipp.c:3157 backend/ipp.c:3165
msgid "Unable to start backend process."
msgstr ""
msgid "Unknown print mode: \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10453
+#: scheduler/ipp.c:10455
#, c-format
msgid "Unknown printer-error-policy \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10436
+#: scheduler/ipp.c:10438
#, c-format
msgid "Unknown printer-op-policy \"%s\"."
msgstr ""
msgid "Unknown version option value: \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10910
+#: scheduler/ipp.c:10912
#, c-format
msgid "Unsupported 'compression' value \"%s\"."
msgstr ""
-#: scheduler/ipp.c:10940
+#: scheduler/ipp.c:10942
#, c-format
msgid "Unsupported 'document-format' value \"%s\"."
msgstr ""
-#: scheduler/ipp.c:11015
+#: scheduler/ipp.c:11017
msgid "Unsupported 'job-name' value."
msgstr ""
msgid "Unsupported character set \"%s\"."
msgstr ""
-#: scheduler/ipp.c:8084 scheduler/ipp.c:9330
+#: scheduler/ipp.c:8086 scheduler/ipp.c:9332
#, c-format
msgid "Unsupported compression \"%s\"."
msgstr ""
-#: scheduler/ipp.c:8220 scheduler/ipp.c:9483
+#: scheduler/ipp.c:8222 scheduler/ipp.c:9485
#, c-format
msgid "Unsupported document-format \"%s\"."
msgstr ""
-#: scheduler/ipp.c:9466
+#: scheduler/ipp.c:9468
#, c-format
msgid "Unsupported document-format \"%s/%s\"."
msgstr ""
msgid "Version uses indefinite length"
msgstr ""
-#: backend/ipp.c:1924
+#: backend/ipp.c:1925
msgid "Waiting for job to complete."
msgstr ""
msgid "Yes"
msgstr ""
-#: scheduler/client.c:2229
+#: scheduler/client.c:2236
#, c-format
msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
msgstr ""
msgid "completed"
msgstr ""
-#: scheduler/ipp.c:5869
+#: scheduler/ipp.c:5871
msgid "cups-deviced failed to execute."
msgstr ""
-#: scheduler/ipp.c:6748 scheduler/ipp.c:6997
+#: scheduler/ipp.c:6750 scheduler/ipp.c:6999
msgid "cups-driverd failed to execute."
msgstr ""
msgid "ipptool: Unknown option \"-%c\"."
msgstr ""
-#: scheduler/ipp.c:7750
+#: scheduler/ipp.c:7752
msgid "job-printer-uri attribute missing."
msgstr ""
msgid "no system default destination"
msgstr ""
-#: scheduler/ipp.c:5553
+#: scheduler/ipp.c:5555
msgid "notify-events not specified."
msgstr ""
-#: scheduler/ipp.c:2003 scheduler/ipp.c:5458
+#: scheduler/ipp.c:2003 scheduler/ipp.c:5460
#, c-format
msgid "notify-recipient-uri URI \"%s\" is already used."
msgstr ""
-#: scheduler/ipp.c:1993 scheduler/ipp.c:5448
+#: scheduler/ipp.c:1993 scheduler/ipp.c:5450
#, c-format
msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
msgstr ""
" cupsaddsmb [options] -a" = " cupsaddsmb [options] -a";
" cupstestdsc [options] -" = " cupstestdsc [options] -";
" program | cupstestppd [options] -" = " program | cupstestppd [options] -";
-" %s \"%s %s\" conflicts with \"%s %s\"\n (constraint=\"%s %s %s %s\")." = " %s \"%s %s\" conflicts with \"%s %s\"\n (constraint=\"%s %s %s %s\").";
+" %s \"%s %s\" conflicts with \"%s %s\"\n (constraint=\"%s %s %s %s\")." = " %s “%s %s” conflicts with “%s %s”\n (constraint=“%s %s %s %s”).";
" %s %s %s does not exist." = " %s %s %s does not exist.";
-" %s %s file \"%s\" has the wrong capitalization." = " %s %s file \"%s\" has the wrong capitalization.";
+" %s %s file \"%s\" has the wrong capitalization." = " %s %s file “%s” has the wrong capitalization.";
" %s Bad %s choice %s.\n REF: Page 122, section 5.17" = " %s Bad %s choice %s.\n REF: Page 122, section 5.17";
-" %s Bad UTF-8 \"%s\" translation string for option %s, choice %s." = " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s.";
-" %s Bad UTF-8 \"%s\" translation string for option %s." = " %s Bad UTF-8 \"%s\" translation string for option %s.";
-" %s Bad cupsFilter value \"%s\"." = " %s Bad cupsFilter value \"%s\".";
-" %s Bad cupsFilter2 value \"%s\"." = " %s Bad cupsFilter2 value \"%s\".";
+" %s Bad UTF-8 \"%s\" translation string for option %s, choice %s." = " %s Bad UTF-8 “%s” translation string for option %s, choice %s.";
+" %s Bad UTF-8 \"%s\" translation string for option %s." = " %s Bad UTF-8 “%s” translation string for option %s.";
+" %s Bad cupsFilter value \"%s\"." = " %s Bad cupsFilter value “%s”.";
+" %s Bad cupsFilter2 value \"%s\"." = " %s Bad cupsFilter2 value “%s”.";
" %s Bad cupsICCProfile %s." = " %s Bad cupsICCProfile %s.";
-" %s Bad cupsPreFilter value \"%s\"." = " %s Bad cupsPreFilter value \"%s\".";
-" %s Bad cupsUIConstraints %s: \"%s\"" = " %s Bad cupsUIConstraints %s: \"%s\"";
-" %s Bad language \"%s\"." = " %s Bad language \"%s\".";
-" %s Bad permissions on %s file \"%s\"." = " %s Bad permissions on %s file \"%s\".";
+" %s Bad cupsPreFilter value \"%s\"." = " %s Bad cupsPreFilter value “%s”.";
+" %s Bad cupsUIConstraints %s: \"%s\"" = " %s Bad cupsUIConstraints %s: “%s”";
+" %s Bad language \"%s\"." = " %s Bad language “%s”.";
+" %s Bad permissions on %s file \"%s\"." = " %s Bad permissions on %s file “%s”.";
" %s Bad spelling of %s - should be %s." = " %s Bad spelling of %s - should be %s.";
" %s Cannot provide both APScanAppPath and APScanAppBundleID." = " %s Cannot provide both APScanAppPath and APScanAppBundleID.";
" %s Default choices conflicting." = " %s Default choices conflicting.";
" %s Empty cupsUIConstraints %s" = " %s Empty cupsUIConstraints %s";
-" %s Missing \"%s\" translation string for option %s, choice %s." = " %s Missing \"%s\" translation string for option %s, choice %s.";
-" %s Missing \"%s\" translation string for option %s." = " %s Missing \"%s\" translation string for option %s.";
-" %s Missing %s file \"%s\"." = " %s Missing %s file \"%s\".";
+" %s Missing \"%s\" translation string for option %s, choice %s." = " %s Missing “%s” translation string for option %s, choice %s.";
+" %s Missing \"%s\" translation string for option %s." = " %s Missing “%s” translation string for option %s.";
+" %s Missing %s file \"%s\"." = " %s Missing %s file “%s”.";
" %s Missing REQUIRED PageRegion option.\n REF: Page 100, section 5.14." = " %s Missing REQUIRED PageRegion option.\n REF: Page 100, section 5.14.";
" %s Missing REQUIRED PageSize option.\n REF: Page 99, section 5.14." = " %s Missing REQUIRED PageSize option.\n REF: Page 99, section 5.14.";
-" %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"." = " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\".";
-" %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\"" = " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\"";
+" %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"." = " %s Missing choice *%s %s in UIConstraints “*%s %s *%s %s”.";
+" %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\"" = " %s Missing choice *%s %s in cupsUIConstraints %s: “%s”";
" %s Missing cupsUIResolver %s" = " %s Missing cupsUIResolver %s";
-" %s Missing option %s in UIConstraints \"*%s %s *%s %s\"." = " %s Missing option %s in UIConstraints \"*%s %s *%s %s\".";
-" %s Missing option %s in cupsUIConstraints %s: \"%s\"" = " %s Missing option %s in cupsUIConstraints %s: \"%s\"";
-" %s No base translation \"%s\" is included in file." = " %s No base translation \"%s\" is included in file.";
+" %s Missing option %s in UIConstraints \"*%s %s *%s %s\"." = " %s Missing option %s in UIConstraints “*%s %s *%s %s”.";
+" %s Missing option %s in cupsUIConstraints %s: \"%s\"" = " %s Missing option %s in cupsUIConstraints %s: “%s”";
+" %s No base translation \"%s\" is included in file." = " %s No base translation “%s” is included in file.";
" %s REQUIRED %s does not define choice None.\n REF: Page 122, section 5.17" = " %s REQUIRED %s does not define choice None.\n REF: Page 122, section 5.17";
-" %s Size \"%s\" defined for %s but not for %s." = " %s Size \"%s\" defined for %s but not for %s.";
-" %s Size \"%s\" has unexpected dimensions (%gx%g)." = " %s Size \"%s\" has unexpected dimensions (%gx%g).";
-" %s Size \"%s\" should be \"%s\"." = " %s Size \"%s\" should be \"%s\".";
-" %s Size \"%s\" should be the Adobe standard name \"%s\"." = " %s Size \"%s\" should be the Adobe standard name \"%s\".";
+" %s Size \"%s\" defined for %s but not for %s." = " %s Size “%s” defined for %s but not for %s.";
+" %s Size \"%s\" has unexpected dimensions (%gx%g)." = " %s Size “%s” has unexpected dimensions (%gx%g).";
+" %s Size \"%s\" should be \"%s\"." = " %s Size “%s” should be “%s”.";
+" %s Size \"%s\" should be the Adobe standard name \"%s\"." = " %s Size “%s” should be the Adobe standard name “%s”.";
" %s cupsICCProfile %s hash value collides with %s." = " %s cupsICCProfile %s hash value collides with %s.";
" %s cupsUIResolver %s causes a loop." = " %s cupsUIResolver %s causes a loop.";
" %s cupsUIResolver %s does not list at least two different options." = " %s cupsUIResolver %s does not list at least two different options.";
" **FAIL** Bad Default%s %s\n REF: Page 40, section 4.5." = " **FAIL** Bad Default%s %s\n REF: Page 40, section 4.5.";
" **FAIL** Bad DefaultImageableArea %s\n REF: Page 102, section 5.15." = " **FAIL** Bad DefaultImageableArea %s\n REF: Page 102, section 5.15.";
" **FAIL** Bad DefaultPaperDimension %s\n REF: Page 103, section 5.15." = " **FAIL** Bad DefaultPaperDimension %s\n REF: Page 103, section 5.15.";
-" **FAIL** Bad FileVersion \"%s\"\n REF: Page 56, section 5.3." = " **FAIL** Bad FileVersion \"%s\"\n REF: Page 56, section 5.3.";
-" **FAIL** Bad FormatVersion \"%s\"\n REF: Page 56, section 5.3." = " **FAIL** Bad FormatVersion \"%s\"\n REF: Page 56, section 5.3.";
+" **FAIL** Bad FileVersion \"%s\"\n REF: Page 56, section 5.3." = " **FAIL** Bad FileVersion “%s”\n REF: Page 56, section 5.3.";
+" **FAIL** Bad FormatVersion \"%s\"\n REF: Page 56, section 5.3." = " **FAIL** Bad FormatVersion “%s”\n REF: Page 56, section 5.3.";
" **FAIL** Bad JobPatchFile attribute in file\n REF: Page 24, section 3.4." = " **FAIL** Bad JobPatchFile attribute in file\n REF: Page 24, section 3.4.";
" **FAIL** Bad LanguageEncoding %s - must be ISOLatin1." = " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1.";
" **FAIL** Bad LanguageVersion %s - must be English." = " **FAIL** Bad LanguageVersion %s - must be English.";
-" **FAIL** Bad Manufacturer (should be \"%s\")\n REF: Page 211, table D.1." = " **FAIL** Bad Manufacturer (should be \"%s\")\n REF: Page 211, table D.1.";
-" **FAIL** Bad ModelName - \"%c\" not allowed in string.\n REF: Pages 59-60, section 5.3." = " **FAIL** Bad ModelName - \"%c\" not allowed in string.\n REF: Pages 59-60, section 5.3.";
-" **FAIL** Bad PSVersion - not \"(string) int\".\n REF: Pages 62-64, section 5.3." = " **FAIL** Bad PSVersion - not \"(string) int\".\n REF: Pages 62-64, section 5.3.";
-" **FAIL** Bad Product - not \"(string)\".\n REF: Page 62, section 5.3." = " **FAIL** Bad Product - not \"(string)\".\n REF: Page 62, section 5.3.";
+" **FAIL** Bad Manufacturer (should be \"%s\")\n REF: Page 211, table D.1." = " **FAIL** Bad Manufacturer (should be “%s”)\n REF: Page 211, table D.1.";
+" **FAIL** Bad ModelName - \"%c\" not allowed in string.\n REF: Pages 59-60, section 5.3." = " **FAIL** Bad ModelName - “%c” not allowed in string.\n REF: Pages 59-60, section 5.3.";
+" **FAIL** Bad PSVersion - not \"(string) int\".\n REF: Pages 62-64, section 5.3." = " **FAIL** Bad PSVersion - not “(string) int”.\n REF: Pages 62-64, section 5.3.";
+" **FAIL** Bad Product - not \"(string)\".\n REF: Page 62, section 5.3." = " **FAIL** Bad Product - not “(string)”.\n REF: Page 62, section 5.3.";
" **FAIL** Bad ShortNickName - longer than 31 chars.\n REF: Pages 64-65, section 5.3." = " **FAIL** Bad ShortNickName - longer than 31 chars.\n REF: Pages 64-65, section 5.3.";
" **FAIL** Bad option %s choice %s\n REF: Page 84, section 5.9" = " **FAIL** Bad option %s choice %s\n REF: Page 84, section 5.9";
" **FAIL** Default option code cannot be interpreted: %s" = " **FAIL** Default option code cannot be interpreted: %s";
" --cr End lines with CR (Mac OS 9)." = " --cr End lines with CR (Mac OS 9).";
" --crlf End lines with CR + LF (Windows)." = " --crlf End lines with CR + LF (Windows).";
" --domain regex Match domain to regular expression." = " --domain regex Match domain to regular expression.";
-" --exec utility [argument ...] ;\n Execute program if true." = " --exec utility [argument ...] ;\n Execute program if true.";
+" --exec utility [argument ...] ;\n Execute program if true." = " --exec utility [argument …] ;\n Execute program if true.";
" --false Always false." = " --false Always false.";
" --help Show help." = " --help Show help.";
" --help Show this help." = " --help Show this help.";
" -l List attributes." = " -l List attributes.";
" -l Produce plain text output." = " -l Produce plain text output.";
" -l Run cupsd on demand." = " -l Run cupsd on demand.";
-" -l lang[,lang,...] Specify the output language(s) (locale)." = " -l lang[,lang,...] Specify the output language(s) (locale).";
+" -l lang[,lang,...] Specify the output language(s) (locale)." = " -l lang[,lang,…] Specify the output language(s) (locale).";
" -m Use the ModelName value as the filename." = " -m Use the ModelName value as the filename.";
" -m mime/type Set output MIME type (otherwise application/pdf)." = " -m mime/type Set output MIME type (otherwise application/pdf).";
" -n copies Set number of copies." = " -n copies Set number of copies.";
" -u regex Match URI to regular expression." = " -u regex Match URI to regular expression.";
" -v Be verbose." = " -v Be verbose.";
" -vv Be very verbose." = " -vv Be very verbose.";
-" -x utility [argument ...] ;\n Execute program if true." = " -x utility [argument ...] ;\n Execute program if true.";
+" -x utility [argument ...] ;\n Execute program if true." = " -x utility [argument …] ;\n Execute program if true.";
" -z Compress PPD files using GNU zip." = " -z Compress PPD files using GNU zip.";
" IPPFIND_SERVICE_DOMAIN Domain name" = " IPPFIND_SERVICE_DOMAIN Domain name";
" IPPFIND_SERVICE_HOSTNAME\n Fully-qualified domain name" = " IPPFIND_SERVICE_HOSTNAME\n Fully-qualified domain name";
" {} URI" = " {} URI";
" FAIL" = " FAIL";
" PASS" = " PASS";
-"\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)." = "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5).";
-"\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)." = "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5).";
-"\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)." = "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3).";
-"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)." = "\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3).";
-"\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)." = "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11).";
-"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)." = "\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7).";
-"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)." = "\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7).";
-"\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14).";
-"\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14).";
-"\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14).";
-"\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14).";
-"\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14).";
-"\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14).";
-"\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14).";
-"\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14).";
-"\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)." = "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14).";
-"\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)." = "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4).";
-"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)." = "\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3).";
-"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section 4.1.3)." = "\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section 4.1.3).";
-"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section 4.1.9)." = "\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section 4.1.9).";
-"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section 4.1.9)." = "\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section 4.1.9).";
-"\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)." = "\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2).";
-"\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)." = "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2).";
-"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section 4.1.8)." = "\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section 4.1.8).";
-"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section 4.1.8)." = "\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section 4.1.8).";
-"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)." = "\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10).";
-"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 section 4.1.13)." = "\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 section 4.1.13).";
-"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section 4.1.15)." = "\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section 4.1.15).";
-"\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 2911 section 4.1.15)." = "\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 2911 section 4.1.15).";
-"\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC 2911 section 4.1.15)." = "\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC 2911 section 4.1.15).";
-"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)." = "\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1).";
-"\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)." = "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1).";
-"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)." = "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6).";
-"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)." = "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6).";
+"\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)." = "“%s”: Bad URI value “%s” - %s (RFC 2911 section 4.1.5).";
+"\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)." = "“%s”: Bad URI value “%s” - bad length %d (RFC 2911 section 4.1.5).";
+"\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)." = "“%s”: Bad attribute name - bad length %d (RFC 2911 section 4.1.3).";
+"\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)." = "“%s”: Bad attribute name - invalid character (RFC 2911 section 4.1.3).";
+"\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)." = "“%s”: Bad boolen value %d (RFC 2911 section 4.1.11).";
+"\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)." = "“%s”: Bad charset value “%s” - bad characters (RFC 2911 section 4.1.7).";
+"\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)." = "“%s”: Bad charset value “%s” - bad length %d (RFC 2911 section 4.1.7).";
+"\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime UTC hours %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime day %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime deciseconds %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime hours %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime minutes %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime month %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)." = "“%s”: Bad dateTime seconds %u (RFC 2911 section 4.1.14).";
+"\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)." = "“%s”: Bad enum value %d - out of range (RFC 2911 section 4.1.4).";
+"\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)." = "“%s”: Bad keyword value “%s” - bad length %d (RFC 2911 section 4.1.3).";
+"\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section 4.1.3)." = "“%s”: Bad keyword value “%s” - invalid character (RFC 2911 section 4.1.3).";
+"\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section 4.1.9)." = "“%s”: Bad mimeMediaType value “%s” - bad characters (RFC 2911 section 4.1.9).";
+"\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section 4.1.9)." = "“%s”: Bad mimeMediaType value “%s” - bad length %d (RFC 2911 section 4.1.9).";
+"\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)." = "“%s”: Bad name value “%s” - bad UTF-8 sequence (RFC 2911 section 4.1.2).";
+"\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)." = "“%s”: Bad name value “%s” - bad length %d (RFC 2911 section 4.1.2).";
+"\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section 4.1.8)." = "“%s”: Bad naturalLanguage value “%s” - bad characters (RFC 2911 section 4.1.8).";
+"\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section 4.1.8)." = "“%s”: Bad naturalLanguage value “%s” - bad length %d (RFC 2911 section 4.1.8).";
+"\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)." = "“%s”: Bad octetString value - bad length %d (RFC 2911 section 4.1.10).";
+"\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 section 4.1.13)." = "“%s”: Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 section 4.1.13).";
+"\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section 4.1.15)." = "“%s”: Bad resolution value %dx%d%s - bad units value (RFC 2911 section 4.1.15).";
+"\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 2911 section 4.1.15)." = "“%s”: Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 2911 section 4.1.15).";
+"\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC 2911 section 4.1.15)." = "“%s”: Bad resolution value %dx%d%s - feed resolution must be positive (RFC 2911 section 4.1.15).";
+"\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)." = "“%s”: Bad text value “%s” - bad UTF-8 sequence (RFC 2911 section 4.1.1).";
+"\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)." = "“%s”: Bad text value “%s” - bad length %d (RFC 2911 section 4.1.1).";
+"\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)." = "“%s”: Bad uriScheme value “%s” - bad characters (RFC 2911 section 4.1.6).";
+"\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)." = "“%s”: Bad uriScheme value “%s” - bad length %d (RFC 2911 section 4.1.6).";
"%-7s %-7.7s %-7d %-31.31s %.0f bytes" = "%-7s %-7.7s %-7d %-31.31s %.0f bytes";
"%d x %d mm" = "%d x %d mm";
"%g x %g" = "%g x %g";
// TRANSLATORS: Message is "subject: error"
"%s: %s" = "%s: %s";
"%s: %s failed: %s" = "%s: %s failed: %s";
-"%s: Bad printer URI \"%s\"." = "%s: Bad printer URI \"%s\".";
-"%s: Bad version %s for \"-V\"." = "%s: Bad version %s for \"-V\".";
+"%s: Bad printer URI \"%s\"." = "%s: Bad printer URI “%s”.";
+"%s: Bad version %s for \"-V\"." = "%s: Bad version %s for “-V”.";
"%s: Don't know what to do." = "%s: Don't know what to do.";
-"%s: Error - %s environment variable names non-existent destination \"%s\"." = "%s: Error - %s environment variable names non-existent destination \"%s\".";
+"%s: Error - %s environment variable names non-existent destination \"%s\"." = "%s: Error - %s environment variable names non-existent destination “%s”.";
"%s: Error - add '/version=1.1' to server name." = "%s: Error - add '/version=1.1' to server name.";
"%s: Error - bad job ID." = "%s: Error - bad job ID.";
"%s: Error - cannot print files and alter jobs simultaneously." = "%s: Error - cannot print files and alter jobs simultaneously.";
"%s: Error - cannot print from stdin if files or a job ID are provided." = "%s: Error - cannot print from stdin if files or a job ID are provided.";
-"%s: Error - expected character set after \"-S\" option." = "%s: Error - expected character set after \"-S\" option.";
-"%s: Error - expected content type after \"-T\" option." = "%s: Error - expected content type after \"-T\" option.";
-"%s: Error - expected copies after \"-#\" option." = "%s: Error - expected copies after \"-#\" option.";
-"%s: Error - expected copies after \"-n\" option." = "%s: Error - expected copies after \"-n\" option.";
-"%s: Error - expected destination after \"-P\" option." = "%s: Error - expected destination after \"-P\" option.";
-"%s: Error - expected destination after \"-d\" option." = "%s: Error - expected destination after \"-d\" option.";
-"%s: Error - expected form after \"-f\" option." = "%s: Error - expected form after \"-f\" option.";
-"%s: Error - expected hold name after \"-H\" option." = "%s: Error - expected hold name after \"-H\" option.";
-"%s: Error - expected hostname after \"-H\" option." = "%s: Error - expected hostname after \"-H\" option.";
-"%s: Error - expected hostname after \"-h\" option." = "%s: Error - expected hostname after \"-h\" option.";
-"%s: Error - expected mode list after \"-y\" option." = "%s: Error - expected mode list after \"-y\" option.";
-"%s: Error - expected name after \"-%c\" option." = "%s: Error - expected name after \"-%c\" option.";
-"%s: Error - expected option=value after \"-o\" option." = "%s: Error - expected option=value after \"-o\" option.";
-"%s: Error - expected page list after \"-P\" option." = "%s: Error - expected page list after \"-P\" option.";
-"%s: Error - expected priority after \"-%c\" option." = "%s: Error - expected priority after \"-%c\" option.";
-"%s: Error - expected reason text after \"-r\" option." = "%s: Error - expected reason text after \"-r\" option.";
-"%s: Error - expected title after \"-t\" option." = "%s: Error - expected title after \"-t\" option.";
-"%s: Error - expected username after \"-U\" option." = "%s: Error - expected username after \"-U\" option.";
-"%s: Error - expected username after \"-u\" option." = "%s: Error - expected username after \"-u\" option.";
-"%s: Error - expected value after \"-%c\" option." = "%s: Error - expected value after \"-%c\" option.";
-"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option." = "%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option.";
+"%s: Error - expected character set after \"-S\" option." = "%s: Error - expected character set after “-S” option.";
+"%s: Error - expected content type after \"-T\" option." = "%s: Error - expected content type after “-T” option.";
+"%s: Error - expected copies after \"-#\" option." = "%s: Error - expected copies after “-#” option.";
+"%s: Error - expected copies after \"-n\" option." = "%s: Error - expected copies after “-n” option.";
+"%s: Error - expected destination after \"-P\" option." = "%s: Error - expected destination after “-P” option.";
+"%s: Error - expected destination after \"-d\" option." = "%s: Error - expected destination after “-d” option.";
+"%s: Error - expected form after \"-f\" option." = "%s: Error - expected form after “-f” option.";
+"%s: Error - expected hold name after \"-H\" option." = "%s: Error - expected hold name after “-H” option.";
+"%s: Error - expected hostname after \"-H\" option." = "%s: Error - expected hostname after “-H” option.";
+"%s: Error - expected hostname after \"-h\" option." = "%s: Error - expected hostname after “-h” option.";
+"%s: Error - expected mode list after \"-y\" option." = "%s: Error - expected mode list after “-y” option.";
+"%s: Error - expected name after \"-%c\" option." = "%s: Error - expected name after “-%c” option.";
+"%s: Error - expected option=value after \"-o\" option." = "%s: Error - expected option=value after “-o” option.";
+"%s: Error - expected page list after \"-P\" option." = "%s: Error - expected page list after “-P” option.";
+"%s: Error - expected priority after \"-%c\" option." = "%s: Error - expected priority after “-%c” option.";
+"%s: Error - expected reason text after \"-r\" option." = "%s: Error - expected reason text after “-r” option.";
+"%s: Error - expected title after \"-t\" option." = "%s: Error - expected title after “-t” option.";
+"%s: Error - expected username after \"-U\" option." = "%s: Error - expected username after “-U” option.";
+"%s: Error - expected username after \"-u\" option." = "%s: Error - expected username after “-u” option.";
+"%s: Error - expected value after \"-%c\" option." = "%s: Error - expected value after “-%c” option.";
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option." = "%s: Error - need “completed”, “not-completed”, or “all” after “-W” option.";
"%s: Error - no default destination available." = "%s: Error - no default destination available.";
"%s: Error - priority must be between 1 and 100." = "%s: Error - priority must be between 1 and 100.";
"%s: Error - scheduler not responding." = "%s: Error - scheduler not responding.";
-"%s: Error - too many files - \"%s\"." = "%s: Error - too many files - \"%s\".";
-"%s: Error - unable to access \"%s\" - %s" = "%s: Error - unable to access \"%s\" - %s";
+"%s: Error - too many files - \"%s\"." = "%s: Error - too many files - “%s”.";
+"%s: Error - unable to access \"%s\" - %s" = "%s: Error - unable to access “%s” - %s";
"%s: Error - unable to queue from stdin - %s." = "%s: Error - unable to queue from stdin - %s.";
-"%s: Error - unknown destination \"%s\"." = "%s: Error - unknown destination \"%s\".";
-"%s: Error - unknown destination \"%s/%s\"." = "%s: Error - unknown destination \"%s/%s\".";
-"%s: Error - unknown option \"%c\"." = "%s: Error - unknown option \"%c\".";
-"%s: Error - unknown option \"%s\"." = "%s: Error - unknown option \"%s\".";
-"%s: Expected job ID after \"-i\" option." = "%s: Expected job ID after \"-i\" option.";
-"%s: Invalid destination name in list \"%s\"." = "%s: Invalid destination name in list \"%s\".";
-"%s: Invalid filter string \"%s\"." = "%s: Invalid filter string \"%s\".";
-"%s: Missing filename for \"-P\"." = "%s: Missing filename for \"-P\".";
-"%s: Missing timeout for \"-T\"." = "%s: Missing timeout for \"-T\".";
-"%s: Missing version for \"-V\"." = "%s: Missing version for \"-V\".";
-"%s: Need job ID (\"-i jobid\") before \"-H restart\"." = "%s: Need job ID (\"-i jobid\") before \"-H restart\".";
+"%s: Error - unknown destination \"%s\"." = "%s: Error - unknown destination “%s”.";
+"%s: Error - unknown destination \"%s/%s\"." = "%s: Error - unknown destination “%s/%s”.";
+"%s: Error - unknown option \"%c\"." = "%s: Error - unknown option “%c”.";
+"%s: Error - unknown option \"%s\"." = "%s: Error - unknown option “%s”.";
+"%s: Expected job ID after \"-i\" option." = "%s: Expected job ID after “-i” option.";
+"%s: Invalid destination name in list \"%s\"." = "%s: Invalid destination name in list “%s”.";
+"%s: Invalid filter string \"%s\"." = "%s: Invalid filter string “%s”.";
+"%s: Missing filename for \"-P\"." = "%s: Missing filename for “-P”.";
+"%s: Missing timeout for \"-T\"." = "%s: Missing timeout for “-T”.";
+"%s: Missing version for \"-V\"." = "%s: Missing version for “-V”.";
+"%s: Need job ID (\"-i jobid\") before \"-H restart\"." = "%s: Need job ID (“-i jobid”) before “-H restart”.";
"%s: No filter to convert from %s/%s to %s/%s." = "%s: No filter to convert from %s/%s to %s/%s.";
"%s: Operation failed: %s" = "%s: Operation failed: %s";
"%s: Sorry, no encryption support." = "%s: Sorry, no encryption support.";
-"%s: Unable to connect to \"%s:%d\": %s" = "%s: Unable to connect to \"%s:%d\": %s";
+"%s: Unable to connect to \"%s:%d\": %s" = "%s: Unable to connect to “%s:%d”: %s";
"%s: Unable to connect to server." = "%s: Unable to connect to server.";
"%s: Unable to contact server." = "%s: Unable to contact server.";
"%s: Unable to create PPD file: %s" = "%s: Unable to create PPD file: %s";
-"%s: Unable to determine MIME type of \"%s\"." = "%s: Unable to determine MIME type of \"%s\".";
-"%s: Unable to open \"%s\": %s" = "%s: Unable to open \"%s\": %s";
+"%s: Unable to determine MIME type of \"%s\"." = "%s: Unable to determine MIME type of “%s”.";
+"%s: Unable to open \"%s\": %s" = "%s: Unable to open “%s”: %s";
"%s: Unable to open %s: %s" = "%s: Unable to open %s: %s";
"%s: Unable to open PPD file: %s on line %d." = "%s: Unable to open PPD file: %s on line %d.";
-"%s: Unable to read MIME database from \"%s\" or \"%s\"." = "%s: Unable to read MIME database from \"%s\" or \"%s\".";
-"%s: Unable to resolve \"%s\"." = "%s: Unable to resolve \"%s\".";
-"%s: Unknown destination \"%s\"." = "%s: Unknown destination \"%s\".";
+"%s: Unable to read MIME database from \"%s\" or \"%s\"." = "%s: Unable to read MIME database from “%s” or “%s”.";
+"%s: Unable to resolve \"%s\"." = "%s: Unable to resolve “%s”.";
+"%s: Unknown destination \"%s\"." = "%s: Unknown destination “%s”.";
"%s: Unknown destination MIME type %s/%s." = "%s: Unknown destination MIME type %s/%s.";
-"%s: Unknown option \"%c\"." = "%s: Unknown option \"%c\".";
-"%s: Unknown option \"%s\"." = "%s: Unknown option \"%s\".";
-"%s: Unknown option \"-%c\"." = "%s: Unknown option \"-%c\".";
+"%s: Unknown option \"%c\"." = "%s: Unknown option “%c”.";
+"%s: Unknown option \"%s\"." = "%s: Unknown option “%s”.";
+"%s: Unknown option \"-%c\"." = "%s: Unknown option “-%c”.";
"%s: Unknown source MIME type %s/%s." = "%s: Unknown source MIME type %s/%s.";
-"%s: Warning - \"%c\" format modifier not supported - output may not be correct." = "%s: Warning - \"%c\" format modifier not supported - output may not be correct.";
+"%s: Warning - \"%c\" format modifier not supported - output may not be correct." = "%s: Warning - “%c” format modifier not supported - output may not be correct.";
"%s: Warning - character set option ignored." = "%s: Warning - character set option ignored.";
"%s: Warning - content type option ignored." = "%s: Warning - content type option ignored.";
"%s: Warning - form option ignored." = "%s: Warning - form option ignored.";
"?Invalid help command unknown." = "?Invalid help command unknown.";
"A Samba password is required to export printer drivers" = "A Samba password is required to export printer drivers";
"A Samba username is required to export printer drivers" = "A Samba username is required to export printer drivers";
-"A class named \"%s\" already exists." = "A class named \"%s\" already exists.";
-"A printer named \"%s\" already exists." = "A printer named \"%s\" already exists.";
+"A class named \"%s\" already exists." = "A class named “%s” already exists.";
+"A printer named \"%s\" already exists." = "A printer named “%s” already exists.";
"A0" = "A0";
"A0 Long Edge" = "A0 Long Edge";
"A1" = "A1";
"B7" = "B7";
"B8" = "B8";
"B9" = "B9";
-"Bad 'document-format' value \"%s\"." = "Bad 'document-format' value \"%s\".";
+"Bad 'document-format' value \"%s\"." = "Bad 'document-format' value “%s”.";
"Bad NULL dests pointer" = "Bad NULL dests pointer";
"Bad OpenGroup" = "Bad OpenGroup";
"Bad OpenUI/JCLOpenUI" = "Bad OpenUI/JCLOpenUI";
"Bad arguments to function" = "Bad arguments to function";
"Bad copies value %d." = "Bad copies value %d.";
"Bad custom parameter" = "Bad custom parameter";
-"Bad device-uri \"%s\"." = "Bad device-uri \"%s\".";
-"Bad device-uri scheme \"%s\"." = "Bad device-uri scheme \"%s\".";
-"Bad document-format \"%s\"." = "Bad document-format \"%s\".";
-"Bad document-format-default \"%s\"." = "Bad document-format-default \"%s\".";
+"Bad device-uri \"%s\"." = "Bad device-uri “%s”.";
+"Bad device-uri scheme \"%s\"." = "Bad device-uri scheme “%s”.";
+"Bad document-format \"%s\"." = "Bad document-format “%s”.";
+"Bad document-format-default \"%s\"." = "Bad document-format-default “%s”.";
"Bad filename buffer" = "Bad filename buffer";
"Bad hostname/address in URI" = "Bad hostname/address in URI";
"Bad job-name value: %s" = "Bad job-name value: %s";
"Bad job-name value: Wrong type or count." = "Bad job-name value: Wrong type or count.";
"Bad job-priority value." = "Bad job-priority value.";
-"Bad job-sheets value \"%s\"." = "Bad job-sheets value \"%s\".";
+"Bad job-sheets value \"%s\"." = "Bad job-sheets value “%s”.";
"Bad job-sheets value type." = "Bad job-sheets value type.";
"Bad job-state value." = "Bad job-state value.";
-"Bad job-uri \"%s\"." = "Bad job-uri \"%s\".";
-"Bad notify-pull-method \"%s\"." = "Bad notify-pull-method \"%s\".";
-"Bad notify-recipient-uri \"%s\"." = "Bad notify-recipient-uri \"%s\".";
+"Bad job-uri \"%s\"." = "Bad job-uri “%s”.";
+"Bad notify-pull-method \"%s\"." = "Bad notify-pull-method “%s”.";
+"Bad notify-recipient-uri \"%s\"." = "Bad notify-recipient-uri “%s”.";
"Bad number-up value %d." = "Bad number-up value %d.";
"Bad option + choice on line %d." = "Bad option + choice on line %d.";
"Bad page-ranges values %d-%d." = "Bad page-ranges values %d-%d.";
"Bad port number in URI" = "Bad port number in URI";
-"Bad port-monitor \"%s\"." = "Bad port-monitor \"%s\".";
+"Bad port-monitor \"%s\"." = "Bad port-monitor “%s”.";
"Bad printer-state value %d." = "Bad printer-state value %d.";
"Bad printer-uri." = "Bad printer-uri.";
"Bad request ID %d." = "Bad request ID %d.";
"Bad/empty URI" = "Bad/empty URI";
"Banners" = "Banners";
"Bond Paper" = "Bond Paper";
-"Boolean expected for waiteof option \"%s\"." = "Boolean expected for waiteof option \"%s\".";
+"Boolean expected for waiteof option \"%s\"." = "Boolean expected for waiteof option “%s”.";
"Buffer overflow detected, aborting." = "Buffer overflow detected, aborting.";
"CMYK" = "CMYK";
"CPCL Label Printer" = "CPCL Label Printer";
"Cannot share a remote Kerberized printer." = "Cannot share a remote Kerberized printer.";
"Cassette" = "Cassette";
"Change Settings" = "Change Settings";
-"Character set \"%s\" not supported." = "Character set \"%s\" not supported.";
+"Character set \"%s\" not supported." = "Character set “%s” not supported.";
"Classes" = "Classes";
"Clean Print Heads" = "Clean Print Heads";
"Close-Job doesn't support the job-uri attribute." = "Close-Job doesn't support the job-uri attribute.";
"Delete Class" = "Delete Class";
"Delete Printer" = "Delete Printer";
"DeskJet Series" = "DeskJet Series";
-"Destination \"%s\" is not accepting jobs." = "Destination \"%s\" is not accepting jobs.";
+"Destination \"%s\" is not accepting jobs." = "Destination “%s” is not accepting jobs.";
"Device: uri = %s\n class = %s\n info = %s\n make-and-model = %s\n device-id = %s\n location = %s" = "Device: uri = %s\n class = %s\n info = %s\n make-and-model = %s\n device-id = %s\n location = %s";
"Direct Thermal Media" = "Direct Thermal Media";
-"Directory \"%s\" contains a relative path." = "Directory \"%s\" contains a relative path.";
-"Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)." = "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d).";
-"Directory \"%s\" is a file." = "Directory \"%s\" is a file.";
-"Directory \"%s\" not available: %s" = "Directory \"%s\" not available: %s";
-"Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)." = "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d).";
+"Directory \"%s\" contains a relative path." = "Directory “%s” contains a relative path.";
+"Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)." = "Directory “%s” has insecure permissions (0%o/uid=%d/gid=%d).";
+"Directory \"%s\" is a file." = "Directory “%s” is a file.";
+"Directory \"%s\" not available: %s" = "Directory “%s” not available: %s";
+"Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)." = "Directory “%s” permissions OK (0%o/uid=%d/gid=%d).";
"Disabled" = "Disabled";
"Document #%d does not exist in job #%d." = "Document #%d does not exist in job #%d.";
"Duplexer" = "Duplexer";
"Error Policy" = "Error Policy";
"Error reading raster data." = "Error reading raster data.";
"Error sending raster data." = "Error sending raster data.";
-"Error: need hostname after \"-h\" option." = "Error: need hostname after \"-h\" option.";
+"Error: need hostname after \"-h\" option." = "Error: need hostname after “-h” option.";
"Every 10 Labels" = "Every 10 Labels";
"Every 2 Labels" = "Every 2 Labels";
"Every 3 Labels" = "Every 3 Labels";
"FanFold German" = "FanFold German";
"FanFold Legal German" = "FanFold Legal German";
"Fanfold US" = "Fanfold US";
-"File \"%s\" contains a relative path." = "File \"%s\" contains a relative path.";
-"File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)." = "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d).";
-"File \"%s\" is a directory." = "File \"%s\" is a directory.";
-"File \"%s\" not available: %s" = "File \"%s\" not available: %s";
-"File \"%s\" permissions OK (0%o/uid=%d/gid=%d)." = "File \"%s\" permissions OK (0%o/uid=%d/gid=%d).";
+"File \"%s\" contains a relative path." = "File “%s” contains a relative path.";
+"File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)." = "File “%s” has insecure permissions (0%o/uid=%d/gid=%d).";
+"File \"%s\" is a directory." = "File “%s” is a directory.";
+"File \"%s\" not available: %s" = "File “%s” not available: %s";
+"File \"%s\" permissions OK (0%o/uid=%d/gid=%d)." = "File “%s” permissions OK (0%o/uid=%d/gid=%d).";
"File Folder " = "File Folder ";
-"File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"." = "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\".";
+"File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"." = "File device URIs have been disabled. To enable, see the FileDevice directive in “%s/cups-files.conf”.";
"Finished page %d." = "Finished page %d.";
"Folio" = "Folio";
"Forbidden" = "Forbidden";
"Internet Printing Protocol" = "Internet Printing Protocol";
"Invalid media name arguments." = "Invalid media name arguments.";
"Invalid media size." = "Invalid media size.";
-"Invalid printer command \"%s\"." = "Invalid printer command \"%s\".";
+"Invalid printer command \"%s\"." = "Invalid printer command “%s”.";
"JCL" = "JCL";
"JIS B0" = "JIS B0";
"JIS B1" = "JIS B1";
"LPD/LPR Host or Printer" = "LPD/LPR Host or Printer";
"Label Printer" = "Label Printer";
"Label Top" = "Label Top";
-"Language \"%s\" not supported." = "Language \"%s\" not supported.";
+"Language \"%s\" not supported." = "Language “%s” not supported.";
"Large Address" = "Large Address";
"LaserJet Series PCL 4/5" = "LaserJet Series PCL 4/5";
"Letter Oversize" = "Letter Oversize";
"List Available Printers" = "List Available Printers";
"Load paper." = "Load paper.";
"Long-Edge (Portrait)" = "Long-Edge (Portrait)";
-"Looking for printer." = "Looking for printer.";
+"Looking for printer..." = "Looking for printer…";
"Manual Feed" = "Manual Feed";
"Media Size" = "Media Size";
"Media Source" = "Media Source";
"OpenGroup without a CloseGroup first" = "OpenGroup without a CloseGroup first";
"OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first" = "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first";
"Operation Policy" = "Operation Policy";
-"Option \"%s\" cannot be included via %%%%IncludeFeature." = "Option \"%s\" cannot be included via %%%%IncludeFeature.";
+"Option \"%s\" cannot be included via %%%%IncludeFeature." = "Option “%s” cannot be included via %%%%IncludeFeature.";
"Options Installed" = "Options Installed";
"Options:" = "Options:";
"Out of date PPD cache file." = "Out of date PPD cache file.";
"Tear" = "Tear";
"Tear-Off" = "Tear-Off";
"Tear-Off Adjust Position" = "Tear-Off Adjust Position";
-"The \"%s\" attribute is required for print jobs." = "The \"%s\" attribute is required for print jobs.";
+"The \"%s\" attribute is required for print jobs." = "The “%s” attribute is required for print jobs.";
"The %s attribute cannot be provided with job-ids." = "The %s attribute cannot be provided with job-ids.";
"The '%s' Job Status attribute cannot be supplied in a job creation request." = "The '%s' Job Status attribute cannot be supplied in a job creation request.";
"The '%s' operation attribute cannot be supplied in a Create-Job request." = "The '%s' operation attribute cannot be supplied in a Create-Job request.";
-"The PPD file \"%s\" could not be found." = "The PPD file \"%s\" could not be found.";
-"The PPD file \"%s\" could not be opened: %s" = "The PPD file \"%s\" could not be opened: %s";
+"The PPD file \"%s\" could not be found." = "The PPD file “%s” could not be found.";
+"The PPD file \"%s\" could not be opened: %s" = "The PPD file “%s” could not be opened: %s";
"The PPD file could not be opened." = "The PPD file could not be opened.";
"The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)." = "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#).";
"The developer unit needs to be replaced." = "The developer unit needs to be replaced.";
"The printer's interlock is open." = "The printer's interlock is open.";
"The printer's waste bin is almost full." = "The printer's waste bin is almost full.";
"The printer's waste bin is full." = "The printer's waste bin is full.";
-"The printer-uri \"%s\" contains invalid characters." = "The printer-uri \"%s\" contains invalid characters.";
+"The printer-uri \"%s\" contains invalid characters." = "The printer-uri “%s” contains invalid characters.";
"The printer-uri attribute is required." = "The printer-uri attribute is required.";
-"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"." = "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\".";
-"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"." = "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\".";
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"." = "The printer-uri must be of the form “ipp://HOSTNAME/classes/CLASSNAME”.";
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"." = "The printer-uri must be of the form “ipp://HOSTNAME/printers/PRINTERNAME”.";
"The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)." = "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#).";
-"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it." = "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it.";
-"The which-jobs value \"%s\" is not supported." = "The which-jobs value \"%s\" is not supported.";
+"The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it." = "The web interface is currently disabled. Run “cupsctl WebInterface=yes” to enable it.";
+"The which-jobs value \"%s\" is not supported." = "The which-jobs value “%s” is not supported.";
"There are too many subscriptions." = "There are too many subscriptions.";
"There was an unrecoverable USB error." = "There was an unrecoverable USB error.";
"Thermal Transfer Media" = "Thermal Transfer Media";
"Unable to add RSS subscription" = "Unable to add RSS subscription";
"Unable to add class" = "Unable to add class";
"Unable to add document to print job." = "Unable to add document to print job.";
-"Unable to add job for destination \"%s\"." = "Unable to add job for destination \"%s\".";
+"Unable to add job for destination \"%s\"." = "Unable to add job for destination “%s”.";
"Unable to add printer" = "Unable to add printer";
"Unable to allocate memory for file types." = "Unable to allocate memory for file types.";
"Unable to allocate memory for page info" = "Unable to allocate memory for page info";
"Unable to install Windows 2000 printer driver files (%d)." = "Unable to install Windows 2000 printer driver files (%d).";
"Unable to install Windows 9x printer driver files (%d)." = "Unable to install Windows 9x printer driver files (%d).";
"Unable to load help index." = "Unable to load help index.";
-"Unable to locate printer \"%s\"." = "Unable to locate printer \"%s\".";
+"Unable to locate printer \"%s\"." = "Unable to locate printer “%s”.";
"Unable to locate printer." = "Unable to locate printer.";
"Unable to modify class" = "Unable to modify class";
"Unable to modify printer" = "Unable to modify printer";
"Unable to read print data." = "Unable to read print data.";
"Unable to rename job document file." = "Unable to rename job document file.";
"Unable to resolve printer-uri." = "Unable to resolve printer-uri.";
-"Unable to run \"%s\": %s" = "Unable to run \"%s\": %s";
+"Unable to run \"%s\": %s" = "Unable to run “%s”: %s";
"Unable to see in file" = "Unable to see in file";
"Unable to send command to printer driver" = "Unable to send command to printer driver";
"Unable to send data to printer." = "Unable to send data to printer.";
"Unauthorized" = "Unauthorized";
"Units" = "Units";
"Unknown" = "Unknown";
-"Unknown choice \"%s\" for option \"%s\"." = "Unknown choice \"%s\" for option \"%s\".";
-"Unknown encryption option value: \"%s\"." = "Unknown encryption option value: \"%s\".";
-"Unknown file order: \"%s\"." = "Unknown file order: \"%s\".";
-"Unknown format character: \"%c\"." = "Unknown format character: \"%c\".";
+"Unknown choice \"%s\" for option \"%s\"." = "Unknown choice “%s” for option “%s”.";
+"Unknown encryption option value: \"%s\"." = "Unknown encryption option value: “%s”.";
+"Unknown file order: \"%s\"." = "Unknown file order: “%s”.";
+"Unknown format character: \"%c\"." = "Unknown format character: “%c”.";
"Unknown media size name." = "Unknown media size name.";
-"Unknown option \"%s\" with value \"%s\"." = "Unknown option \"%s\" with value \"%s\".";
-"Unknown option \"%s\"." = "Unknown option \"%s\".";
-"Unknown print mode: \"%s\"." = "Unknown print mode: \"%s\".";
-"Unknown printer-error-policy \"%s\"." = "Unknown printer-error-policy \"%s\".";
-"Unknown printer-op-policy \"%s\"." = "Unknown printer-op-policy \"%s\".";
+"Unknown option \"%s\" with value \"%s\"." = "Unknown option “%s” with value “%s”.";
+"Unknown option \"%s\"." = "Unknown option “%s”.";
+"Unknown print mode: \"%s\"." = "Unknown print mode: “%s”.";
+"Unknown printer-error-policy \"%s\"." = "Unknown printer-error-policy “%s”.";
+"Unknown printer-op-policy \"%s\"." = "Unknown printer-op-policy “%s”.";
"Unknown request method." = "Unknown request method.";
"Unknown request version." = "Unknown request version.";
"Unknown scheme in URI" = "Unknown scheme in URI";
"Unknown service name." = "Unknown service name.";
-"Unknown version option value: \"%s\"." = "Unknown version option value: \"%s\".";
-"Unsupported 'compression' value \"%s\"." = "Unsupported 'compression' value \"%s\".";
-"Unsupported 'document-format' value \"%s\"." = "Unsupported 'document-format' value \"%s\".";
+"Unknown version option value: \"%s\"." = "Unknown version option value: “%s”.";
+"Unsupported 'compression' value \"%s\"." = "Unsupported 'compression' value “%s”.";
+"Unsupported 'document-format' value \"%s\"." = "Unsupported 'document-format' value “%s”.";
"Unsupported 'job-name' value." = "Unsupported 'job-name' value.";
-"Unsupported character set \"%s\"." = "Unsupported character set \"%s\".";
-"Unsupported compression \"%s\"." = "Unsupported compression \"%s\".";
-"Unsupported document-format \"%s\"." = "Unsupported document-format \"%s\".";
-"Unsupported document-format \"%s/%s\"." = "Unsupported document-format \"%s/%s\".";
-"Unsupported format \"%s\"." = "Unsupported format \"%s\".";
+"Unsupported character set \"%s\"." = "Unsupported character set “%s”.";
+"Unsupported compression \"%s\"." = "Unsupported compression “%s”.";
+"Unsupported document-format \"%s\"." = "Unsupported document-format “%s”.";
+"Unsupported document-format \"%s/%s\"." = "Unsupported document-format “%s/%s”.";
+"Unsupported format \"%s\"." = "Unsupported format “%s”.";
"Unsupported margins." = "Unsupported margins.";
"Unsupported media value." = "Unsupported media value.";
"Unsupported number-up value %d, using number-up=1." = "Unsupported number-up value %d, using number-up=1.";
"Upgrade Required" = "Upgrade Required";
"Usage:\n\n lpadmin [-h server] -d destination\n lpadmin [-h server] -x destination\n lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n [-r remove-class] [-v device] [-D description]\n [-P ppd-file] [-o name=value]\n [-u allow:user,user] [-u deny:user,user]" = "Usage:\n\n lpadmin [-h server] -d destination\n lpadmin [-h server] -x destination\n lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n [-r remove-class] [-v device] [-D description]\n [-P ppd-file] [-o name=value]\n [-u allow:user,user] [-u deny:user,user]";
"Usage: %s job-id user title copies options [file]" = "Usage: %s job-id user title copies options [file]";
-"Usage: cupsaddsmb [options] printer1 ... printerN" = "Usage: cupsaddsmb [options] printer1 ... printerN";
-"Usage: cupsctl [options] [param=value ... paramN=valueN]" = "Usage: cupsctl [options] [param=value ... paramN=valueN]";
+"Usage: cupsaddsmb [options] printer1 ... printerN" = "Usage: cupsaddsmb [options] printer1 … printerN";
+"Usage: cupsctl [options] [param=value ... paramN=valueN]" = "Usage: cupsctl [options] [param=value … paramN=valueN]";
"Usage: cupsd [options]" = "Usage: cupsd [options]";
"Usage: cupsfilter [ options ] [ -- ] filename" = "Usage: cupsfilter [ options ] [ -- ] filename";
-"Usage: cupstestdsc [options] filename.ps [... filename.ps]" = "Usage: cupstestdsc [options] filename.ps [... filename.ps]";
-"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]" = "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]";
-"Usage: ippdiscover [options] -a\n ippdiscover [options] \"service name\"\n\nOptions:" = "Usage: ippdiscover [options] -a\n ippdiscover [options] \"service name\"\n\nOptions:";
-"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n ippfind [options] name[.regtype[.domain.]] ... [expression]\n ippfind --help\n ippfind --version" = "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n ippfind [options] name[.regtype[.domain.]] ... [expression]\n ippfind --help\n ippfind --version";
-"Usage: ipptool [options] URI filename [ ... filenameN ]" = "Usage: ipptool [options] URI filename [ ... filenameN ]";
+"Usage: cupstestdsc [options] filename.ps [... filename.ps]" = "Usage: cupstestdsc [options] filename.ps [… filename.ps]";
+"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]" = "Usage: cupstestppd [options] filename1.ppd[.gz] [… filenameN.ppd[.gz]]";
+"Usage: ippdiscover [options] -a\n ippdiscover [options] \"service name\"\n\nOptions:" = "Usage: ippdiscover [options] -a\n ippdiscover [options] “service name”\n\nOptions:";
+"Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n ippfind [options] name[.regtype[.domain.]] ... [expression]\n ippfind --help\n ippfind --version" = "Usage: ippfind [options] regtype[,subtype][.domain.] … [expression]\n ippfind [options] name[.regtype[.domain.]] … [expression]\n ippfind --help\n ippfind --version";
+"Usage: ipptool [options] URI filename [ ... filenameN ]" = "Usage: ipptool [options] URI filename [ … filenameN ]";
"Usage: lpmove job/src dest" = "Usage: lpmove job/src dest";
-"Usage: lpoptions [-h server] [-E] -d printer\n lpoptions [-h server] [-E] [-p printer] -l\n lpoptions [-h server] [-E] -p printer -o option[=value] ...\n lpoptions [-h server] [-E] -x printer" = "Usage: lpoptions [-h server] [-E] -d printer\n lpoptions [-h server] [-E] [-p printer] -l\n lpoptions [-h server] [-E] -p printer -o option[=value] ...\n lpoptions [-h server] [-E] -x printer";
+"Usage: lpoptions [-h server] [-E] -d printer\n lpoptions [-h server] [-E] [-p printer] -l\n lpoptions [-h server] [-E] -p printer -o option[=value] ...\n lpoptions [-h server] [-E] -x printer" = "Usage: lpoptions [-h server] [-E] -d printer\n lpoptions [-h server] [-E] [-p printer] -l\n lpoptions [-h server] [-E] -p printer -o option[=value] …\n lpoptions [-h server] [-E] -x printer";
"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]" = "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]";
-"Usage: ppdc [options] filename.drv [ ... filenameN.drv ]" = "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]";
+"Usage: ppdc [options] filename.drv [ ... filenameN.drv ]" = "Usage: ppdc [options] filename.drv [ … filenameN.drv ]";
"Usage: ppdhtml [options] filename.drv >filename.html" = "Usage: ppdhtml [options] filename.drv >filename.html";
-"Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]" = "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]";
-"Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]" = "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]";
-"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]" = "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]";
+"Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]" = "Usage: ppdi [options] filename.ppd [ … filenameN.ppd ]";
+"Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]" = "Usage: ppdmerge [options] filename.ppd [ … filenameN.ppd ]";
+"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]" = "Usage: ppdpo [options] -o filename.po filename.drv [ … filenameN.drv ]";
"Usage: snmp [host-or-ip-address]" = "Usage: snmp [host-or-ip-address]";
"Value uses indefinite length" = "Value uses indefinite length";
"VarBind uses indefinite length" = "VarBind uses indefinite length";
"completed" = "completed";
"cups-deviced failed to execute." = "cups-deviced failed to execute.";
"cups-driverd failed to execute." = "cups-driverd failed to execute.";
-"cupsaddsmb: No PPD file for printer \"%s\" - %s" = "cupsaddsmb: No PPD file for printer \"%s\" - %s";
+"cupsaddsmb: No PPD file for printer \"%s\" - %s" = "cupsaddsmb: No PPD file for printer “%s” - %s";
"cupsctl: Cannot set Listen or Port directly." = "cupsctl: Cannot set Listen or Port directly.";
"cupsctl: Unable to connect to server: %s" = "cupsctl: Unable to connect to server: %s";
-"cupsctl: Unknown option \"%s\"" = "cupsctl: Unknown option \"%s\"";
-"cupsctl: Unknown option \"-%c\"" = "cupsctl: Unknown option \"-%c\"";
-"cupsd: Expected config filename after \"-c\" option." = "cupsd: Expected config filename after \"-c\" option.";
-"cupsd: Expected cups-files.conf filename after \"-s\" option." = "cupsd: Expected cups-files.conf filename after \"-s\" option.";
+"cupsctl: Unknown option \"%s\"" = "cupsctl: Unknown option “%s”";
+"cupsctl: Unknown option \"-%c\"" = "cupsctl: Unknown option “-%c”";
+"cupsd: Expected config filename after \"-c\" option." = "cupsd: Expected config filename after “-c” option.";
+"cupsd: Expected cups-files.conf filename after \"-s\" option." = "cupsd: Expected cups-files.conf filename after “-s” option.";
"cupsd: On-demand support not compiled in, running in normal mode." = "cupsd: On-demand support not compiled in, running in normal mode.";
"cupsd: Relative cups-files.conf filename not allowed." = "cupsd: Relative cups-files.conf filename not allowed.";
"cupsd: Unable to get current directory." = "cupsd: Unable to get current directory.";
"cupsd: Unable to get path to cups-files.conf file." = "cupsd: Unable to get path to cups-files.conf file.";
-"cupsd: Unknown argument \"%s\" - aborting." = "cupsd: Unknown argument \"%s\" - aborting.";
-"cupsd: Unknown option \"%c\" - aborting." = "cupsd: Unknown option \"%c\" - aborting.";
+"cupsd: Unknown argument \"%s\" - aborting." = "cupsd: Unknown argument “%s” - aborting.";
+"cupsd: Unknown option \"%c\" - aborting." = "cupsd: Unknown option “%c” - aborting.";
"cupsfilter: Invalid document number %d." = "cupsfilter: Invalid document number %d.";
"cupsfilter: Invalid job ID %d." = "cupsfilter: Invalid job ID %d.";
"cupsfilter: Only one filename can be specified." = "cupsfilter: Only one filename can be specified.";
"ippfind: Expected semi-colon after %s." = "ippfind: Expected semi-colon after %s.";
"ippfind: Missing close brace in substitution." = "ippfind: Missing close brace in substitution.";
"ippfind: Missing close parenthesis." = "ippfind: Missing close parenthesis.";
-"ippfind: Missing expression before \"--and\"." = "ippfind: Missing expression before \"--and\".";
-"ippfind: Missing expression before \"--or\"." = "ippfind: Missing expression before \"--or\".";
+"ippfind: Missing expression before \"--and\"." = "ippfind: Missing expression before “--and”.";
+"ippfind: Missing expression before \"--or\"." = "ippfind: Missing expression before “--or”.";
"ippfind: Missing key name after %s." = "ippfind: Missing key name after %s.";
"ippfind: Missing open parenthesis." = "ippfind: Missing open parenthesis.";
"ippfind: Missing program after %s." = "ippfind: Missing program after %s.";
"ippfind: Out of memory." = "ippfind: Out of memory.";
"ippfind: Too many parenthesis." = "ippfind: Too many parenthesis.";
"ippfind: Unable to browse or resolve: %s" = "ippfind: Unable to browse or resolve: %s";
-"ippfind: Unable to execute \"%s\": %s" = "ippfind: Unable to execute \"%s\": %s";
+"ippfind: Unable to execute \"%s\": %s" = "ippfind: Unable to execute “%s”: %s";
"ippfind: Unable to use Bonjour: %s" = "ippfind: Unable to use Bonjour: %s";
-"ippfind: Unknown variable \"{%s}\"." = "ippfind: Unknown variable \"{%s}\".";
-"ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"." = "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\".";
+"ippfind: Unknown variable \"{%s}\"." = "ippfind: Unknown variable “{%s}”.";
+"ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"." = "ipptool: “-i” and “-n” are incompatible with “-P” and “-X”.";
"ipptool: Bad URI - %s." = "ipptool: Bad URI - %s.";
-"ipptool: Invalid seconds for \"-i\"." = "ipptool: Invalid seconds for \"-i\".";
+"ipptool: Invalid seconds for \"-i\"." = "ipptool: Invalid seconds for “-i”.";
"ipptool: May only specify a single URI." = "ipptool: May only specify a single URI.";
-"ipptool: Missing count for \"-n\"." = "ipptool: Missing count for \"-n\".";
-"ipptool: Missing filename for \"-f\"." = "ipptool: Missing filename for \"-f\".";
-"ipptool: Missing name=value for \"-d\"." = "ipptool: Missing name=value for \"-d\".";
-"ipptool: Missing seconds for \"-i\"." = "ipptool: Missing seconds for \"-i\".";
+"ipptool: Missing count for \"-n\"." = "ipptool: Missing count for “-n”.";
+"ipptool: Missing filename for \"-f\"." = "ipptool: Missing filename for “-f”.";
+"ipptool: Missing name=value for \"-d\"." = "ipptool: Missing name=value for “-d”.";
+"ipptool: Missing seconds for \"-i\"." = "ipptool: Missing seconds for “-i”.";
"ipptool: URI required before test file." = "ipptool: URI required before test file.";
-"ipptool: Unknown option \"-%c\"." = "ipptool: Unknown option \"-%c\".";
+"ipptool: Unknown option \"-%c\"." = "ipptool: Unknown option “-%c”.";
"job-printer-uri attribute missing." = "job-printer-uri attribute missing.";
"lpadmin: Class name can only contain printable characters." = "lpadmin: Class name can only contain printable characters.";
-"lpadmin: Expected PPD after \"-P\" option." = "lpadmin: Expected PPD after \"-P\" option.";
-"lpadmin: Expected allow/deny:userlist after \"-u\" option." = "lpadmin: Expected allow/deny:userlist after \"-u\" option.";
-"lpadmin: Expected class after \"-r\" option." = "lpadmin: Expected class after \"-r\" option.";
-"lpadmin: Expected class name after \"-c\" option." = "lpadmin: Expected class name after \"-c\" option.";
-"lpadmin: Expected description after \"-D\" option." = "lpadmin: Expected description after \"-D\" option.";
-"lpadmin: Expected device URI after \"-v\" option." = "lpadmin: Expected device URI after \"-v\" option.";
-"lpadmin: Expected file type(s) after \"-I\" option." = "lpadmin: Expected file type(s) after \"-I\" option.";
-"lpadmin: Expected hostname after \"-h\" option." = "lpadmin: Expected hostname after \"-h\" option.";
-"lpadmin: Expected interface after \"-i\" option." = "lpadmin: Expected interface after \"-i\" option.";
-"lpadmin: Expected location after \"-L\" option." = "lpadmin: Expected location after \"-L\" option.";
-"lpadmin: Expected model after \"-m\" option." = "lpadmin: Expected model after \"-m\" option.";
-"lpadmin: Expected name after \"-R\" option." = "lpadmin: Expected name after \"-R\" option.";
-"lpadmin: Expected name=value after \"-o\" option." = "lpadmin: Expected name=value after \"-o\" option.";
-"lpadmin: Expected printer after \"-p\" option." = "lpadmin: Expected printer after \"-p\" option.";
-"lpadmin: Expected printer name after \"-d\" option." = "lpadmin: Expected printer name after \"-d\" option.";
-"lpadmin: Expected printer or class after \"-x\" option." = "lpadmin: Expected printer or class after \"-x\" option.";
+"lpadmin: Expected PPD after \"-P\" option." = "lpadmin: Expected PPD after “-P” option.";
+"lpadmin: Expected allow/deny:userlist after \"-u\" option." = "lpadmin: Expected allow/deny:userlist after “-u” option.";
+"lpadmin: Expected class after \"-r\" option." = "lpadmin: Expected class after “-r” option.";
+"lpadmin: Expected class name after \"-c\" option." = "lpadmin: Expected class name after “-c” option.";
+"lpadmin: Expected description after \"-D\" option." = "lpadmin: Expected description after “-D” option.";
+"lpadmin: Expected device URI after \"-v\" option." = "lpadmin: Expected device URI after “-v” option.";
+"lpadmin: Expected file type(s) after \"-I\" option." = "lpadmin: Expected file type(s) after “-I” option.";
+"lpadmin: Expected hostname after \"-h\" option." = "lpadmin: Expected hostname after “-h” option.";
+"lpadmin: Expected interface after \"-i\" option." = "lpadmin: Expected interface after “-i” option.";
+"lpadmin: Expected location after \"-L\" option." = "lpadmin: Expected location after “-L” option.";
+"lpadmin: Expected model after \"-m\" option." = "lpadmin: Expected model after “-m” option.";
+"lpadmin: Expected name after \"-R\" option." = "lpadmin: Expected name after “-R” option.";
+"lpadmin: Expected name=value after \"-o\" option." = "lpadmin: Expected name=value after “-o” option.";
+"lpadmin: Expected printer after \"-p\" option." = "lpadmin: Expected printer after “-p” option.";
+"lpadmin: Expected printer name after \"-d\" option." = "lpadmin: Expected printer name after “-d” option.";
+"lpadmin: Expected printer or class after \"-x\" option." = "lpadmin: Expected printer or class after “-x” option.";
"lpadmin: No member names were seen." = "lpadmin: No member names were seen.";
"lpadmin: Printer %s is already a member of class %s." = "lpadmin: Printer %s is already a member of class %s.";
"lpadmin: Printer %s is not a member of class %s." = "lpadmin: Printer %s is not a member of class %s.";
"lpadmin: Unable to connect to server: %s" = "lpadmin: Unable to connect to server: %s";
"lpadmin: Unable to create temporary file" = "lpadmin: Unable to create temporary file";
"lpadmin: Unable to delete option:\n You must specify a printer name first." = "lpadmin: Unable to delete option:\n You must specify a printer name first.";
-"lpadmin: Unable to open PPD \"%s\": %s on line %d." = "lpadmin: Unable to open PPD \"%s\": %s on line %d.";
-"lpadmin: Unable to open PPD file \"%s\" - %s" = "lpadmin: Unable to open PPD file \"%s\" - %s";
+"lpadmin: Unable to open PPD \"%s\": %s on line %d." = "lpadmin: Unable to open PPD “%s”: %s on line %d.";
+"lpadmin: Unable to open PPD file \"%s\" - %s" = "lpadmin: Unable to open PPD file “%s” - %s";
"lpadmin: Unable to remove a printer from the class:\n You must specify a printer name first." = "lpadmin: Unable to remove a printer from the class:\n You must specify a printer name first.";
"lpadmin: Unable to set the printer options:\n You must specify a printer name first." = "lpadmin: Unable to set the printer options:\n You must specify a printer name first.";
-"lpadmin: Unknown allow/deny option \"%s\"." = "lpadmin: Unknown allow/deny option \"%s\".";
-"lpadmin: Unknown argument \"%s\"." = "lpadmin: Unknown argument \"%s\".";
-"lpadmin: Unknown option \"%c\"." = "lpadmin: Unknown option \"%c\".";
+"lpadmin: Unknown allow/deny option \"%s\"." = "lpadmin: Unknown allow/deny option “%s”.";
+"lpadmin: Unknown argument \"%s\"." = "lpadmin: Unknown argument “%s”.";
+"lpadmin: Unknown option \"%c\"." = "lpadmin: Unknown option “%c”.";
"lpadmin: Warning - content type list ignored." = "lpadmin: Warning - content type list ignored.";
"lpc> " = "lpc> ";
-"lpinfo: Expected 1284 device ID string after \"--device-id\"." = "lpinfo: Expected 1284 device ID string after \"--device-id\".";
-"lpinfo: Expected language after \"--language\"." = "lpinfo: Expected language after \"--language\".";
-"lpinfo: Expected make and model after \"--make-and-model\"." = "lpinfo: Expected make and model after \"--make-and-model\".";
-"lpinfo: Expected product string after \"--product\"." = "lpinfo: Expected product string after \"--product\".";
-"lpinfo: Expected scheme list after \"--exclude-schemes\"." = "lpinfo: Expected scheme list after \"--exclude-schemes\".";
-"lpinfo: Expected scheme list after \"--include-schemes\"." = "lpinfo: Expected scheme list after \"--include-schemes\".";
-"lpinfo: Expected timeout after \"--timeout\"." = "lpinfo: Expected timeout after \"--timeout\".";
-"lpinfo: Unknown argument \"%s\"." = "lpinfo: Unknown argument \"%s\".";
-"lpinfo: Unknown option \"%c\"." = "lpinfo: Unknown option \"%c\".";
-"lpinfo: Unknown option \"%s\"." = "lpinfo: Unknown option \"%s\".";
+"lpinfo: Expected 1284 device ID string after \"--device-id\"." = "lpinfo: Expected 1284 device ID string after “--device-id”.";
+"lpinfo: Expected language after \"--language\"." = "lpinfo: Expected language after “--language”.";
+"lpinfo: Expected make and model after \"--make-and-model\"." = "lpinfo: Expected make and model after “--make-and-model”.";
+"lpinfo: Expected product string after \"--product\"." = "lpinfo: Expected product string after “--product”.";
+"lpinfo: Expected scheme list after \"--exclude-schemes\"." = "lpinfo: Expected scheme list after “--exclude-schemes”.";
+"lpinfo: Expected scheme list after \"--include-schemes\"." = "lpinfo: Expected scheme list after “--include-schemes”.";
+"lpinfo: Expected timeout after \"--timeout\"." = "lpinfo: Expected timeout after “--timeout”.";
+"lpinfo: Unknown argument \"%s\"." = "lpinfo: Unknown argument “%s”.";
+"lpinfo: Unknown option \"%c\"." = "lpinfo: Unknown option “%c”.";
+"lpinfo: Unknown option \"%s\"." = "lpinfo: Unknown option “%s”.";
"lpmove: Unable to connect to server: %s" = "lpmove: Unable to connect to server: %s";
-"lpmove: Unknown argument \"%s\"." = "lpmove: Unknown argument \"%s\".";
-"lpmove: Unknown option \"%c\"." = "lpmove: Unknown option \"%c\".";
+"lpmove: Unknown argument \"%s\"." = "lpmove: Unknown argument “%s”.";
+"lpmove: Unknown option \"%c\"." = "lpmove: Unknown option “%c”.";
"lpoptions: No printers." = "lpoptions: No printers.";
"lpoptions: Unable to add printer or instance: %s" = "lpoptions: Unable to add printer or instance: %s";
"lpoptions: Unable to get PPD file for %s: %s" = "lpoptions: Unable to get PPD file for %s: %s";
"lpoptions: Unable to open PPD file for %s." = "lpoptions: Unable to open PPD file for %s.";
"lpoptions: Unknown printer or class." = "lpoptions: Unknown printer or class.";
-"lpstat: error - %s environment variable names non-existent destination \"%s\"." = "lpstat: error - %s environment variable names non-existent destination \"%s\".";
+"lpstat: error - %s environment variable names non-existent destination \"%s\"." = "lpstat: error - %s environment variable names non-existent destination “%s”.";
"members of class %s:" = "members of class %s:";
"no entries" = "no entries";
"no system default destination" = "no system default destination";
"notify-events not specified." = "notify-events not specified.";
-"notify-recipient-uri URI \"%s\" is already used." = "notify-recipient-uri URI \"%s\" is already used.";
-"notify-recipient-uri URI \"%s\" uses unknown scheme." = "notify-recipient-uri URI \"%s\" uses unknown scheme.";
+"notify-recipient-uri URI \"%s\" is already used." = "notify-recipient-uri URI “%s” is already used.";
+"notify-recipient-uri URI \"%s\" uses unknown scheme." = "notify-recipient-uri URI “%s” uses unknown scheme.";
"pending" = "pending";
-"ppdc: Adding include directory \"%s\"." = "ppdc: Adding include directory \"%s\".";
+"ppdc: Adding include directory \"%s\"." = "ppdc: Adding include directory “%s”.";
"ppdc: Adding/updating UI text from %s." = "ppdc: Adding/updating UI text from %s.";
"ppdc: Bad boolean value (%s) on line %d of %s." = "ppdc: Bad boolean value (%s) on line %d of %s.";
"ppdc: Bad font attribute: %s" = "ppdc: Bad font attribute: %s";
-"ppdc: Bad resolution name \"%s\" on line %d of %s." = "ppdc: Bad resolution name \"%s\" on line %d of %s.";
+"ppdc: Bad resolution name \"%s\" on line %d of %s." = "ppdc: Bad resolution name “%s” on line %d of %s.";
"ppdc: Bad status keyword %s on line %d of %s." = "ppdc: Bad status keyword %s on line %d of %s.";
"ppdc: Bad variable substitution ($%c) on line %d of %s." = "ppdc: Bad variable substitution ($%c) on line %d of %s.";
"ppdc: Choice found on line %d of %s with no Option." = "ppdc: Choice found on line %d of %s with no Option.";
"ppdc: Expected two option names on line %d of %s." = "ppdc: Expected two option names on line %d of %s.";
"ppdc: Expected value after %s on line %d of %s." = "ppdc: Expected value after %s on line %d of %s.";
"ppdc: Expected version after Font on line %d of %s." = "ppdc: Expected version after Font on line %d of %s.";
-"ppdc: Invalid #include/#po filename \"%s\"." = "ppdc: Invalid #include/#po filename \"%s\".";
+"ppdc: Invalid #include/#po filename \"%s\"." = "ppdc: Invalid #include/#po filename “%s”.";
"ppdc: Invalid cost for filter on line %d of %s." = "ppdc: Invalid cost for filter on line %d of %s.";
"ppdc: Invalid empty MIME type for filter on line %d of %s." = "ppdc: Invalid empty MIME type for filter on line %d of %s.";
"ppdc: Invalid empty program name for filter on line %d of %s." = "ppdc: Invalid empty program name for filter on line %d of %s.";
-"ppdc: Invalid option section \"%s\" on line %d of %s." = "ppdc: Invalid option section \"%s\" on line %d of %s.";
-"ppdc: Invalid option type \"%s\" on line %d of %s." = "ppdc: Invalid option type \"%s\" on line %d of %s.";
-"ppdc: Loading driver information file \"%s\"." = "ppdc: Loading driver information file \"%s\".";
-"ppdc: Loading messages for locale \"%s\"." = "ppdc: Loading messages for locale \"%s\".";
-"ppdc: Loading messages from \"%s\"." = "ppdc: Loading messages from \"%s\".";
-"ppdc: Missing #endif at end of \"%s\"." = "ppdc: Missing #endif at end of \"%s\".";
+"ppdc: Invalid option section \"%s\" on line %d of %s." = "ppdc: Invalid option section “%s” on line %d of %s.";
+"ppdc: Invalid option type \"%s\" on line %d of %s." = "ppdc: Invalid option type “%s” on line %d of %s.";
+"ppdc: Loading driver information file \"%s\"." = "ppdc: Loading driver information file “%s”.";
+"ppdc: Loading messages for locale \"%s\"." = "ppdc: Loading messages for locale “%s”.";
+"ppdc: Loading messages from \"%s\"." = "ppdc: Loading messages from “%s”.";
+"ppdc: Missing #endif at end of \"%s\"." = "ppdc: Missing #endif at end of “%s”.";
"ppdc: Missing #if on line %d of %s." = "ppdc: Missing #if on line %d of %s.";
"ppdc: Need a msgid line before any translation strings on line %d of %s." = "ppdc: Need a msgid line before any translation strings on line %d of %s.";
"ppdc: No message catalog provided for locale %s." = "ppdc: No message catalog provided for locale %s.";
"ppdc: Option %s redefined with a different type on line %d of %s." = "ppdc: Option %s redefined with a different type on line %d of %s.";
"ppdc: Option constraint must *name on line %d of %s." = "ppdc: Option constraint must *name on line %d of %s.";
"ppdc: Too many nested #if's on line %d of %s." = "ppdc: Too many nested #if's on line %d of %s.";
-"ppdc: Unable to create PPD file \"%s\" - %s." = "ppdc: Unable to create PPD file \"%s\" - %s.";
+"ppdc: Unable to create PPD file \"%s\" - %s." = "ppdc: Unable to create PPD file “%s” - %s.";
"ppdc: Unable to create output directory %s: %s" = "ppdc: Unable to create output directory %s: %s";
"ppdc: Unable to create output pipes: %s" = "ppdc: Unable to create output pipes: %s";
"ppdc: Unable to execute cupstestppd: %s" = "ppdc: Unable to execute cupstestppd: %s";
"ppdc: Unable to find #po file %s on line %d of %s." = "ppdc: Unable to find #po file %s on line %d of %s.";
-"ppdc: Unable to find include file \"%s\" on line %d of %s." = "ppdc: Unable to find include file \"%s\" on line %d of %s.";
-"ppdc: Unable to find localization for \"%s\" - %s" = "ppdc: Unable to find localization for \"%s\" - %s";
-"ppdc: Unable to load localization file \"%s\" - %s" = "ppdc: Unable to load localization file \"%s\" - %s";
+"ppdc: Unable to find include file \"%s\" on line %d of %s." = "ppdc: Unable to find include file “%s” on line %d of %s.";
+"ppdc: Unable to find localization for \"%s\" - %s" = "ppdc: Unable to find localization for “%s” - %s";
+"ppdc: Unable to load localization file \"%s\" - %s" = "ppdc: Unable to load localization file “%s” - %s";
"ppdc: Unable to open %s: %s" = "ppdc: Unable to open %s: %s";
"ppdc: Undefined variable (%s) on line %d of %s." = "ppdc: Undefined variable (%s) on line %d of %s.";
"ppdc: Unexpected text on line %d of %s." = "ppdc: Unexpected text on line %d of %s.";
"ppdc: Unknown driver type %s on line %d of %s." = "ppdc: Unknown driver type %s on line %d of %s.";
-"ppdc: Unknown duplex type \"%s\" on line %d of %s." = "ppdc: Unknown duplex type \"%s\" on line %d of %s.";
-"ppdc: Unknown media size \"%s\" on line %d of %s." = "ppdc: Unknown media size \"%s\" on line %d of %s.";
-"ppdc: Unknown message catalog format for \"%s\"." = "ppdc: Unknown message catalog format for \"%s\".";
-"ppdc: Unknown token \"%s\" seen on line %d of %s." = "ppdc: Unknown token \"%s\" seen on line %d of %s.";
-"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s." = "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s.";
+"ppdc: Unknown duplex type \"%s\" on line %d of %s." = "ppdc: Unknown duplex type “%s” on line %d of %s.";
+"ppdc: Unknown media size \"%s\" on line %d of %s." = "ppdc: Unknown media size “%s” on line %d of %s.";
+"ppdc: Unknown message catalog format for \"%s\"." = "ppdc: Unknown message catalog format for “%s”.";
+"ppdc: Unknown token \"%s\" seen on line %d of %s." = "ppdc: Unknown token “%s” seen on line %d of %s.";
+"ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s." = "ppdc: Unknown trailing characters in real number “%s” on line %d of %s.";
"ppdc: Unterminated string starting with %c on line %d of %s." = "ppdc: Unterminated string starting with %c on line %d of %s.";
-"ppdc: Warning - overlapping filename \"%s\"." = "ppdc: Warning - overlapping filename \"%s\".";
+"ppdc: Warning - overlapping filename \"%s\"." = "ppdc: Warning - overlapping filename “%s”.";
"ppdc: Writing %s." = "ppdc: Writing %s.";
-"ppdc: Writing PPD files to directory \"%s\"." = "ppdc: Writing PPD files to directory \"%s\".";
-"ppdmerge: Bad LanguageVersion \"%s\" in %s." = "ppdmerge: Bad LanguageVersion \"%s\" in %s.";
+"ppdc: Writing PPD files to directory \"%s\"." = "ppdc: Writing PPD files to directory “%s”.";
+"ppdmerge: Bad LanguageVersion \"%s\" in %s." = "ppdmerge: Bad LanguageVersion “%s” in %s.";
"ppdmerge: Ignoring PPD file %s." = "ppdmerge: Ignoring PPD file %s.";
"ppdmerge: Unable to backup %s to %s - %s" = "ppdmerge: Unable to backup %s to %s - %s";
"printer %s disabled since %s -" = "printer %s disabled since %s -";
msgstr ""
"Project-Id-Version: CUPS 1.4.6\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: 2012-09-29 11:21+0200\n"
"Last-Translator: Àngel Mompó <mecatxis@gmail.com>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
msgid "Long-Edge (Portrait)"
msgstr "Costat-llarg (vertical)"
-msgid "Looking for printer."
-msgstr "S'està buscant la impressora."
+msgid "Looking for printer..."
+msgstr ""
msgid "Manual Feed"
msgstr "Alimentació manual"
#~ msgid "Large Address - 1 4/10 x 3 1/2\""
#~ msgstr "Adreça gran - 1 4/10 x 3 1/2\""
+#~ msgid "Looking for printer."
+#~ msgstr "S'està buscant la impressora."
+
#~ msgid "New Stylus Color Series"
#~ msgstr "Sèrie New Stylus Color"
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: 2012-09-14 10:26+0100\n"
"Last-Translator: Jan Bartos <jan.bartos@madeta.cz>\n"
"Language-Team: Czech\n"
msgid "Long-Edge (Portrait)"
msgstr "Delší okraj (na výšku)"
-msgid "Looking for printer."
+msgid "Looking for printer..."
msgstr ""
msgid "Manual Feed"
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: 2015-05-09 22:25+0100\n"
"Last-Translator: Joachim Schwender <joachim.schwender@web.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "Long-Edge (Portrait)"
msgstr "Lange Kante (Hochformat)"
-msgid "Looking for printer."
-msgstr "Suche nach Drucker."
+msgid "Looking for printer..."
+msgstr ""
msgid "Manual Feed"
msgstr "Manuelle Papierzufuhr"
#~ msgid "Enter password:"
#~ msgstr "Neues Passwort eingeben :"
+#~ msgid "Looking for printer."
+#~ msgstr "Suche nach Drucker."
+
#~ msgid "New Stylus Color Series"
#~ msgstr "Neue Stylus Color Serie"
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: 2014-09-23 23:45+0100\n"
"Last-Translator: Juan Pablo González Riopedre <jpgriopedre@yahoo.es>\n"
"Language-Team: Spanish\n"
msgid "Long-Edge (Portrait)"
msgstr "Lado largo (retrato)"
-msgid "Looking for printer."
-msgstr "Buscando impresora."
+msgid "Looking for printer..."
+msgstr ""
msgid "Manual Feed"
msgstr "Alimentación manual"
msgid "variable-bindings uses indefinite length"
msgstr "variable-bindings usa una longitud indefinida"
+#~ msgid "Looking for printer."
+#~ msgstr "Buscando impresora."
+
#~ msgid ""
#~ "The '%s' Job Description attribute cannot be supplied in a job creation "
#~ "request."
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: 2012-12-12 11:12+0100\n"
"Last-Translator: denis meramdjougoma <dcmeram@libertysurf.fr>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "Long-Edge (Portrait)"
msgstr "Bord le plus long (Portrait)"
-msgid "Looking for printer."
+msgid "Looking for printer..."
msgstr ""
msgid "Manual Feed"
msgstr ""
"Project-Id-Version: CUPS 1.6\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: 2013-07-14 12:00+0200\n"
"Last-Translator: Giovanni Scafora <giovanni@archlinux.org>\n"
"Language-Team: Arch Linux Italian Team <giovanni@archlinux.org>\n"
msgid "Long-Edge (Portrait)"
msgstr "Long-Edge (Portrait)"
-msgid "Looking for printer."
-msgstr "Cerca una stampante."
+msgid "Looking for printer..."
+msgstr ""
msgid "Manual Feed"
msgstr "Alimentazione manuale"
#~ msgid "Enter password:"
#~ msgstr "Digitare la password:"
+#~ msgid "Looking for printer."
+#~ msgstr "Cerca una stampante."
+
#~ msgid "New Stylus Color Series"
#~ msgstr "Nuova Stylus Color Series"
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: 2014-11-15 19:27+0900\n"
"Last-Translator: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
"Language-Team: OPFC TRANSCUPS <opfc-transcups@sourceforge.jp>\n"
msgid "Long-Edge (Portrait)"
msgstr "長辺給紙 (縦向き)"
-msgid "Looking for printer."
-msgstr "プリンターを探しています。"
+msgid "Looking for printer..."
+msgstr ""
msgid "Manual Feed"
msgstr "手差し"
#~ msgid "Enter password:"
#~ msgstr "パスワードを入力:"
+#~ msgid "Looking for printer."
+#~ msgstr "プリンターを探しています。"
+
#~ msgid "New Stylus Color Series"
#~ msgstr "New Stylus Color シリーズ"
msgstr ""
"Project-Id-Version: CUPS 2.0\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-06-08 17:14-0400\n"
+"POT-Creation-Date: 2015-07-20 14:24-0400\n"
"PO-Revision-Date: 2015-01-28 12:00-0800\n"
"Last-Translator: Aleksandr Proklov\n"
"Language-Team: PuppyRus Linux Team\n"
msgid "Long-Edge (Portrait)"
msgstr "По длинной стороне (книжная)"
-msgid "Looking for printer."
-msgstr "Поиск принтера."
+msgid "Looking for printer..."
+msgstr ""
msgid "Manual Feed"
msgstr "Ручная подача"
#~ " Комментарий %%EndComments отсутствует.\n"
#~ " REF: Стр. 41, %%EndComments"
+#~ msgid "Looking for printer."
+#~ msgstr "Поиск принтера."
+
#~ msgid ""
#~ "The '%s' Job Description attribute cannot be supplied in a job creation "
#~ "request."
/*
- * "$Id: po2strings.c 11558 2014-02-06 18:33:34Z msweet $"
+ * "$Id: po2strings.c 12794 2015-07-20 18:26:20Z msweet $"
*
* Convert a GNU gettext .po file to an Apple .strings file.
*
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* characters like newline and the double quote character.
*/
+static char *normalize_string(const char *idstr, char *buffer, size_t bufsize);
+
+
/*
* main() - Convert .po file to .strings.
*/
*ptr, /* Pointer into buffer */
*temp, /* New string */
*msgid, /* msgid string */
- *msgstr; /* msgstr string */
+ *msgstr, /* msgstr string */
+ normalized[8192];/* Normalized msgid string */
size_t length; /* Length of combined strings */
int use_msgid; /* Use msgid strings for msgstr? */
if (msgid && msgstr)
{
if (*msgid)
- cupsFilePrintf(strings, "\"%s\" = \"%s\";\n", msgid,
- (use_msgid || !*msgstr) ? msgid : msgstr);
+ cupsFilePrintf(strings, "\"%s\" = \"%s\";\n", msgid, normalize_string((use_msgid || !*msgstr) ? msgid : msgstr, normalized, sizeof(normalized)));
}
if (msgid)
if (msgid && msgstr)
{
if (*msgid)
- cupsFilePrintf(strings, "\"%s\" = \"%s\";\n", msgid,
- (use_msgid || !*msgstr) ? msgid : msgstr);
+ cupsFilePrintf(strings, "\"%s\" = \"%s\";\n", msgid, normalize_string((use_msgid || !*msgstr) ? msgid : msgstr, normalized, sizeof(normalized)));
}
if (msgid)
/*
- * End of "$Id: po2strings.c 11558 2014-02-06 18:33:34Z msweet $".
+ * 'normalize_string()' - Normalize a msgid string.
+ *
+ * This function converts ASCII ellipsis and double quotes to their Unicode
+ * counterparts.
+ */
+
+static char * /* O - Normalized string */
+normalize_string(const char *idstr, /* I - msgid string */
+ char *buffer, /* I - Normalized string buffer */
+ size_t bufsize) /* I - Size of string buffer */
+{
+ char *bufptr = buffer, /* Pointer into buffer */
+ *bufend = buffer + bufsize - 3; /* End of buffer */
+ int quote = 0, /* Quote direction */
+ html = 0; /* HTML text */
+
+
+ while (*idstr && bufptr < bufend)
+ {
+ if (!strncmp(idstr, "<A ", 3))
+ html = 1;
+ else if (html && *idstr == '>')
+ html = 0;
+
+ if (*idstr == '.' && idstr[1] == '.' && idstr[2] == '.')
+ {
+ /*
+ * Convert ... to Unicode ellipsis...
+ */
+
+ *bufptr++ = (char)0xE2;
+ *bufptr++ = (char)0x80;
+ *bufptr++ = (char)0xA6;
+ idstr += 2;
+ }
+ else if (!html && *idstr == '\\' && idstr[1] == '\"' && (quote || strchr(idstr + 2, '\"') != NULL))
+ {
+ if (quote)
+ {
+ /*
+ * Convert \" to Unicode right (curley) double quote.
+ */
+
+ *bufptr++ = (char)0xE2;
+ *bufptr++ = (char)0x80;
+ *bufptr++ = (char)0x9D;
+ }
+ else
+ {
+ /*
+ * Convert \" to Unicode left (curley) double quote.
+ */
+
+ *bufptr++ = (char)0xE2;
+ *bufptr++ = (char)0x80;
+ *bufptr++ = (char)0x9C;
+ }
+
+ quote = !quote;
+ idstr ++;
+ }
+ else
+ *bufptr++ = *idstr;
+
+ idstr ++;
+ }
+
+ *bufptr = '\0';
+
+ return (buffer);
+}
+
+
+/*
+ * End of "$Id: po2strings.c 12794 2015-07-20 18:26:20Z msweet $".
*/
#
-# "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $"
+# "$Id: Makefile 12814 2015-07-30 15:03:33Z 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
cups-files.conf.$(MAN5EXT) \
cups-snmp.conf.$(MAN5EXT) \
cupsd.conf.$(MAN5EXT) \
+ cupsd-logs.$(MAN5EXT) \
ipptoolfile.$(MAN5EXT) \
mailto.conf.$(MAN5EXT) \
mime.convs.$(MAN5EXT) \
cups-snmp.$(MAN8EXT) \
cupsd.$(MAN8EXT) \
cupsd-helper.$(MAN8EXT) \
- cupsd-logs.$(MAN8EXT) \
cupsenable.$(MAN8EXT) \
lpadmin.$(MAN8EXT) \
lpinfo.$(MAN8EXT) \
#
-# End of "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $".
+# End of "$Id: Makefile 12814 2015-07-30 15:03:33Z msweet $".
#
.\"
-.\" "$Id: cupsd.conf.man.in 12362 2014-12-12 19:50:49Z msweet $"
+.\" "$Id: cupsd.conf.man.in 12767 2015-06-30 15:57:39Z 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
.\" 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
"%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]
.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 12362 2014-12-12 19:50:49Z msweet $".
+.\" End of "$Id: cupsd.conf.man.in 12767 2015-06-30 15:57:39Z msweet $".
.\"
Summary: CUPS
Name: cups
-Version: 2.1b1
+Version: 2.1rc1
Release: 1
Epoch: 1
License: GPL
Group: System Environment/Daemons
-Source: http://www.cups.org/software/2.1b1/cups-2.1b1-source.tar.bz2
+Source: http://www.cups.org/software/2.1rc1/cups-2.1rc1-source.tar.bz2
Url: http://www.cups.org
Packager: Anonymous <anonymous@foo.com>
Vendor: Apple Inc.
//
-// "$Id: sample.drv 12201 2014-10-15 19:11:12Z msweet $"
+// "$Id: sample.drv 12789 2015-07-20 14:51:28Z msweet $"
//
// Driver info file for CUPS-supplied PPDs.
//
Font *
-Version "2.0"
+Version "2.1"
// Dymo Label Printer
{
}
//
-// End of "$Id: sample.drv 12201 2014-10-15 19:11:12Z msweet $".
+// End of "$Id: sample.drv 12789 2015-07-20 14:51:28Z msweet $".
//
/*
- * "$Id: client.c 12700 2015-06-08 18:32:35Z msweet $"
+ * "$Id: client.c 12751 2015-06-24 18:22:32Z msweet $"
*
* Client routines for the CUPS scheduler.
*
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);
* 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);
/*
- * End of "$Id: client.c 12700 2015-06-08 18:32:35Z msweet $".
+ * End of "$Id: client.c 12751 2015-06-24 18:22:32Z msweet $".
*/
/*
- * "$Id: conf.c 12689 2015-06-03 19:49:54Z msweet $"
+ * "$Id: conf.c 12819 2015-07-31 13:52:00Z msweet $"
*
* Configuration routines for the CUPS scheduler.
*
* Verify that we have an explicit policy for Validate-Job, Cancel-Jobs,
* Cancel-My-Jobs, Close-Job, and CUPS-Get-Document, which ensures that
* upgrades do not introduce new security issues...
+ *
+ * CUPS STR #4659: Allow a lone <Limit All> policy.
*/
- if ((op = cupsdFindPolicyOp(pol, IPP_VALIDATE_JOB)) == NULL ||
- op->op == IPP_ANY_OPERATION)
+ if (cupsArrayCount(pol->ops) > 1)
{
- if ((op = cupsdFindPolicyOp(pol, IPP_PRINT_JOB)) != NULL &&
- op->op != IPP_ANY_OPERATION)
+ if ((op = cupsdFindPolicyOp(pol, IPP_VALIDATE_JOB)) == NULL ||
+ op->op == IPP_ANY_OPERATION)
{
- /*
- * Add a new limit for Validate-Job using the Print-Job limit as a
- * template...
- */
+ if ((op = cupsdFindPolicyOp(pol, IPP_PRINT_JOB)) != NULL &&
+ op->op != IPP_ANY_OPERATION)
+ {
+ /*
+ * Add a new limit for Validate-Job using the Print-Job limit as a
+ * template...
+ */
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for Validate-Job defined in policy %s "
- "- using Print-Job's policy.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for Validate-Job defined in policy %s - using Print-Job's policy.", pol->name);
- cupsdAddPolicyOp(pol, op, IPP_VALIDATE_JOB);
+ cupsdAddPolicyOp(pol, op, IPP_VALIDATE_JOB);
+ }
+ else
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for Validate-Job defined in policy %s and no suitable template found.", pol->name);
}
- else
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for Validate-Job defined in policy %s "
- "and no suitable template found.", pol->name);
- }
- if ((op = cupsdFindPolicyOp(pol, IPP_CANCEL_JOBS)) == NULL ||
- op->op == IPP_ANY_OPERATION)
- {
- if ((op = cupsdFindPolicyOp(pol, IPP_PAUSE_PRINTER)) != NULL &&
- op->op != IPP_ANY_OPERATION)
+ if ((op = cupsdFindPolicyOp(pol, IPP_CANCEL_JOBS)) == NULL ||
+ op->op == IPP_ANY_OPERATION)
{
- /*
- * Add a new limit for Cancel-Jobs using the Pause-Printer limit as a
- * template...
- */
+ if ((op = cupsdFindPolicyOp(pol, IPP_PAUSE_PRINTER)) != NULL &&
+ op->op != IPP_ANY_OPERATION)
+ {
+ /*
+ * Add a new limit for Cancel-Jobs using the Pause-Printer limit as a
+ * template...
+ */
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for Cancel-Jobs defined in policy %s "
- "- using Pause-Printer's policy.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for Cancel-Jobs defined in policy %s - using Pause-Printer's policy.", pol->name);
- cupsdAddPolicyOp(pol, op, IPP_CANCEL_JOBS);
+ cupsdAddPolicyOp(pol, op, IPP_CANCEL_JOBS);
+ }
+ else
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for Cancel-Jobs defined in policy %s and no suitable template found.", pol->name);
}
- else
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for Cancel-Jobs defined in policy %s "
- "and no suitable template found.", pol->name);
- }
- if ((op = cupsdFindPolicyOp(pol, IPP_CANCEL_MY_JOBS)) == NULL ||
- op->op == IPP_ANY_OPERATION)
- {
- if ((op = cupsdFindPolicyOp(pol, IPP_SEND_DOCUMENT)) != NULL &&
- op->op != IPP_ANY_OPERATION)
+ if ((op = cupsdFindPolicyOp(pol, IPP_CANCEL_MY_JOBS)) == NULL ||
+ op->op == IPP_ANY_OPERATION)
{
- /*
- * Add a new limit for Cancel-My-Jobs using the Send-Document limit as
- * a template...
- */
+ if ((op = cupsdFindPolicyOp(pol, IPP_SEND_DOCUMENT)) != NULL &&
+ op->op != IPP_ANY_OPERATION)
+ {
+ /*
+ * Add a new limit for Cancel-My-Jobs using the Send-Document limit as
+ * a template...
+ */
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for Cancel-My-Jobs defined in policy %s "
- "- using Send-Document's policy.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for Cancel-My-Jobs defined in policy %s - using Send-Document's policy.", pol->name);
- cupsdAddPolicyOp(pol, op, IPP_CANCEL_MY_JOBS);
+ cupsdAddPolicyOp(pol, op, IPP_CANCEL_MY_JOBS);
+ }
+ else
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for Cancel-My-Jobs defined in policy %s and no suitable template found.", pol->name);
}
- else
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for Cancel-My-Jobs defined in policy %s "
- "and no suitable template found.", pol->name);
- }
- if ((op = cupsdFindPolicyOp(pol, IPP_CLOSE_JOB)) == NULL ||
- op->op == IPP_ANY_OPERATION)
- {
- if ((op = cupsdFindPolicyOp(pol, IPP_SEND_DOCUMENT)) != NULL &&
- op->op != IPP_ANY_OPERATION)
+ if ((op = cupsdFindPolicyOp(pol, IPP_CLOSE_JOB)) == NULL ||
+ op->op == IPP_ANY_OPERATION)
{
- /*
- * Add a new limit for Close-Job using the Send-Document limit as a
- * template...
- */
+ if ((op = cupsdFindPolicyOp(pol, IPP_SEND_DOCUMENT)) != NULL &&
+ op->op != IPP_ANY_OPERATION)
+ {
+ /*
+ * Add a new limit for Close-Job using the Send-Document limit as a
+ * template...
+ */
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for Close-Job defined in policy %s "
- "- using Send-Document's policy.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for Close-Job defined in policy %s - using Send-Document's policy.", pol->name);
- cupsdAddPolicyOp(pol, op, IPP_CLOSE_JOB);
+ cupsdAddPolicyOp(pol, op, IPP_CLOSE_JOB);
+ }
+ else
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for Close-Job defined in policy %s and no suitable template found.", pol->name);
}
- else
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for Close-Job defined in policy %s "
- "and no suitable template found.", pol->name);
- }
- if ((op = cupsdFindPolicyOp(pol, CUPS_GET_DOCUMENT)) == NULL ||
- op->op == IPP_ANY_OPERATION)
- {
- if ((op = cupsdFindPolicyOp(pol, IPP_SEND_DOCUMENT)) != NULL &&
- op->op != IPP_ANY_OPERATION)
+ if ((op = cupsdFindPolicyOp(pol, CUPS_GET_DOCUMENT)) == NULL ||
+ op->op == IPP_ANY_OPERATION)
{
- /*
- * Add a new limit for CUPS-Get-Document using the Send-Document
- * limit as a template...
- */
+ if ((op = cupsdFindPolicyOp(pol, IPP_SEND_DOCUMENT)) != NULL &&
+ op->op != IPP_ANY_OPERATION)
+ {
+ /*
+ * Add a new limit for CUPS-Get-Document using the Send-Document
+ * limit as a template...
+ */
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for CUPS-Get-Document defined in policy %s "
- "- using Send-Document's policy.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for CUPS-Get-Document defined in policy %s - using Send-Document's policy.", pol->name);
- cupsdAddPolicyOp(pol, op, CUPS_GET_DOCUMENT);
+ cupsdAddPolicyOp(pol, op, CUPS_GET_DOCUMENT);
+ }
+ else
+ cupsdLogMessage(CUPSD_LOG_WARN, "No limit for CUPS-Get-Document defined in policy %s and no suitable template found.", pol->name);
}
- else
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No limit for CUPS-Get-Document defined in policy %s "
- "and no suitable template found.", pol->name);
}
/*
if (!pol->job_access)
{
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No JobPrivateAccess defined in policy %s "
- "- using defaults.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No JobPrivateAccess defined in policy %s - using defaults.", pol->name);
cupsdAddString(&(pol->job_access), "@OWNER");
cupsdAddString(&(pol->job_access), "@SYSTEM");
}
if (!pol->job_attrs)
{
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No JobPrivateValues defined in policy %s "
- "- using defaults.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No JobPrivateValues defined in policy %s - using defaults.", pol->name);
cupsdAddString(&(pol->job_attrs), "job-name");
cupsdAddString(&(pol->job_attrs), "job-originating-host-name");
cupsdAddString(&(pol->job_attrs), "job-originating-user-name");
if (!pol->sub_access)
{
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No SubscriptionPrivateAccess defined in policy %s "
- "- using defaults.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No SubscriptionPrivateAccess defined in policy %s - using defaults.", pol->name);
cupsdAddString(&(pol->sub_access), "@OWNER");
cupsdAddString(&(pol->sub_access), "@SYSTEM");
}
if (!pol->sub_attrs)
{
- cupsdLogMessage(CUPSD_LOG_WARN,
- "No SubscriptionPrivateValues defined in policy %s "
- "- using defaults.", pol->name);
+ cupsdLogMessage(CUPSD_LOG_WARN, "No SubscriptionPrivateValues defined in policy %s - using defaults.", pol->name);
cupsdAddString(&(pol->sub_attrs), "notify-events");
cupsdAddString(&(pol->sub_attrs), "notify-pull-method");
cupsdAddString(&(pol->sub_attrs), "notify-recipient-uri");
/*
- * End of "$Id: conf.c 12689 2015-06-03 19:49:54Z msweet $".
+ * End of "$Id: conf.c 12819 2015-07-31 13:52:00Z msweet $".
*/
/*
- * "$Id: cups-driverd.cxx 12722 2015-06-08 22:00:19Z msweet $"
+ * "$Id: cups-driverd.cxx 12733 2015-06-12 01:21:05Z msweet $"
*
* PPD/driver support for CUPS.
*
* Constants...
*/
-#define PPD_SYNC 0x50504437 /* Sync word for ppds.dat (PPD7) */
+#define PPD_SYNC 0x50504438 /* Sync word for ppds.dat (PPD8) */
#define PPD_MAX_LANG 32 /* Maximum languages */
#define PPD_MAX_PROD 32 /* Maximum products */
#define PPD_MAX_VERS 32 /* Maximum versions */
#define PPD_TYPE_PDF 1 /* PDF PPD */
#define PPD_TYPE_RASTER 2 /* CUPS raster PPD */
#define PPD_TYPE_FAX 3 /* Facsimile/MFD PPD */
-#define PPD_TYPE_UNKNOWN 4 /* Other/hybrid PPD */
-#define PPD_TYPE_DRV 5 /* Driver info file */
-#define PPD_TYPE_ARCHIVE 6 /* Archive file */
+#define PPD_TYPE_OBJECT_ANY 4 /* 3D (AMF/STL/g-code) PPD */
+#define PPD_TYPE_OBJECT_DIRECT 5 /* 3D (AMF/STL/g-code) PPD over any connection */
+#define PPD_TYPE_OBJECT_STORAGE 6 /* 3D (AMF/STL/g-code) PPD for storage to SD card, etc. */
+#define PPD_TYPE_UNKNOWN 7 /* Other/hybrid PPD */
+#define PPD_TYPE_DRV 8 /* Driver info file */
+#define PPD_TYPE_ARCHIVE 9 /* Archive file */
#define TAR_BLOCK 512 /* Number of bytes in a block */
#define TAR_BLOCKS 10 /* Blocking factor */
"pdf",
"raster",
"fax",
+ "object",
+ "object-direct",
+ "object-storage",
"unknown",
"drv",
"archive"
load_drivers(include, exclude);
/*
- * Add the raw and IPP Everywhere drivers...
+ * Add the raw driver...
*/
- add_ppd("", "everywhere", "en", "Generic", "IPP Everywhere", "", "", "", 0, 0, 0, PPD_TYPE_UNKNOWN, "everywhere");
- add_ppd("", "raw", "en", "Raw", "Raw Queue", "", "", "", 0, 0, 0, PPD_TYPE_UNKNOWN, "raw");
+ add_ppd("", "raw", "en", "Raw", "Raw Queue", "", "", "", 0, 0, 0,
+ PPD_TYPE_UNKNOWN, "raw");
/*
* Send IPP attributes...
if (!_cups_strncasecmp(ptr, "true", 4))
type = PPD_TYPE_FAX;
}
- else if (!strncmp(line, "*cupsFilter:", 12) && type == PPD_TYPE_POSTSCRIPT)
+ else if ((!strncmp(line, "*cupsFilter:", 12) || !strncmp(line, "*cupsFilter2:", 13)) && type == PPD_TYPE_POSTSCRIPT)
{
if (strstr(line + 12, "application/vnd.cups-raster"))
type = PPD_TYPE_RASTER;
else if (strstr(line + 12, "application/vnd.cups-pdf"))
type = PPD_TYPE_PDF;
+ else if (strstr(line + 12, "application/amf") ||
+ strstr(line + 12, "application/g-code") ||
+ strstr(line + 12, "application/sla"))
+ type = PPD_TYPE_OBJECT_ANY;
+ }
+ else if (!strncmp(line, "*cups3DWorkflows:", 17))
+ {
+ int is_direct = strstr(line + 17, "direct") != NULL;
+ int is_storage = strstr(line + 17, "storage") != NULL;
+
+ if (is_direct && !is_storage)
+ type = PPD_TYPE_OBJECT_DIRECT;
+ if (!is_direct && is_storage)
+ type = PPD_TYPE_OBJECT_STORAGE;
+ else
+ type = PPD_TYPE_OBJECT_ANY;
}
else if (!strncmp(line, "*cupsModelNumber:", 17))
sscanf(line, "*cupsModelNumber:%d", &model_number);
/*
- * End of "$Id: cups-driverd.cxx 12722 2015-06-08 22:00:19Z msweet $".
+ * End of "$Id: cups-driverd.cxx 12733 2015-06-12 01:21:05Z msweet $".
*/
/*
- * "$Id: ipp.c 12700 2015-06-08 18:32:35Z msweet $"
+ * "$Id: ipp.c 12777 2015-07-07 17:24:06Z msweet $"
*
* IPP routines for the CUPS scheduler.
*
}
con->response->request.status.status_code = IPP_OK;
+
+ cupsdCheckJobs();
}
/*
- * End of "$Id: ipp.c 12700 2015-06-08 18:32:35Z msweet $".
+ * End of "$Id: ipp.c 12777 2015-07-07 17:24:06Z msweet $".
*/
/*
- * "$Id: job.c 12700 2015-06-08 18:32:35Z msweet $"
+ * "$Id: job.c 12777 2015-07-07 17:24:06Z msweet $"
*
* Job management routines for the CUPS scheduler.
*
"Job canceled by user.");
}
}
-
- cupsdCheckJobs();
}
* Start the job...
*/
+ cupsArraySave(ActiveJobs);
start_job(job, printer);
+ cupsArrayRestore(ActiveJobs);
}
}
}
job->printer->job = NULL;
job->printer = NULL;
-
- /*
- * Try printing another job...
- */
-
- if (printer_state != IPP_PRINTER_STOPPED)
- cupsdCheckJobs();
}
*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",
finalize_job(job, 1);
/*
- * Check for new jobs...
+ * Try printing another job...
*/
- cupsdCheckJobs();
+ if (printer->state != IPP_PRINTER_STOPPED)
+ cupsdCheckJobs();
}
}
/*
- * End of "$Id: job.c 12700 2015-06-08 18:32:35Z msweet $".
+ * End of "$Id: job.c 12777 2015-07-07 17:24:06Z msweet $".
*/
/*
- * "$Id: log.c 12691 2015-06-04 18:00:31Z msweet $"
+ * "$Id: log.c 12816 2015-07-30 15:38:57Z msweet $"
*
* Log file routines for the CUPS scheduler.
*
asl_object_t m; /* Log message */
char job_id[32], /* job-id string */
completed[32]; /* job-impressions-completed string */
+ 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",
"Completed"
};
- snprintf(job_id, sizeof(job_id), "%d", job->id);
-
m = asl_new(ASL_TYPE_MSG);
asl_set(m, ASL_KEY_FACILITY, "org.cups.cupsd");
- asl_set(m, PWG_Event, "JobStateChanged");
- asl_set(m, PWG_ServiceURI, job->printer->uri);
- asl_set(m, PWG_JobID, job_id);
- asl_set(m, PWG_JobState, job_states[job->state_value - IPP_JSTATE_PENDING]);
-
- if (job->impressions)
+ if (printer)
+ asl_set(m, PWG_ServiceURI, printer->uri);
+ if (job)
{
- snprintf(completed, sizeof(completed), "%d", ippGetInteger(job->impressions, 0));
- asl_set(m, PWG_JobImpressionsCompleted, completed);
+ snprintf(job_id, sizeof(job_id), "%d", job->id);
+
+ 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]);
+
+ if (job->impressions)
+ {
+ snprintf(completed, sizeof(completed), "%d", ippGetInteger(job->impressions, 0));
+ asl_set(m, PWG_JobImpressionsCompleted, completed);
+ }
}
va_start(ap, message);
#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;
static const char * const job_states[] =
{ /* job-state strings */
"Pending",
va_end(ap);
- sd_journal_send("MESSAGE=%s", log_line,
- "PRIORITY=%i", log_levels[level],
- PWG_Event"=JobStateChanged",
- PWG_ServiceURI"=%s", job->printer->uri,
- PWG_JobID"=%d", job->id,
- PWG_JobState"=%s", job_states[job->state_value - IPP_JSTATE_PENDING],
- PWG_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
- NULL);
+ if (job)
+ sd_journal_send("MESSAGE=%s", log_line,
+ "PRIORITY=%i", log_levels[level],
+ 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_JobImpressionsCompleted"=%d", ippGetInteger(job->impressions, 0),
+ NULL);
+ else
+ sd_journal_send("MESSAGE=%s", log_line,
+ "PRIORITY=%i", log_levels[level],
+ NULL);
+
return (1);
}
-
#endif /* HAVE_ASL_H */
/*
#elif defined(HAVE_SYSTEMD_SD_JOURNAL_H)
if (!strcmp(ErrorLog, "syslog"))
{
+ va_start(ap, message);
sd_journal_printv(log_levels[level], message, ap);
+ va_end(ap);
return (1);
}
#endif /* HAVE_ASL_H */
break;
case 'p' : /* Printer name */
- strlcpy(bufptr, job->printer->name, sizeof(buffer) - (size_t)(bufptr - buffer));
+ strlcpy(bufptr, job->dest, sizeof(buffer) - (size_t)(bufptr - buffer));
bufptr += strlen(bufptr);
break;
/*
- * End of "$Id: log.c 12691 2015-06-04 18:00:31Z msweet $".
+ * End of "$Id: log.c 12816 2015-07-30 15:38:57Z msweet $".
*/
/*
- * "$Id: printers.c 12722 2015-06-08 22:00:19Z msweet $"
+ * "$Id: printers.c 12733 2015-06-12 01:21:05Z msweet $"
*
* Printer routines for the CUPS scheduler.
*
if (ppd->num_sizes == 0 || !p->pc)
{
- if (!ppdFindAttr(ppd, "APScannerOnly", NULL))
+ if (!ppdFindAttr(ppd, "APScannerOnly", NULL) && !ppdFindAttr(ppd, "cups3D", NULL))
cupsdLogMessage(CUPSD_LOG_CRIT,
"The PPD file for printer %s contains no media "
- "options and is therefore invalid!", p->name);
+ "options and is therefore invalid.", p->name);
ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
"media-default", NULL, "unknown");
"printer-commands", NULL, "none");
}
+ /*
+ * 3D printer support...
+ */
+
+ if (ppdFindAttr(ppd, "cups3D", NULL))
+ p->type |= CUPS_PRINTER_3D;
+
/*
* Show current and available port monitors for this printer...
*/
/*
- * End of "$Id: printers.c 12722 2015-06-08 22:00:19Z msweet $".
+ * End of "$Id: printers.c 12733 2015-06-12 01:21:05Z msweet $".
*/
#!/bin/sh
#
-# "$Id: run-stp-tests.sh 12696 2015-06-08 15:05:11Z msweet $"
+# "$Id: run-stp-tests.sh 12820 2015-07-31 14:12:25Z msweet $"
#
# Perform the complete set of IPP compliance tests specified in the
# CUPS Software Test Plan.
# Warning log messages
count=`$GREP '^W ' $BASE/log/error_log | $GREP -v CreateProfile | wc -l | awk '{print $1}'`
-if test $count != 18; then
+if test $count != 8; then
echo "FAIL: $count warning messages, expected 18."
$GREP '^W ' $BASE/log/error_log
echo "<P>FAIL: $count warning messages, expected 18.</P>" >>$strfile
fi
#
-# End of "$Id: run-stp-tests.sh 12696 2015-06-08 15:05:11Z msweet $"
+# End of "$Id: run-stp-tests.sh 12820 2015-07-31 14:12:25Z msweet $"
#
/*
- * "$Id: config.h 12269 2014-11-20 15:37:29Z msweet $"
+ * "$Id: config.h 12763 2015-06-24 20:12:22Z msweet $"
*
* Configuration file for CUPS on Windows.
*
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.1svn"
-#define CUPS_MINIMAL "CUPS/2.1svn"
+#define CUPS_SVERSION "CUPS v2.1b2"
+#define CUPS_MINIMAL "CUPS/2.1b2"
/*
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 12269 2014-11-20 15:37:29Z msweet $".
+ * End of "$Id: config.h 12763 2015-06-24 20:12:22Z msweet $".
*/
278C58E8136B64B000836530 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = /System/Library/Frameworks/SystemConfiguration.framework; sourceTree = "<absolute>"; };
27A0347B1A8BDB1300650675 /* lpadmin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpadmin; sourceTree = BUILT_PRODUCTS_DIR; };
27D3037D134148CB00F022B1 /* libcups2.def */ = {isa = PBXFileReference; lastKnownFileType = text; name = libcups2.def; path = ../cups/libcups2.def; sourceTree = "<group>"; };
+ 27F89DA21B3AC43B00E5A4B7 /* testraster.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testraster.c; path = ../filter/testraster.c; sourceTree = "<group>"; };
720DD6C21358FD5F0064AA82 /* snmp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = snmp; sourceTree = BUILT_PRODUCTS_DIR; };
720DD6D21358FDDE0064AA82 /* snmp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = snmp.c; path = ../backend/snmp.c; sourceTree = "<group>"; };
72220EAE1333047D00FCA411 /* libcups.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcups.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
727EF049192E3544001EF690 /* testoptions.c */,
727EF04A192E3544001EF690 /* testppd.c */,
727EF04B192E3544001EF690 /* testpwg.c */,
+ 27F89DA21B3AC43B00E5A4B7 /* testraster.c */,
727EF04C192E3544001EF690 /* testsnmp.c */,
727EF04E192E3602001EF690 /* testspeed.c */,
727EF04F192E3602001EF690 /* testsub.c */,
/*
- * "$Id: config.h 12687 2015-06-03 17:19:04Z msweet $"
+ * "$Id: config.h 12763 2015-06-24 20:12:22Z msweet $"
*
* Configuration file for CUPS and Xcode.
*
* Version of software...
*/
-#define CUPS_SVERSION "CUPS v2.1svn"
-#define CUPS_MINIMAL "CUPS/2.1svn"
+#define CUPS_SVERSION "CUPS v2.1b2"
+#define CUPS_MINIMAL "CUPS/2.1b2"
/*
#endif /* !_CUPS_CONFIG_H_ */
/*
- * End of "$Id: config.h 12687 2015-06-03 17:19:04Z msweet $".
+ * End of "$Id: config.h 12763 2015-06-24 20:12:22Z msweet $".
*/