Imported Upstream version 2.2.0 16/92816/1 upstream/2.2.0
authorDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 19 Oct 2016 01:12:15 +0000 (10:12 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Wed, 19 Oct 2016 01:12:25 +0000 (10:12 +0900)
Change-Id: I937a26ed4bd71582057195c2f4f371017321055c
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
713 files changed:
CHANGES-2.1.txt [new file with mode: 0644]
CHANGES-IPPTOOL.txt [deleted file]
CHANGES.txt
CONTRIBUTING.md [new file with mode: 0644]
CREDITS.txt
INSTALL.txt
IPPTOOL.txt [deleted file]
LICENSE.txt
Makedefs.in
Makefile
README.txt
backend/Dependencies
backend/Makefile
backend/backend-private.h
backend/dnssd.c
backend/ieee1284.c
backend/ipp.c
backend/lpd.c
backend/network.c
backend/pseudo
backend/runloop.c
backend/snmp-supplies.c
backend/snmp.c
backend/socket.c
backend/test1284.c
backend/testbackend.c
backend/testsupplies.c
backend/usb-darwin.c
backend/usb-libusb.c
backend/usb-unix.c
backend/usb.c
berkeley/Dependencies
berkeley/Makefile
berkeley/lpc.c
berkeley/lpq.c
berkeley/lpr.c
berkeley/lprm.c
cgi-bin/Dependencies
cgi-bin/Makefile
cgi-bin/admin.c
cgi-bin/api-cgi.header [deleted file]
cgi-bin/api-cgi.shtml [deleted file]
cgi-bin/cgi-private.h
cgi-bin/cgi.h
cgi-bin/classes.c
cgi-bin/help-index.c
cgi-bin/help-index.h
cgi-bin/help.c
cgi-bin/html.c
cgi-bin/ipp-var.c
cgi-bin/jobs.c
cgi-bin/makedocset.c
cgi-bin/printers.c
cgi-bin/search.c
cgi-bin/template.c
cgi-bin/testcgi.c
cgi-bin/testhi.c
cgi-bin/testtemplate.c
cgi-bin/var.c
conf/Makefile
conf/mime.convs.in
config-scripts/cups-common.m4
config-scripts/cups-compiler.m4
config-scripts/cups-defaults.m4
config-scripts/cups-directories.m4
config-scripts/cups-dnssd.m4
config-scripts/cups-gssapi.m4
config-scripts/cups-largefile.m4
config-scripts/cups-libtool.m4
config-scripts/cups-manpages.m4
config-scripts/cups-network.m4
config-scripts/cups-opsys.m4
config-scripts/cups-pam.m4
config-scripts/cups-poll.m4
config-scripts/cups-scripting.m4
config-scripts/cups-sharedlibs.m4
config-scripts/cups-ssl.m4
config-scripts/cups-startup.m4
config-scripts/cups-threads.m4
config.h.in
configure
configure.ac
cups-config.in
cups/Dependencies
cups/Makefile
cups/adminutil.c
cups/adminutil.h
cups/api-admin.header [moved from scheduler/api-mime.header with 64% similarity]
cups/api-admin.shtml [new file with mode: 0644]
cups/api-array.header
cups/api-array.shtml
cups/api-cups.header
cups/api-cups.shtml
cups/api-filedir.header
cups/api-filedir.shtml
cups/api-filter.header
cups/api-filter.shtml
cups/api-httpipp.header
cups/api-httpipp.shtml
cups/api-overview.header
cups/api-overview.shtml
cups/api-ppd.header
cups/api-ppd.shtml
cups/array-private.h
cups/array.c
cups/array.h
cups/auth.c
cups/backchannel.c
cups/backend.c
cups/backend.h
cups/cups-private.h
cups/cups.h
cups/debug-private.h
cups/debug.c
cups/dest-job.c
cups/dest-localization.c
cups/dest-options.c
cups/dest.c
cups/dir.c
cups/dir.h
cups/encode.c
cups/file-private.h
cups/file.c
cups/file.h
cups/getdevices.c
cups/getifaddrs.c
cups/getputfile.c
cups/globals.c
cups/hash.c [new file with mode: 0644]
cups/http-addr.c
cups/http-addrlist.c
cups/http-private.h
cups/http-support.c
cups/http.c
cups/http.h
cups/ipp-private.h
cups/ipp-support.c
cups/ipp.c
cups/ipp.h
cups/langprintf.c
cups/language-private.h
cups/language.c
cups/language.h
cups/libcups2.def
cups/md5-private.h
cups/md5.c
cups/md5passwd.c
cups/notify.c
cups/options.c
cups/ppd-attr.c [moved from cups/attr.c with 97% similarity]
cups/ppd-cache.c
cups/ppd-conflicts.c [moved from cups/conflicts.c with 99% similarity]
cups/ppd-custom.c [moved from cups/custom.c with 52% similarity]
cups/ppd-emit.c [moved from cups/emit.c with 99% similarity]
cups/ppd-localize.c [moved from cups/localize.c with 97% similarity]
cups/ppd-mark.c [moved from cups/mark.c with 98% similarity]
cups/ppd-page.c [moved from cups/page.c with 89% similarity]
cups/ppd-private.h
cups/ppd-util.c [new file with mode: 0644]
cups/ppd.c
cups/ppd.h
cups/pwg-media.c
cups/pwg-private.h
cups/pwg.h
cups/raster-private.h
cups/raster.h
cups/request.c
cups/sidechannel.c
cups/sidechannel.h
cups/snmp-private.h
cups/snmp.c
cups/snprintf.c
cups/string-private.h
cups/string.c
cups/tempfile.c
cups/testadmin.c
cups/testarray.c
cups/testcache.c
cups/testconflicts.c
cups/testcreds.c [new file with mode: 0644]
cups/testcups.c
cups/testdest.c
cups/testfile.c
cups/testhttp.c
cups/testi18n.c
cups/testipp.c
cups/testlang.c
cups/testoptions.c
cups/testppd.c
cups/testpwg.c
cups/testsnmp.c
cups/thread-private.h
cups/thread.c
cups/tls-darwin.c
cups/tls-gnutls.c
cups/tls-sspi.c
cups/tls.c
cups/tlscheck.c
cups/transcode.c
cups/transcode.h
cups/usersys.c
cups/util.c
cups/versioning.h
data/Makefile
data/epson.h
data/hp.h
data/label.h
data/media.defs
desktop/Makefile
desktop/cups.desktop.in
doc/Makefile
doc/de/index.html.in
doc/es/index.html.in
doc/help/api-admin.html [new file with mode: 0644]
doc/help/api-array.html
doc/help/api-cgi.html [deleted file]
doc/help/api-cups.html
doc/help/api-driver.html [deleted file]
doc/help/api-filedir.html
doc/help/api-filter.html
doc/help/api-httpipp.html
doc/help/api-mime.html [deleted file]
doc/help/api-overview.html
doc/help/api-ppd.html
doc/help/api-ppdc.html [deleted file]
doc/help/api-raster.html
doc/help/kerberos.html
doc/help/license.html
doc/help/man-backend.html
doc/help/man-cancel.html
doc/help/man-classes.conf.html
doc/help/man-client.conf.html
doc/help/man-cups-config.html
doc/help/man-cups-files.conf.html
doc/help/man-cups-lpd.html
doc/help/man-cups-snmp.conf.html
doc/help/man-cups-snmp.html
doc/help/man-cups.html
doc/help/man-cupsaccept.html
doc/help/man-cupsaddsmb.html
doc/help/man-cupsctl.html
doc/help/man-cupsd-helper.html
doc/help/man-cupsd-logs.html
doc/help/man-cupsd.conf.html
doc/help/man-cupsenable.html
doc/help/man-cupsfilter.html
doc/help/man-cupstestdsc.html
doc/help/man-cupstestppd.html
doc/help/man-filter.html
doc/help/man-ipptool.html
doc/help/man-ipptoolfile.html
doc/help/man-lp.html
doc/help/man-lpadmin.html
doc/help/man-lpc.html
doc/help/man-lpinfo.html
doc/help/man-lpmove.html
doc/help/man-lpoptions.html
doc/help/man-lpq.html
doc/help/man-lpr.html
doc/help/man-lprm.html
doc/help/man-lpstat.html
doc/help/man-mailto.conf.html
doc/help/man-mime.convs.html
doc/help/man-mime.types.html
doc/help/man-notifier.html
doc/help/man-ppdc.html
doc/help/man-ppdcfile.html
doc/help/man-ppdhtml.html
doc/help/man-ppdi.html
doc/help/man-ppdmerge.html
doc/help/man-ppdpo.html
doc/help/man-printers.conf.html
doc/help/man-subscriptions.conf.html
doc/help/network.html
doc/help/options.html
doc/help/overview.html
doc/help/postscript-driver.html
doc/help/ppd-compiler.html
doc/help/raster-driver.html
doc/help/ref-ppdcfile.html
doc/help/security.html
doc/help/sharing.html
doc/help/spec-banner.html
doc/help/spec-cmp.html [deleted file]
doc/help/spec-command.html
doc/help/spec-design.html
doc/help/spec-ipp.html
doc/help/spec-postscript.html
doc/help/spec-ppd.html
doc/index.html.in
doc/ja/index.html.in
doc/pt_BR/index.html.in
doc/robots.txt
doc/swish-e.config [deleted file]
examples/Makefile
examples/ppdx.c
examples/ppdx.h
examples/testppdx.c
examples/testppdx.ppd
filter/Dependencies
filter/Makefile
filter/api-raster.header
filter/api-raster.shtml
filter/commandtops.c
filter/common.c
filter/common.h
filter/error.c
filter/gziptoany.c
filter/interpret.c
filter/postscript-driver.header
filter/postscript-driver.shtml
filter/ppd-compiler.header
filter/ppd-compiler.shtml
filter/pstops.c
filter/raster-driver.header
filter/raster-driver.shtml
filter/raster.c
filter/rasterbench.c
filter/rastertoepson.c
filter/rastertohp.c
filter/rastertolabel.c
filter/rastertopwg.c
filter/spec-ppd.header
filter/spec-ppd.shtml
filter/testraster.c
install-sh
locale/Dependencies
locale/Makefile
locale/checkpo.c
locale/cups.header
locale/cups.pot
locale/cups.strings
locale/cups_ca.po
locale/cups_cs.po
locale/cups_de.po
locale/cups_es.po
locale/cups_fr.po
locale/cups_it.po
locale/cups_ja.po
locale/cups_pt_BR.po
locale/cups_ru.po
locale/po2strings.c
locale/strings2po.c
man/Makefile
man/backend.man
man/cancel.man
man/classes.conf.man
man/client.conf.man.in
man/cups-config.man
man/cups-files.conf.man.in
man/cups-lpd.man.in
man/cups-snmp.conf.man
man/cups-snmp.man.in
man/cups.man
man/cupsaccept.man
man/cupsaddsmb.man.in
man/cupsctl.man
man/cupsd-helper.man
man/cupsd-logs.man
man/cupsd.conf.man.in
man/cupsd.man.in
man/cupsenable.man
man/cupsfilter.man
man/cupstestdsc.man
man/cupstestppd.man
man/filter.man
man/ippfind.man
man/ipptool.man
man/ipptoolfile.man
man/lp.man
man/lpadmin.man
man/lpc.man
man/lpinfo.man
man/lpmove.man
man/lpoptions.man.in
man/lpq.man
man/lpr.man
man/lprm.man
man/lpstat.man
man/mailto.conf.man
man/mantohtml.c
man/mime.convs.man
man/mime.types.man
man/notifier.man
man/ppdc.man
man/ppdcfile.man
man/ppdhtml.man
man/ppdi.man
man/ppdmerge.man
man/ppdpo.man
man/printers.conf.man
man/subscriptions.conf.man
monitor/Dependencies
monitor/Makefile
monitor/bcp.c
monitor/tbcp.c
notifier/Dependencies
notifier/Makefile
notifier/dbus.c
notifier/mailto.c
notifier/rss.c
notifier/testnotify.c
packaging/InstallationCheck [deleted file]
packaging/LICENSE.rtf [deleted file]
packaging/WELCOME.rtf [deleted file]
packaging/cups-desc.plist.in [deleted file]
packaging/cups-info.plist.in [deleted file]
packaging/cups.list.in
packaging/cups.spec
packaging/cups.spec.in
packaging/installer.gif [deleted file]
packaging/installer.tif [deleted file]
ppdc/Dependencies
ppdc/Makefile
ppdc/api-ppdc.header [deleted file]
ppdc/api-ppdc.shtml [deleted file]
ppdc/foo.drv
ppdc/genstrings.cxx
ppdc/ppdc-array.cxx
ppdc/ppdc-attr.cxx
ppdc/ppdc-catalog.cxx
ppdc/ppdc-choice.cxx
ppdc/ppdc-constraint.cxx
ppdc/ppdc-driver.cxx
ppdc/ppdc-file.cxx
ppdc/ppdc-filter.cxx
ppdc/ppdc-font.cxx
ppdc/ppdc-group.cxx
ppdc/ppdc-import.cxx
ppdc/ppdc-mediasize.cxx
ppdc/ppdc-message.cxx
ppdc/ppdc-option.cxx
ppdc/ppdc-private.h
ppdc/ppdc-profile.cxx
ppdc/ppdc-shared.cxx
ppdc/ppdc-source.cxx
ppdc/ppdc-string.cxx
ppdc/ppdc-variable.cxx
ppdc/ppdc.cxx
ppdc/ppdc.h
ppdc/ppdhtml.cxx
ppdc/ppdi.cxx
ppdc/ppdmerge.cxx
ppdc/ppdpo.cxx
ppdc/sample.drv
ppdc/testcatalog.cxx
scheduler/Dependencies
scheduler/Makefile
scheduler/api-mime.shtml [deleted file]
scheduler/auth.c
scheduler/auth.h
scheduler/banners.c
scheduler/banners.h
scheduler/cert.c
scheduler/cert.h
scheduler/classes.c
scheduler/classes.h
scheduler/client.c
scheduler/client.h
scheduler/colorman.c
scheduler/colorman.h
scheduler/conf.c
scheduler/conf.h
scheduler/cups-deviced.c
scheduler/cups-driverd.cxx
scheduler/cups-exec.c
scheduler/cups-lpd.c
scheduler/cups.sh.in
scheduler/cups.xml.in
scheduler/cupsd.h
scheduler/cupsfilter.c
scheduler/dirsvc.c
scheduler/dirsvc.h
scheduler/env.c
scheduler/file.c
scheduler/filter.c
scheduler/ipp.c
scheduler/job.c
scheduler/job.h
scheduler/listen.c
scheduler/log.c
scheduler/main.c
scheduler/mime-private.h
scheduler/mime.c
scheduler/mime.h
scheduler/network.c
scheduler/network.h
scheduler/policy.c
scheduler/policy.h
scheduler/printers.c
scheduler/printers.h
scheduler/process.c
scheduler/quotas.c
scheduler/select.c
scheduler/server.c
scheduler/statbuf.c
scheduler/statbuf.h
scheduler/subscriptions.c
scheduler/subscriptions.h
scheduler/sysman.c
scheduler/sysman.h
scheduler/testlpd.c
scheduler/testmime.c
scheduler/testspeed.c
scheduler/testsub.c
scheduler/util.c
scheduler/util.h
systemv/Dependencies
systemv/Makefile
systemv/cancel.c
systemv/cupsaccept.c
systemv/cupsaddsmb.c
systemv/cupsctl.c
systemv/cupstestdsc.c
systemv/cupstestppd.c
systemv/lp.c
systemv/lpadmin.c
systemv/lpinfo.c
systemv/lpmove.c
systemv/lpoptions.c
systemv/lpstat.c
templates/Makefile
templates/classes.tmpl
templates/de/add-class.tmpl
templates/de/add-printer.tmpl
templates/de/add-rss-subscription.tmpl
templates/de/admin.tmpl
templates/de/choose-device.tmpl
templates/de/choose-make.tmpl
templates/de/choose-model.tmpl
templates/de/choose-serial.tmpl
templates/de/choose-uri.tmpl
templates/de/class-confirm.tmpl
templates/de/class-modified.tmpl
templates/de/class.tmpl
templates/de/classes.tmpl
templates/de/command.tmpl
templates/de/edit-config.tmpl
templates/de/error-op.tmpl
templates/de/header.tmpl.in
templates/de/help-header.tmpl
templates/de/jobs-header.tmpl
templates/de/jobs.tmpl
templates/de/modify-printer.tmpl
templates/de/norestart.tmpl
templates/de/option-conflict.tmpl
templates/de/option-pickone.tmpl
templates/de/pager.tmpl
templates/de/printer-accept.tmpl
templates/de/printer-confirm.tmpl
templates/de/printer-default.tmpl
templates/de/printer-purge.tmpl [deleted file]
templates/de/printer-reject.tmpl
templates/de/printer-start.tmpl
templates/de/printer-stop.tmpl
templates/de/printer.tmpl
templates/de/printers.tmpl
templates/de/replace-ppd.tmpl [deleted file]
templates/de/restart.tmpl
templates/de/samba-export.tmpl
templates/de/samba-exported.tmpl
templates/de/search.tmpl
templates/de/set-printer-options-header.tmpl
templates/de/subscription-added.tmpl
templates/de/subscription-canceled.tmpl
templates/de/test-page.tmpl
templates/de/trailer.tmpl
templates/de/users.tmpl
templates/es/admin.tmpl
templates/es/choose-device.tmpl
templates/es/class.tmpl
templates/es/classes.tmpl
templates/es/error-op.tmpl
templates/es/header.tmpl.in
templates/es/job-cancel.tmpl
templates/es/job-moved.tmpl
templates/es/jobs.tmpl
templates/es/pager.tmpl
templates/es/printer.tmpl
templates/es/printers.tmpl
templates/ja/classes.tmpl
templates/ja/jobs.tmpl
templates/ja/pager.tmpl
templates/ja/printers.tmpl
templates/jobs.tmpl
templates/pager.tmpl
templates/printers.tmpl
templates/pt_BR/add-class.tmpl
templates/pt_BR/add-printer.tmpl
templates/pt_BR/add-rss-subscription.tmpl
templates/pt_BR/admin.tmpl
templates/pt_BR/choose-device.tmpl
templates/pt_BR/choose-make.tmpl
templates/pt_BR/choose-model.tmpl
templates/pt_BR/choose-serial.tmpl
templates/pt_BR/choose-uri.tmpl
templates/pt_BR/class-added.tmpl
templates/pt_BR/class-confirm.tmpl
templates/pt_BR/class-deleted.tmpl
templates/pt_BR/class-jobs-header.tmpl
templates/pt_BR/class-modified.tmpl
templates/pt_BR/class.tmpl
templates/pt_BR/classes.tmpl
templates/pt_BR/command.tmpl
templates/pt_BR/edit-config.tmpl
templates/pt_BR/error-op.tmpl
templates/pt_BR/error.tmpl
templates/pt_BR/header.tmpl.in
templates/pt_BR/help-header.tmpl
templates/pt_BR/help-printable.tmpl [new file with mode: 0644]
templates/pt_BR/help-trailer.tmpl [new file with mode: 0644]
templates/pt_BR/job-cancel.tmpl
templates/pt_BR/job-hold.tmpl
templates/pt_BR/job-move.tmpl
templates/pt_BR/job-moved.tmpl
templates/pt_BR/job-release.tmpl
templates/pt_BR/job-restart.tmpl
templates/pt_BR/jobs-header.tmpl
templates/pt_BR/jobs.tmpl
templates/pt_BR/list-available-printers.tmpl
templates/pt_BR/modify-class.tmpl
templates/pt_BR/modify-printer.tmpl
templates/pt_BR/norestart.tmpl
templates/pt_BR/option-conflict.tmpl
templates/pt_BR/option-pickone.tmpl
templates/pt_BR/option-trailer.tmpl
templates/pt_BR/pager.tmpl
templates/pt_BR/printer-accept.tmpl
templates/pt_BR/printer-added.tmpl
templates/pt_BR/printer-cancel-jobs.tmpl [moved from templates/pt_BR/printer-purge.tmpl with 57% similarity]
templates/pt_BR/printer-configured.tmpl
templates/pt_BR/printer-confirm.tmpl
templates/pt_BR/printer-default.tmpl
templates/pt_BR/printer-deleted.tmpl
templates/pt_BR/printer-jobs-header.tmpl
templates/pt_BR/printer-modified.tmpl
templates/pt_BR/printer-reject.tmpl
templates/pt_BR/printer-start.tmpl
templates/pt_BR/printer-stop.tmpl
templates/pt_BR/printer.tmpl
templates/pt_BR/printers.tmpl
templates/pt_BR/restart.tmpl
templates/pt_BR/samba-export.tmpl
templates/pt_BR/search.tmpl
templates/pt_BR/set-printer-options-header.tmpl
templates/pt_BR/set-printer-options-trailer.tmpl
templates/pt_BR/subscription-added.tmpl
templates/pt_BR/subscription-canceled.tmpl
templates/pt_BR/test-page.tmpl
templates/pt_BR/trailer.tmpl
templates/pt_BR/users.tmpl
templates/ru/classes.tmpl
templates/ru/jobs.tmpl
templates/ru/pager.tmpl
templates/ru/printers.tmpl
test/4.1-requests.test
test/4.2-cups-printer-ops.test
test/4.3-job-ops.test
test/4.4-subscription-ops.test
test/5.1-lpadmin.sh
test/5.2-lpc.sh
test/5.3-lpq.sh
test/5.4-lpstat.sh
test/5.5-lp.sh
test/5.6-lpr.sh
test/5.7-lprm.sh
test/5.8-cancel.sh
test/5.9-lpinfo.sh
test/Dependencies
test/Makefile
test/cancel-current-job.test
test/color.jpg
test/create-printer-subscription.test
test/cups-create-local-printer.test [new file with mode: 0644]
test/everywhere/bonjour-tests.sh [deleted file]
test/everywhere/document-format-tests.sh [deleted file]
test/everywhere/document-format-tests.test [deleted file]
test/everywhere/ipp-tests.sh [deleted file]
test/everywhere/ipp-tests.test [deleted file]
test/get-completed-jobs.test
test/get-jobs.test
test/get-notifications.test
test/ipp-1.1.test
test/ipp-2.0.test
test/ipp-2.1.test
test/ipp-2.2.test
test/ipp-everywhere.test
test/ippdiscover.c [deleted file]
test/ippfind.c
test/ippinfra.c [deleted file]
test/ippinfra.man [deleted file]
test/ippproxy.c [deleted file]
test/ippproxy.man [deleted file]
test/ippserver.c
test/ippserver.man
test/ipptool.c
test/run-stp-tests.sh
test/str-header.html
test/test.convs
test/test.types [new file with mode: 0644]
test/testhp.ppd
test/testps.ppd
test/waitjobs.sh
test/xmltotest.c [deleted file]
vcnet/README.txt
vcnet/config.h
vcnet/cups.sln
vcnet/ipptool-installer.vdproj [deleted file]
vcnet/libcups2-installer.vdproj [deleted file]
vcnet/sw-ippeveselfcert10.vdproj [deleted file]
xcode/CUPS.xcodeproj/project.pbxproj
xcode/README.txt [new file with mode: 0644]
xcode/config.h

diff --git a/CHANGES-2.1.txt b/CHANGES-2.1.txt
new file mode 100644 (file)
index 0000000..7a6b548
--- /dev/null
@@ -0,0 +1,150 @@
+CHANGES-2.1.txt
+---------------
+
+CHANGES IN CUPS V2.1.4
+
+       - Fixed reporting of 1284 Device IDs (Issue #3835, PR #3836)
+       - Fixed printing of multiple files to raw queues (Issue #4782)
+       - The scheduler did not implement the Hold-New-Jobs opertion correctly
+         (Issue #4767)
+       - The ipptool program truncated values at 8k (Issue #4786)
+       - The ipptool program did not correctly report uriScheme values in plist
+         output (Issue #4785)
+       - The cups-lpd mini-daemon incorrectly included the document-name
+         attribute when creating a job.  It should only be included when
+         sending a job (Issue #4790)
+       - USB quirk updates (Issue #4778, Issue #4789)
+       - Documentation update (Issue #4772)
+
+
+CHANGES IN CUPS V2.1.3
+
+       - The default password function did not work on some platforms
+         (Issue #4750)
+       - The scheduler should not exit under memory pressure
+         (<rdar://problem/23255001>)
+       - The EPL2 and ZPL sample drivers did not properly support the CutMedia
+         option.
+       - Pending subscriptions would prevent the scheduler from idle exiting
+         (Issue #4754)
+       - Fixed some issues in ipptool for skipped tests
+         (<rdar://problem/24137160>)
+       - The "lp -H resume" command did not reset the "job-state-reasons"
+         attribute value (Issue #4752)
+       - cupsEncodeOptions2 incorrectly handled escaped values
+         (<rdar://problem/19736672>)
+       - The scheduler did not allow access to resource files (icons, etc.)
+         when the web interface was disabled (Issue #4755)
+       - Localization fix (Issue #4756)
+
+
+CHANGES IN CUPS V2.1.2
+
+       - Re-release of CUPS 2.1.1 as CUPS 2.1.2 due to error in tagging of the
+         2.1.1 release (pulled content from the 2.2.x tree instead)
+
+
+CHANGES IN CUPS V2.1.1
+
+       - Security hardening fixes (<rdar://problem/23131948>,
+         <rdar://problem/23132108>, <rdar://problem/23132353>,
+         <rdar://problem/23132803>, <rdar://problem/23133230>,
+         <rdar://problem/23133393>, <rdar://problem/23133466>,
+         <rdar://problem/23133833>, <rdar://problem/23133998>,
+         <rdar://problem/23134228>, <rdar://problem/23134299>,
+         <rdar://problem/23134356>, <rdar://problem/23134415>,
+         <rdar://problem/23134506>, <rdar://problem/23135066>,
+         <rdar://problem/23135122>, <rdar://problem/23135207>,
+         <rdar://problem/23144290>, <rdar://problem/23144358>,
+         <rdar://problem/23144461>)
+       - The cupsGetPPD* functions did not work with IPP printers (Issue #4725)
+       - Some older HP LaserJet printers need a delayed close when printing
+         using the libusb-based USB backend (Issue #4549)
+       - The libusb-based USB backend did not unload the kernel usblp module
+         if it was preventing the backend from accessing the printer
+         (Issue #4707)
+       - Current Primera printers were incorrectly reported as Fargo printers
+         (Issue #4708)
+       - The IPP backend did not always handle jobs getting canceled at the
+         printer (<rdar://problem/22716820>)
+       - Scheduler logging change (Issue #4728)
+       - Added USB quirk for Canon MP530 (Issue #4730)
+       - The scheduler did not deliver job notifications for jobs submitted to
+         classes (Issue #4733)
+       - Changing the printer-is-shared value for a remote queue did not
+         produce an error (Issue #4738)
+       - The IPP backend incorrectly included the job-password attribute in
+         Validate-Job requests (<rdar://problem/23531939>)
+       - Updated localizations (Issue #4709)
+
+
+CHANGES IN CUPS V2.1.0
+
+       - Fixed more scheduler crash bugs in the new logging code (Issue #4687,
+         Issue #4690)
+       - The scheduler did not use the ConfigFilePerm setting when copying PPD
+         files or interface scripts attached to a request (Issue #4703)
+       - Now support new Chinese locale IDs and their correct fallback locales
+         (<rdar://problem/22086642>, <rdar://problem/22130168>)
+       - "make check" incorrectly reported an expectation of 18 warning
+         messages when 8 were expected (Issue #4684)
+       - The new PDF file type rule did not work (Issue #4692)
+       - The scheduler did not update the jobs.cache file when job files were
+         expired (Issue #4706)
+       - Fixed some configure script issues (Issue #4694, Issue #4695, Issue #4698)
+       - Documentation updates (Issue #4691, Issue #4693)
+
+
+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 (Issue #4655, Issue #4658,
+         Issue #4661)
+       - Fixed domain socket support on Linux (Issue #4679)
+       - Fixed signal handlers in the dnssd and usb backends (Issue #4671)
+       - <Limit All> in <Policy> sections now applies to all operations when
+         used by itself (Issue #4659)
+       - Configure script changes for systemd support (Issue #4669)
+       - Updated autoconf sources to use newer form of AC_INIT (Issue #4664)
+
+
+CHANGES IN CUPS V2.1b1
+
+       - Improved speed of ppdMarkDefaults for complex/large PPDs
+         (<rdar://problem/15146999>)
+       - The IPP backend now stops sending print data if the printer indicates
+         the job has been aborted or canceled (<rdar://problem/17837631>)
+       - The IPP backend now sends the job-pages-per-set attribute when
+         printing multiple copy jobs with finishings
+         (<rdar://problem/16792757>)
+       - The IPP backend now updates the cupsMandatory values when the printer
+         configuration changes (<rdar://problem/18126570>)
+       - No longer install banner files since third-party banner filters now
+         supply their own (Issue #4518)
+       - Added support for EXPECT-ALL directive in ipptool test files
+         (Issue #4469)
+       - Added support for WITH-VALUE-FROM predicate in ipptool test files
+         (Issue #4470)
+       - The scheduler no longer listens on the loopback interface unless the
+         web interface or printer sharing are enabled
+         (<rdar://problem/9136448>)
+       - Added a PPD generator for IPP Everywhere printers (Issue #4258)
+       - Now install "default" versions of more configuration files
+         (<rdar://problem/19024491>)
+       - The cupstestppd program did not handle "maxsize(nnn)" entries in
+         cupsFilter/cupsFilter2 values (<rdar://problem/18974858>)
+       - The scheduler now checks the return value of rename() calls
+         (Issue #4589)
+       - The scheduler now validates ErrorPolicy values in config files
+         (Issue #4591)
+       - Long cookies caused the web interface to stop working (Issue #4619)
+       - Added SSLOptions values to allow Diffie-Hellman key exchange and
+         disable TLS/1.0 support.
+       - Updated the scheduler to support more IPP Everywhere attributes
+         (Issue #4630)
+       - The scheduler now supports advanced ASL and journald logging when
+         "syslog" output is configured (Issue #4474)
+       - The scheduler now supports logging to stderr when running in the
+         foreground (Issue #4505)
+
diff --git a/CHANGES-IPPTOOL.txt b/CHANGES-IPPTOOL.txt
deleted file mode 100644 (file)
index c96addb..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-CHANGES-IPPTOOL.txt - 2015-05-15
---------------------------------
-
-This file provides a list of changes to the ipptool binary distribution posted
-on CUPS.org.
-
-2014-05-15
-
-       - Added support for simultaneous XML and test output from ipptool.
-       - Added support for PAUSE directive in ipptool test files.
-
-
-2013-07-15
-
-       - New ippfind tool now included with ipptool.
-       - Added support for automatically extending the timeout when all of the
-         request data has not yet been written (all platforms but Windows
-         which does not support it...)
-       - Fixed several ipptool test files that used old STATUS names.
-
-
-2013-04-18
-
-       - Fixed some HTTP issues with authentication and compression.
-       - The IPP/1.1 test file did not allow for sufficient retries when
-         printing.
-       - The IPP/1.1 test file did not allow for empty printer-name values.
-       - The IPP Everywhere test file contained numerous errors.
-       - The color.jpg test file used a progressive mode instead of the
-         baseline JPEG mode.
-       - The IPP/1.1 test file referenced "color.jpeg" instead of "color.jpg".
-
-
-2013-01-31
-
-       - Added support for DEFINE-MATCH and DEFINE-NO-MATCH as STATUS
-         predicates.
-       - Added support for WITH-VALUE and resolution values.
-       - Added support for SKIP-IF-MISSING (skip test if file is missing)
-       - Added support for octetString values.
-       - Added support for document compression in Print-Job and Send-Document
-         requests.
-       - Fixed REPEAT-MATCH for STATUS and EXPECT - was incorrectly erroring
-         out.
-       - Fixed a bug where bad IPP responses would cause ipptool to crash.
-
-
-2012-02-28
-
-       - Changed behavior of WITH-VALUES "/regex/" to not require all values to
-         match.
-       - Added WITH-ALL-VALUES directive for EXPECT predicates that require all
-         values to match.
-       - Updated test files to use WITH-ALL-VALUES where necessary.
-       - Updated test files to use new ABNF for media names from PWG Media
-         Names 2.0.
-
-
-2012-02-06
-
-       - Fixed the packaging of ipptool on Windows (removed unnecessary DLLs)
-       - Fixed an crash in ipptool when mixing DISPLAY with -I and a failed
-         request.
-       - Added a Print-Job test file.
-       - Added a "setdebug" batch file for Windows
-       - Added support for a CUPS_DISABLE_ASYNC_CONNECT environment variable.
-
-
-2012-01-10
-
-       - Fixed an issue with the IPP/1.1 test file where the "waiting for job
-         completion" test did not work.
-       - The attribute groups out of order error was not shown for the
-         operation-attributes-tag group.
-
-
-2011-12-02
-
-       - Fixed a truncated XML output bug that would happen for certain errors.
-       - Fixed the order-of-groups tests.
-       - Fixed "WITH-VALUE >N" for rangeOfInteger attributes.
-       - The Windows installer was missing the get-printer-attributes.test
-         file.
-       - The Linux binaries are now compiled for all LSB 4.x-compliant Linux
-         distributions.
-       - The Linux binaries no longer support SSL or TLS.
-
-
-2011-10-05
-
-       - Fixed a crasher bug that showed up on Windows.
-       - The IPP/1.1 test would hang if the initial Print-Job test failed.
-       - Fixed a typo in the IPP/2.0 test.
-
-
-2011-10-03
-
-       - Using OF-TYPE with the "no-value" or "unknown" out-of-band value tags
-         now works without special WITH-VALUE strings.
-       - ipptool now shows an error when an attribute appears more than once
-         within the same attribute group.
-       - ipptool did not display attributes as specified by the DISPLAY
-         directive when a test error failed.
-       - Fixed one spot where DEFINE-VALUE was still treated as an error when
-         the EXPECT test failed.
-       - uriScheme values were not displayed properly.
-       - Updated the IPP/1.1 tests to properly validate support for
-         job-hold-until-default and job-hold-until-supported when the Hold-Job
-         operation is supported.
-       - Updated the IPP/1.1 tests to properly check for the various standard
-         media sizes for the printing tests.
-       - Updated the IPP/1.1 tests to accept "no-value" for media-default an
-         orientation-requested-default.
-       - Updated the IPP/1.1 tests to accept "unknown" for job-state.
-       - Updated the IPP/1.1 tests to not perform the bogus URI printing tests
-         unless the "document-uri" variable is defined.
-       - Updated the IPP/2.0 tests to properly validate media-col
-         "media-xxx-supported" attributes.
-       - Updated the IPP/2.2 tests to properly validate media-ready and
-         media-col-ready.
-
-
-2011-09-28
-
-       - Test output now includes a summary and overall score at the end.
-       - The MATCH-VALUE predicate now correctly deals with a failed EXPECT
-         condition.
-       - The IPP/1.1 test suite now looks for legacy media names and uses them
-         if the corresponding PWG standard names are not present.
-       - The IPP/1.1 test suite now tests the Print-Job+Release-Job when the
-         printer supports the job-hold-until attribute, Hold-Job operation, and
-         Release-Job operation.
-
-
-2011-09-21
-
-       - Fixes for HTTP chunking, timeout, and encryption issues reported by
-         various users.
-       - Greatly improved IPP tests with added IPP/2.2 tests.
-       - New test documents - 1-page and 4-page mixed A4/Letter PDF/PS and a
-         couple JPEGs.
-       - New REPEAT directives to programmatically repeat tests as needed.
-
-
-2011-08-16
-
-       - The Windows version no longer requires Visual Studio to be installed.
-       - The Windows version now supports SSL.
-       - Added "ipps" URI support.
-       - Added a new "-T" option.
-       - Added support for fractional seconds for the -i option and DELAY
-         directive.
-       - Added support for authentication.
-       - Added DEFINE-MATCH, DEFINE-NO-MATCH, DEFINE-VALUE, IF-NOT-DEFINED,
-         IGNORE-ERRORS, SKIP-IF-DEFINED, SKIP-IF-NOT-DEFINED,
-         SKIP-PREVIOUS-ERROR directives.
-       - WITH-VALUE now supports variable expansion.
-       - Updated the IPP/1.1 conformance test to skip the "my-jobs different
-         user" test if the printer URI contains a username.
-       - Updated the IPP conformance tests to validate media, media-default,
-         and media-supported values.
-       - No longer error out if a Printer returns a different version number in
-         the response when the request contains the version 0.0.
-
-
-2010-10-16
-
-       - Initial release of standalone binary.
index b6dcddb..ff4f188 100644 (file)
-CHANGES.txt - 2.1.4 - 2016-06-14
+CHANGES.txt - 2.2.0 - 2016-09-13
 --------------------------------
 
-CHANGES IN CUPS V2.1.4
-
-       - Fixed reporting of 1284 Device IDs (Issue #3835, PR #3836)
-       - Fixed printing of multiple files to raw queues (Issue #4782)
-       - The scheduler did not implement the Hold-New-Jobs opertion correctly
-         (Issue #4767)
-       - The ipptool program truncated values at 8k (Issue #4786)
-       - The ipptool program did not correctly report uriScheme values in plist
-         output (Issue #4785)
-       - The cups-lpd mini-daemon incorrectly included the document-name
-         attribute when creating a job.  It should only be included when
-         sending a job (Issue #4790)
-       - USB quirk updates (Issue #4778, Issue #4789)
-       - Documentation update (Issue #4772)
-
-
-CHANGES IN CUPS V2.1.3
-
-       - The default password function did not work on some platforms
-         (Issue #4750)
-       - The scheduler should not exit under memory pressure
-         (<rdar://problem/23255001>)
-       - The EPL2 and ZPL sample drivers did not properly support the CutMedia
-         option.
-       - Pending subscriptions would prevent the scheduler from idle exiting
-         (Issue #4754)
-       - Fixed some issues in ipptool for skipped tests
-         (<rdar://problem/24137160>)
-       - The "lp -H resume" command did not reset the "job-state-reasons"
-         attribute value (Issue #4752)
-       - The scheduler did not allow access to resource files (icons, etc.)
-         when the web interface was disabled (Issue #4755)
-       - Localization fix (Issue #4756)
-
-
-CHANGES IN CUPS V2.1.2
-
-       - Re-release of CUPS 2.1.1 as CUPS 2.1.2 due to error in tagging of the
-         2.1.1 release (pulled content from the 2.2.x tree instead)
-
-
-CHANGES IN CUPS V2.1.1
-
-       - Security hardening fixes (<rdar://problem/23131948>,
-         <rdar://problem/23132108>, <rdar://problem/23132353>,
-         <rdar://problem/23132803>, <rdar://problem/23133230>,
-         <rdar://problem/23133393>, <rdar://problem/23133466>,
-         <rdar://problem/23133833>, <rdar://problem/23133998>,
-         <rdar://problem/23134228>, <rdar://problem/23134299>,
-         <rdar://problem/23134356>, <rdar://problem/23134415>,
-         <rdar://problem/23134506>, <rdar://problem/23135066>,
-         <rdar://problem/23135122>, <rdar://problem/23135207>,
-         <rdar://problem/23144290>, <rdar://problem/23144358>,
-         <rdar://problem/23144461>)
-       - The cupsGetPPD* functions did not work with IPP printers (Issue #4725)
-       - Some older HP LaserJet printers need a delayed close when printing
-         using the libusb-based USB backend (Issue #4549)
-       - The libusb-based USB backend did not unload the kernel usblp module
-         if it was preventing the backend from accessing the printer
-         (Issue #4707)
-       - Current Primera printers were incorrectly reported as Fargo printers
-         (Issue #4708)
-       - The IPP backend did not always handle jobs getting canceled at the
-         printer (<rdar://problem/22716820>)
-       - Scheduler logging change (Issue #4728)
-       - Added USB quirk for Canon MP530 (Issue #4730)
-       - The scheduler did not deliver job notifications for jobs submitted to
-         classes (Issue #4733)
-       - Changing the printer-is-shared value for a remote queue did not
-         produce an error (Issue #4738)
-       - The IPP backend incorrectly included the job-password attribute in
-         Validate-Job requests (<rdar://problem/23531939>)
-       - Updated localizations (Issue #4709)
-
-
-CHANGES IN CUPS V2.1.0
-
-       - Fixed more scheduler crash bugs in the new logging code (Issue #4687,
-         Issue #4690)
-       - The scheduler did not use the ConfigFilePerm setting when copying PPD
-         files or interface scripts attached to a request (Issue #4703)
-       - Now support new Chinese locale IDs and their correct fallback locales
-         (<rdar://problem/22086642>, <rdar://problem/22130168>)
-       - "make check" incorrectly reported an expectation of 18 warning
-         messages when 8 were expected (Issue #4684)
-       - The new PDF file type rule did not work (Issue #4692)
-       - The scheduler did not update the jobs.cache file when job files were
-         expired (Issue #4706)
-       - Fixed some configure script issues (Issue #4694, Issue #4695, Issue #4698)
-       - Documentation updates (Issue #4691, Issue #4693)
-
-
-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 (Issue #4655, Issue #4658,
-         Issue #4661)
-       - Fixed domain socket support on Linux (Issue #4679)
-       - Fixed signal handlers in the dnssd and usb backends (Issue #4671)
-       - <Limit All> in <Policy> sections now applies to all operations when
-         used by itself (Issue #4659)
-       - Configure script changes for systemd support (Issue #4669)
-       - Updated autoconf sources to use newer form of AC_INIT (Issue #4664)
-
-
-CHANGES IN CUPS V2.1b1
-
-       - Improved speed of ppdMarkDefaults for complex/large PPDs
-         (<rdar://problem/15146999>)
-       - The IPP backend now stops sending print data if the printer indicates
-         the job has been aborted or canceled (<rdar://problem/17837631>)
-       - The IPP backend now sends the job-pages-per-set attribute when
-         printing multiple copy jobs with finishings
-         (<rdar://problem/16792757>)
-       - The IPP backend now updates the cupsMandatory values when the printer
-         configuration changes (<rdar://problem/18126570>)
-       - No longer install banner files since third-party banner filters now
-         supply their own (Issue #4518)
-       - Added support for EXPECT-ALL directive in ipptool test files
-         (Issue #4469)
-       - Added support for WITH-VALUE-FROM predicate in ipptool test files
-         (Issue #4470)
-       - The scheduler no longer listens on the loopback interface unless the
-         web interface or printer sharing are enabled
-         (<rdar://problem/9136448>)
-       - Added a PPD generator for IPP Everywhere printers (Issue #4258)
-       - Now install "default" versions of more configuration files
-         (<rdar://problem/19024491>)
-       - The cupstestppd program did not handle "maxsize(nnn)" entries in
-         cupsFilter/cupsFilter2 values (<rdar://problem/18974858>)
-       - The scheduler now checks the return value of rename() calls
-         (Issue #4589)
-       - The scheduler now validates ErrorPolicy values in config files
-         (Issue #4591)
-       - Long cookies caused the web interface to stop working (Issue #4619)
-       - Added SSLOptions values to allow Diffie-Hellman key exchange and
-         disable TLS/1.0 support.
-       - Updated the scheduler to support more IPP Everywhere attributes
-         (Issue #4630)
-       - The scheduler now supports advanced ASL and journald logging when
-         "syslog" output is configured (Issue #4474)
-       - The scheduler now supports logging to stderr when running in the
-         foreground (Issue #4505)
-
+CHANGES IN CUPS V2.2.0
+
+       - Normalized the TLS certificate validation code and added additional
+         error messages to aid troubleshooting.
+       - http*Connect did not work on Linux when cupsd was not running
+         (Issue #4870)
+       - The --no-remote-any option of cupsctl had no effect (Issue #4866)
+       - http*Connect did not return early when all addresses failed
+         (Issue #4870)
+
+
+CHANGES IN CUPS V2.2rc1
+
+       - Updated the list of supported IPP Everywhere media types.
+       - The IPP backend did not validate TLS credentials properly.
+       - The printer-state-message attribute was not cleared after a
+         print job with no errors (Issue #4851)
+       - The CUPS-Add-Modify-Class and CUPS-Add-Modify-Printer operations did
+         not always return an error for failed adds (Issue #4854)
+       - PPD files with names longer than 127 bytes did not work (Issue #4860)
+       - Updated localizations (Issue #4846, PR #4858)
+
+
+CHANGES IN CUPS V2.2b2
+
+       - Added Upstart support (PR #4825)
+       - CUPS now supports Let's Encrypt certificates on Linux.
+
+
+CHANGES IN CUPS V2.2b1
+
+       - All CUPS commands now support POSIX options (Issue #4813)
+       - The scheduler now restarts faster (Issue #4760)
+       - Improved performance of web interface with large numbers of jobs
+         (Issue #3819)
+       - Encrypted printing can now be limited to only trusted printers and
+         servers (<rdar://problem/25711658>)
+       - The scheduler now advertises PWG Raster attributes for IPP Everywhere
+         clients (Issue #4428)
+       - The scheduler now logs informational messages for jobs at LogLevel
+         "info" (Issue #4815)
+       - The scheduler now uses the getgrouplist function when available
+         (Issue #4611)
+       - The IPP backend no longer enables compression by default except for
+         certain raster formats that generally benefit from it
+         (<rdar://problem/25166952>)
+       - The scheduler did not handle out-of-disk situations gracefully
+         (Issue #4742)
+       - The LPD mini-daemon now detects invalid UTF-8 sequences in job,
+         document, and user names (Issue #4748)
+       - The IPP backend now continues on to the next job when the remote
+         server/printer puts the job on hold (<rdar://problem/24858548>)
+       - The scheduler did not cancel multi-document jobs immediately
+         (<rdar://problem/24854834>)
+       - The scheduler did not return non-shared printers to local clients
+         unless they connected to the domain socket (<rdar://problem/24566996>)
+       - The scheduler now reads the spool directory if one or more job cache
+         entries point to deleted jobs (<rdar://problem/24048846>)
+       - Added support for disc media sizes (<rdar://problem/20219536>)
+       - The httpAddrConnect and httpConnect* APIs now try connecting to
+         multiple addresses in parallel (<rdar://problem/20643153>)
+       - The cupsd domain socket is no longer world-accessible on macOS
+         (<rdar://problem/7542560>)
+       - Interface scripts are no longer supported for security reasons
+         (<rdar://problem/23135640>)
+       - Added a new cupsHashData API and support for hashed job passwords
+         (<rdar://problem/20221502>)
+       - Localization fixes (<rdar://problem/25292403>,
+         <rdar://problem/25461517>, Issue #4041, Issue #4796)
+       - Documentation changes (Issue #4624, Issue #4781)
+       - Packaging fixes (PR #4832)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644 (file)
index 0000000..c242627
--- /dev/null
@@ -0,0 +1,635 @@
+# Contributing to CUPS
+
+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 Apple Contributor Agreement:
+
+    https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf
+
+Contributions should be submitted as attachments to bug reports on the CUPS web
+site.  Changes to existing source files should be submitted as unified diffs
+(both Subversion and Git produce this format by default) while new source files
+should be provided as-is or in an archive.  Github pull requests can also be
+used to submit changes.
+
+
+## HOW TO CONTACT THE DEVELOPERS
+
+The CUPS mailing lists are the primary means of asking questions and informally
+discussing issues and feature requests with the CUPS developers and other
+experienced CUPS users and developers.  The "cups" mailing list is intended for
+CUPS usage questions and new software announcements while the "cups-devel"
+mailing list provides a forum for CUPS developers and monitoring new bugs.
+
+
+## INTERFACES
+
+CUPS interfaces, including the C APIs and command-line arguments, environment
+variables, configuration files, and output format, are stable across patch
+versions and are generally backwards-compatible with interfaces used in prior
+major and minor versions.  However, program interfaces such as those used by
+the scheduler to run filter, port monitor, and backend processes for job
+processing should only be considered stable from the point of view of a
+filter, port monitor, or backend.  Software that simulates the scheduler in
+order to run those programs outside of CUPS must necessarily be updated when
+the corresponding interface is changed in a subsequent CUPS release, otherwise
+undefined behavior can occur.
+
+CUPS C APIs starting with an underscore (_) are considered to be private to
+CUPS and are not subject to the normal guarantees of stability between CUPS
+releases and must never be used in non-CUPS source code.  Similarly,
+configuration and state files written by CUPS are considered private if a
+corresponding man page is not provided with the CUPS release.  Never rely on
+undocumented files or formats when developing software for CUPS.  Always use a
+published C API to access data stored in a file to avoid compatibility problems
+in the future.
+
+
+## BUILD SYSTEM
+
+The CUPS build system uses GNU autoconf to tailor the library to the local
+operating system.  Project files for the current release of Microsoft Visual
+Studio are also provided for Microsoft Windows®.  To improve portability,
+makefiles must not make use of features unique to GNU make.  See the MAKEFILE
+GUIDELINES section for a description of the allowed make features and makefile
+guidelines.
+
+Additional GNU build programs such as GNU automake and GNU libtool must not be
+used.  GNU automake produces non-portable makefiles which depend on GNU-
+specific extensions, and GNU libtool is not portable or reliable enough for
+CUPS.
+
+
+## VERSION NUMBERING
+
+CUPS uses a three-part version number separated by periods to represent the
+major, minor, and patch release numbers.  Major release numbers indicate large
+design changes or backwards-incompatible changes to the CUPS API or CUPS
+Imaging API.  Minor release numbers indicate new features and other smaller
+changes which are backwards-compatible with previous CUPS releases.  Patch
+numbers indicate bug fixes to the previous feature or patch release.
+
+> Note:
+>
+> When we talk about compatibility, we are talking about binary compatibility
+> for public APIs and output format compatibility for program interfaces.
+> Changes to configuration file formats or the default behavior of programs
+> are not generally considered incompatible as the upgrade process can
+> normally address such changes gracefully.
+
+Production releases use the plain version numbers:
+
+    MAJOR.MINOR.PATCH
+    1.0.0
+    ...
+    1.1.0
+    ...
+    1.1.23
+    ...
+    2.0.0
+    ...
+    2.1.0
+    2.1.1
+    2.1.2
+    2.1.3
+
+The first production release in a MAJOR.MINOR series (MAJOR.MINOR.0) is called
+a feature release.  Feature releases are the only releases that may contain new
+features.  Subsequent production releases in a MAJOR.MINOR series may only
+contain bug fixes.
+
+Beta-test releases are identified by appending the letter B to the major and
+minor version numbers followed by the beta release number:
+
+    MAJOR.MINORbNUMBER
+    2.2b1
+
+Release candidates are identified by appending the letters RC to the major and
+minor version numbers followed by the release candidate number:
+
+    MAJOR.MINORrcNUMBER
+    2.2rc1
+
+
+## CODING GUIDELINES
+
+Contributed source code must follow the guidelines below.  While the examples
+are for C and C++ source files, source code for other languages should conform
+to the same guidelines as allowed by the language.
+
+
+### SOURCE FILES
+
+All source files names must be 16 characters or less in length to ensure
+compatibility with older UNIX filesystems.  Source files containing functions
+have an extension of ".c" for C and ".cxx" for C++ source files.  All other
+"include" files have an extension of ".h".  Tabs are set to 8 characters or
+columns.
+
+> Note:
+>
+> The ".cxx" extension is used because it is the only common C++ extension
+> between Linux, macOS, UNIX, and Windows.
+
+The top of each source file contains a header giving the purpose or nature of
+the source file and the copyright and licensing notice:
+
+    /*
+     * Description of file contents.
+     *
+     * Copyright 2016 by Apple Inc.
+     *
+     * These coded instructions, statements, and computer programs are the
+     * property of Apple Inc. and are protected by Federal copyright
+     * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+     * which should have been included with this file.  If this file is
+     * file is missing or damaged, see the license at "http://www.cups.org/".
+     */
+
+For source files that are subject to the Apple OS-Developed Software exception,
+the following additional comment appears after the contact information:
+
+     * This file is subject to the Apple OS-Developed Software exception.
+
+
+### HEADER FILES
+
+All public header files must include the "versioning.h" header file, or a header
+that does so.  Function declarations are then "decorated" with the correct
+_CUPS_API_major_minor macro to define its availability based on the build
+environment, for example:
+
+    extern int cupsDoThis(int foo, int bar) _CUPS_API_2_2;
+
+Private API header files must be named with the suffix "-private", for example
+the "cups.h" header file defines all of the public CUPS APIs while the
+"cups-private.h" header file defines all of the private CUPS APIs as well.
+Typically a private API header file will include the corresponding public API
+header file.
+
+
+### COMMENTS
+
+All source code utilizes block comments within functions to describe the
+operations being performed by a group of statements; avoid putting a comment
+per line unless absolutely necessary, and then consider refactoring the code
+so that it is not necessary.  C source files use the block comment format
+("/* comment */") since many vendor C compilers still do not support C99/C++
+comments ("// comment"):
+
+    /*
+     * Clear the state array before we begin...
+     */
+
+     for (i = 0; i < (sizeof(array) / sizeof(sizeof(array[0])); i ++)
+       array[i] = CUPS_STATE_IDLE;
+
+    /*
+     * Wait for state changes on another thread...
+     */
+
+     do
+     {
+       for (i = 0; i < (sizeof(array) / sizeof(sizeof(array[0])); i ++)
+         if (array[i] != CUPS_STATE_IDLE)
+           break;
+
+       if (i == (sizeof(array) / sizeof(array[0])))
+         sleep(1);
+     } while (i == (sizeof(array) / sizeof(array[0])));
+
+
+### INDENTATION
+
+All code blocks enclosed by brackets begin with the opening brace on a new
+line.  The code then follows starting on a new line after the brace and is
+indented 2 spaces.  The closing brace is then placed on a new line following
+the code at the original indentation:
+
+    {
+      int i; /* Looping var */
+
+     /*
+      * Process foobar values from 0 to 999...
+      */
+
+      for (i = 0; i < 1000; i ++)
+      {
+        do_this(i);
+        do_that(i);
+      }
+    }
+
+Single-line statements following "do", "else", "for", "if", and "while" are
+indented 2 spaces as well.  Blocks of code in a "switch" block are indented 4
+spaces after each "case" and "default" case:
+
+    switch (array[i])
+    {
+      case CUPS_STATE_IDLE :
+          do_this(i);
+          do_that(i);
+          break;
+
+      default :
+          do_nothing(i);
+          break;
+    }
+
+
+### SPACING
+
+A space follows each reserved word such as "if", "while", etc.  Spaces are not
+inserted between a function name and the arguments in parenthesis.
+
+
+### RETURN VALUES
+
+Parenthesis surround values returned from a function:
+
+    return (CUPS_STATE_IDLE);
+
+
+### FUNCTIONS
+
+Functions with a global scope have a lowercase prefix followed by capitalized
+words, e.g., "cupsDoThis", "cupsDoThat", "cupsDoSomethingElse", etc.  Private
+global functions begin with a leading underscore, e.g., "\_cupsDoThis",
+"\_cupsDoThat", etc.
+
+Functions with a local scope are declared "static" with lowercase names and
+underscores between words, e.g., "do\_this", "do\_that", "do\_something\_else", etc.
+
+Each function begins with a comment header describing what the function does,
+the possible input limits (if any), the possible output values (if any), and
+any special information needed:
+
+    /*
+     * 'do_this()' - Compute y = this(x).
+     *
+     * Notes: none.
+     */
+
+    static float       /* O - Inverse power value, 0.0 <= y <= 1.1 */
+    do_this(float x)   /* I - Power value (0.0 <= x <= 1.1) */
+    {
+      ...
+      return (y);
+    }
+
+Return/output values are indicated using an "O" prefix, input values are
+indicated using the "I" prefix, and values that are both input and output use
+the "IO" prefix for the corresponding in-line comment.
+
+The Mini-XML documentation generator also understands the following special
+text in the function description comment:
+
+    @deprecated@         - Marks the function as deprecated (not recommended
+                           for new development and scheduled for removal)
+    @since CUPS version@ - Marks the function as new in the specified version
+                           of CUPS.
+    @private@            - Marks the function as private (same as starting the
+                           function name with an underscore)
+
+
+### VARIABLES
+
+Variables with a global scope are capitalized, e.g., "ThisVariable",
+"ThatVariable", "ThisStateVariable", etc.  Globals in CUPS libraries are either
+part of the per-thread global values managed by the "\_cupsGlobals()" function
+or are suitably protected for concurrent access.  Global variables should be
+replaced by function arguments whenever possible.
+
+Variables with a local scope are lowercase with underscores between words,
+e.g., "this\_variable", "that\_variable", etc.  Any "local global" variables
+shared by functions within a source file are declared "static".  As for global
+variables, local static variables are suitably protected for concurrent access.
+
+Each variable is declared on a separate line and is immediately followed by a
+comment block describing the variable:
+
+    int         ThisVariable;    /* The current state of this */
+    static int  that_variable;   /* The current state of that */
+
+
+### TYPES
+
+All type names are lowercase with underscores between words and "\_t" appended
+to the end of the name, e.g., "cups\_this\_type\_t", "cups\_that\_type\_t", etc.
+Type names start with a prefix, typically "cups" or the name of the program,
+to avoid conflicts with system types.  Private type names start with an
+underscore, e.g., "\_cups\_this\_t", "\_cups\_that\_t", etc.
+
+Each type has a comment block immediately after the typedef:
+
+    typedef int cups_this_type_t;  /* This type is for CUPS foobar options. */
+
+
+### STRUCTURES
+
+All structure names are lowercase with underscores between words and "\_s"
+appended to the end of the name, e.g., "cups\_this\_s", "cups\_that\_s", etc.
+Structure names start with a prefix, typically "cups" or the name of the
+program, to avoid conflicts with system types.  Private structure names start
+with an underscore, e.g., "\_cups\_this\_s", "\_cups\_that\_s", etc.
+
+Each structure has a comment block immediately after the struct and each member
+is documented similar to the variable naming policy above:
+
+    struct cups_this_struct_s  /* This structure is for CUPS foobar options. */
+    {
+      int this_member;         /* Current state for this */
+      int that_member;         /* Current state for that */
+    };
+
+
+### CONSTANTS
+
+All constant names are uppercase with underscores between words, e.g.,
+"CUPS\_THIS\_CONSTANT", "CUPS\_THAT\_CONSTANT", etc.  Constants begin with an
+uppercase prefix, typically "CUPS" or the program name.  Private constants
+start with an underscore, e.g., "\_CUPS\_THIS\_CONSTANT", "\_CUPS\_THAT\_CONSTANT",
+etc.
+
+Typed enumerations should be used whenever possible to allow for type checking
+by the compiler.
+
+Comment blocks immediately follow each constant:
+
+    typedef enum cups_tray_e  /* Tray enumerations */
+    {
+      CUPS_TRAY_THIS,         /* This tray */
+      CUPS_TRAY_THAT          /* That tray */
+    } cups_tray_t;
+
+
+## MAKEFILE GUIDELINES
+
+The following is a guide to the makefile-based build system used by CUPS.
+These standards have been developed over the years to allow CUPS to be built on
+as many systems and environments as possible.
+
+
+### GENERAL ORGANIZATION
+
+The CUPS source code is organized functionally into a top-level makefile,
+include file, and subdirectories each with their own makefile and dependencies
+files.  The ".in" files are template files for the autoconf software and are
+used to generate a static version of the corresponding file.
+
+
+### MAKEFILE DOCUMENTATION
+
+Each makefile starts with the standard CUPS header containing the description
+of the file, and CUPS copyright and license notice:
+
+    #
+    # Makefile for ...
+    #
+    # Copyright 2016 by Apple Inc.
+    #
+    # These coded instructions, statements, and computer programs are the
+    # property of Apple Inc. and are protected by Federal copyright
+    # law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+    # which should have been included with this file.  If this file is
+    # file is missing or damaged, see the license at "http://www.cups.org/".
+    #
+
+
+### PORTABLE MAKEFILE CONSTRUCTION
+
+CUPS uses a common subset of make program syntax to ensure that the software
+can be compiled "out of the box" on as many systems as possible.  The following
+is a list of assumptions we follow when constructing makefiles:
+
+- Targets; we assume that the make program supports the notion of simple
+  targets of the form "name:" that perform tab-indented commands that follow
+  the target, e.g.:
+
+      target:
+      TAB target commands
+
+- Dependencies; we assume that the make program supports recursive dependencies
+  on targets, e.g.:
+
+      target: foo bar
+      TAB target commands
+
+      foo: bla
+      TAB foo commands
+
+      bar:
+      TAB bar commands
+
+      bla:
+      TAB bla commands
+
+- Variable Definition; we assume that the make program supports variable
+  definition on the command-line or in the makefile using the following form:
+
+      name=value
+
+- Variable Substitution; we assume that the make program supports variable
+  substitution using the following forms:
+
+      - $(name); substitutes the value of "name",
+      - $(name:.old=.new); substitutes the value of "name" with the filename
+        extension ".old" changed to ".new",
+      - $(MAKEFLAGS); substitutes the command-line options passed to the
+        program without the leading hyphen (-),
+      - $$; substitutes a single $ character,
+      - $<; substitutes the current source file or dependency, and
+      - $@; substitutes the current target name.
+
+- Suffixes; we assume that the make program supports filename suffixes with
+  assumed dependencies, e.g.:
+
+      .SUFFIXES: .c .o
+      .c.o:
+      TAB $(CC) $(CFLAGS) -o $@ -c $<
+
+- Include Files; we assume that the make program supports the include
+  directive, e.g.:
+
+      include ../Makedefs
+      include Dependencies
+
+- Comments; we assume that comments begin with a # character and proceed to the
+  end of the current line.
+
+- Line Length; we assume that there is no practical limit to the length of
+  lines.
+
+- Continuation of long lines; we assume that the \ character may be placed at
+  the end of a line to concatenate two or more lines in a makefile to form a
+  single long line.
+
+- Shell; we assume a POSIX-compatible shell is present on the build system.
+
+
+### STANDARD VARIABLES
+
+The following variables are defined in the "Makedefs" file generated by the
+autoconf software:
+
+- ALL_CFLAGS; the combined C compiler options,
+- ALL_CXXFLAGS; the combined C++ compiler options,
+- AMANDIR; the administrative man page installation directory (section 8/1m
+  depending on the platform),
+- AR; the library archiver command,
+- ARFLAGS; options for the library archiver command,
+- AWK; the local awk command,
+- BINDIR; the binary installation directory,
+- BUILDROOT; optional installation prefix (defaults to DSTROOT),
+- CC; the C compiler command,
+- CFLAGS; options for the C compiler command,
+- CHMOD; the chmod command,
+- CXX; the C++ compiler command,
+- CXXFLAGS; options for the C++ compiler command,
+- DATADIR; the data file installation directory,
+- DSO; the C shared library building command,
+- DSOXX; the C++ shared library building command,
+- DSOFLAGS; options for the shared library building command,
+- INCLUDEDIR; the public header file installation directory,
+- INSTALL; the install command,
+- INSTALL_BIN; the program installation command,
+- INSTALL_COMPDATA; the compressed data file installation command,
+- INSTALL_CONFIG; the configuration file installation command,
+- INSTALL_DATA; the data file installation command,
+- INSTALL_DIR; the directory installation command,
+- INSTALL_LIB; the library installation command,
+- INSTALL_MAN; the documentation installation command,
+- INSTALL_SCRIPT; the shell script installation command,
+- LD; the linker command,
+- LDFLAGS; options for the linker,
+- LIBDIR; the library installation directory,
+- LIBS; libraries for all programs,
+- LN; the ln command,
+- MAN1EXT; extension for man pages in section 1,
+- MAN3EXT; extension for man pages in section 3,
+- MAN5EXT; extension for man pages in section 5,
+- MAN7EXT; extension for man pages in section 7,
+- MAN8DIR; subdirectory for man pages in section 8,
+- MAN8EXT; extension for man pages in section 8,
+- MANDIR; the man page installation directory,
+- OPTIM; common compiler optimization options,
+- PRIVATEINCLUDE; the private header file installation directory,
+- RM; the rm command,
+- SHELL; the sh (POSIX shell) command,
+- STRIP; the strip command,
+- srcdir; the source directory.
+
+
+### STANDARD TARGETS
+
+The following standard targets are defined in each makefile:
+
+- all; creates all target programs, libraries, and documentation files,
+- clean; removes all target programs libraries, documentation files, and object
+  files,
+- depend; generates automatic dependencies for any C or C++ source files (also
+  see "DEPENDENCIES"),
+- distclean; removes autoconf-generated files in addition to those removed by
+  the "clean" target,
+- install; installs all distribution files in their corresponding locations
+  (also see "INSTALL/UNINSTALL SUPPORT"),
+- install-data; installs all data files in their corresponding locations (also
+  see "INSTALL/UNINSTALL SUPPORT"),
+- install-exec; installs all executable files in their corresponding locations
+  (also see "INSTALL/UNINSTALL SUPPORT"),
+- install-headers; installs all include files in their corresponding locations
+  (also see "INSTALL/UNINSTALL SUPPORT"),
+- install-libs; installs all library files in their corresponding locations
+  (also see "INSTALL/UNINSTALL SUPPORT"), and
+- uninstall; removes all distribution files from their corresponding locations
+  (also see "INSTALL/UNINSTALL SUPPORT").
+
+
+### OBJECT FILES
+
+Object files (the result of compiling a C or C++ source file) have the
+extension ".o".
+
+
+### PROGRAMS
+
+Program files are the result of linking object files and libraries together to
+form an executable file.  A typical program target looks like:
+
+    program: $(OBJS)
+    TAB echo Linking $@...
+    TAB $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
+
+### STATIC LIBRARIES
+
+Static libraries have a prefix of "lib" and the extension ".a". A typical
+static library target looks like:
+
+    libname.a: $(OBJECTS)
+    TAB echo Creating $@...
+    TAB $(RM) $@
+    TAB $(AR) $(ARFLAGS) $@ $(OBJECTS)
+    TAB $(RANLIB) $@
+
+### SHARED LIBRARIES
+
+Shared libraries have a prefix of "lib" and the extension ".dylib" or ".so"
+depending on the operating system.  A typical shared library is composed of
+several targets that look like:
+
+    libname.so: $(OBJECTS)
+    TAB echo $(DSOCOMMAND) libname.so.$(DSOVERSION) ...
+    TAB $(DSOCOMMAND) libname.so.$(DSOVERSION) $(OBJECTS)
+    TAB $(RM) libname.so libname.so.$(DSOMAJOR)
+    TAB $(LN) libname.so.$(DSOVERSION) libname.so.$(DSOMAJOR)
+    TAB $(LN) libname.so.$(DSOVERSION) libname.so
+
+    libname.dylib: $(OBJECTS)
+    TAB echo $(DSOCOMMAND) libname.$(DSOVERSION).dylib ...
+    TAB $(DSOCOMMAND) libname.$(DSOVERSION).dylib \
+    TAB TAB -install_name $(libdir)/libname.$(DSOMAJOR).dylib \
+    TAB TAB -current_version libname.$(DSOVERSION).dylib \
+    TAB TAB -compatibility_version $(DSOMAJOR).0 \
+    TAB TAB $(OBJECTS) $(LIBS)
+    TAB $(RM) libname.dylib
+    TAB $(RM) libname.$(DSOMAJOR).dylib
+    TAB $(LN) libname.$(DSOVERSION).dylib libname.$(DSOMAJOR).dylib
+    TAB $(LN) libname.$(DSOVERSION).dylib libname.dylib
+
+### DEPENDENCIES
+
+Static dependencies are expressed in each makefile following the target, for
+example:
+
+    foo: bar
+
+Static dependencies are only used when it is not possible to automatically
+generate them.  Automatic dependencies are stored in a file named
+"Dependencies" and included at the end of the makefile.  The following "depend"
+target rule is used to create the automatic dependencies:
+
+    depend:
+    TAB $(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
+
+We regenerate the automatic dependencies on an macOS system and express any
+non-macOS dependencies statically in the makefile.
+
+
+### INSTALL/UNINSTALL SUPPORT
+
+All makefiles contains install and uninstall rules which install or remove the
+corresponding software.  These rules must use the $(BUILDROOT) variable as a
+prefix to any installation directory so that CUPS can be installed in a
+temporary location for packaging by programs like rpmbuild.
+
+The $(INSTALL\_BIN), $(INSTALL\_COMPDATA), $(INSTALL\_CONFIG), $(INSTALL\_DATA),
+$(INSTALL\_DIR), $(INSTALL\_LIB), $(INSTALL\_MAN), and $(INSTALL\_SCRIPT) variables
+must be used when installing files so that the proper ownership and permissions
+are set on the installed files.
+
+The $(RANLIB) command must be run on any static libraries after installation
+since the symbol table is invalidated when the library is copied on some
+platforms.
+
index d2a8ca5..edd8ff0 100644 (file)
@@ -1,9 +1,10 @@
-CREDITS.txt - 2013-07-23
+CREDITS.txt - 2016-06-21
 ------------------------
 
 Few projects are completed by one person, and CUPS is no exception.  We'd
 like to thank the following individuals for their contributions:
 
+    Niklas 'Nille' Åkerström       - Swedish localization.
     Nathaniel Barbour              - Lots of testing and feedback.
     N. Becker                      - setsid().
     Philippe Combes                - French localization and buttons script.
@@ -17,20 +18,20 @@ like to thank the following individuals for their contributions:
     Wang Jian                      - CUPS RPM corrections.
     Roderick Johnstone             - Beta tester of the millenium.
     Till Kamppeter                 - Bug fixes, beta testing, evangelism.
-    Iñaki Larrañaga                - Basque localization.
-    Kenshi Muto                    - Japanese localization, patches, and
-                                     testing.
     Tomohiro Kato                  - Japanese localization.
     Kiko                           - Bug fixes.
     Sergey V. Kovalyov             - ESP Print Pro and CUPS beta tester.
     Marek Laane                    - Estonian translation.
+    Iñaki Larrañaga                - Basque localization.
     Mark Lawrence                  - Microsoft interoperability testing.
     Jeff Licquia                   - Bug fixes, beta testing, evangelism.
     Jason McMullan                 - Original CUPS RPM distributions.
     Àngel Mompó                    - Catalan localization.
     Wes Morgan                     - *BSD fixes.
+    Kenshi Muto                    - Japanese localization, patches, and
+                                     testing.
+    Brian Norris                   - Upstart support.
     Daniel Nylander                - Swedish localization.
-    Niklas 'Nille' Åkerström       - Swedish localization.
     Naruiko Ogasawara              - Japanese localization.
     Giulio Orsero                  - Bug fixes and testing.
     Michal Osowiecki               - Polish localization.
index cfd5b50..a9b86cd 100644 (file)
@@ -1,4 +1,4 @@
-INSTALL - CUPS v2.1.4 - 2016-06-14
+INSTALL - CUPS v2.2.0 - 2016-09-13
 ----------------------------------
 
 This file describes how to compile and install CUPS from source code. For more
@@ -30,24 +30,15 @@ BEFORE YOU BEGIN
     make does not support "include".
 
     Besides these tools you'll want ZLIB library for compression support, the
-    CDSA, GNU TLS, or OpenSSL libraries for encryption support, and either MIT
-    (1.6.3 or higher) or Heimdal Kerberos for Kerberos support.  CUPS will
-    compile and run without these, however you'll miss out on many of the
-    features provided by CUPS.
+    GNU TLS library for encryption support on platforms other than iOS, macOS,
+    or Windows, and either MIT (1.6.3 or higher) or Heimdal Kerberos for
+    Kerberos support.  CUPS will compile and run without these, however you'll
+    miss out on many of the features provided by CUPS.
 
     Also, please note that CUPS does not include print filters to support PDF
     or raster printing.  You *must* download GPL Ghostscript and/or the Open
     Printing CUPS filters package separately to print on operating systems
-    other than OS X.
-
-
-COMPILING THE SUBVERSION REPOSITORY CODE
-
-    The CUPS Subversion repository doesn't hold a copy of the pre-built
-    configure script.  You'll need to run the GNU autoconf software (2.60 or
-    higher) to create it:
-
-       autoconf
+    other than macOS.
 
 
 CONFIGURATION
@@ -98,11 +89,19 @@ CONFIGURATION
     and diagnose a variety of common problems - use the "--enable-unit-tests"
     configure option to run them at build time.
 
-    On OS X, use the "--with-archflags" option to build with the correct set of
+    On macOS, use the "--with-archflags" option to build with the correct set of
     architectures:
 
         ./configure --with-archflags="-arch i386 -arch x86_64" ...
 
+        Note: Current versions of macOS DO NOT allow installation to
+        /usr with the default system integrity settings.  In addition,
+        we do not recommend replacing the CUPS supplied with macOS
+        because not all versions of CUPS are compatible with every
+        macOS release, and because software updates will replace parts
+        of your local installation potentially rendering your system
+        unusable.
+
     Once you have configured things, just type:
 
        make ENTER
diff --git a/IPPTOOL.txt b/IPPTOOL.txt
deleted file mode 100644 (file)
index 2293a45..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-IPPTOOL.txt - 2013-07-15
-------------------------
-
-See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
-
-
-INTRODUCTION
-
-    CUPS includes two user programs for IPP printers.  The first is called
-    ipptool and can be used to send arbitrary IPP requests to a CUPS server or
-    IPP printer.  This tool started life as part of the CUPS automated test
-    suite and has grown to support complex conformance tests and a simple way
-    to query printer, job, and subscription attributes.
-
-    The second program called ippfind that can be used to find IPP printers
-    that have registered themselves using Bonjour (DNS-SD, mDNS, and Zeroconf)
-    and run commands such as ipptool.
-
-
-READING THE DOCUMENTATION
-
-    Full documentation on the ipptool command can be found in the
-    "man-ipptool.html" and "man-ipptoolfile.html" files; the latter describes
-    the test file format supported by ipptool.
-
-    Full documentation on the ippfind command can be found in the
-    "man-ippfind.html" file.
-
-
-IPPFIND BASIC USAGE
-
-    The ippfind command can be used to discover IPP printers on your network.
-    For example, the following command prints the printer URI of registered IPP
-    printers:
-
-        ippfind
-
-    To find all color IPP printers, run:
-
-        ippfind --txt-color T
-
-    And to run the IPP Everywhere conformance test file on every registered IPP
-    printer, run the following command:
-
-        ippfind _ipp._tcp,_print --exec ipptool -t '{}' ipp-everywhere.test \;
-
-
-IPPTOOL BASIC USAGE
-
-    The ipptool command requires a printer URI and one or more "test" files that
-    describe the operations, attributes to display, and expected status and
-    attribute values. Several standard files are included with CUPS, for example
-    to show a list of pending print jobs on a CUPS printer called "myprinter"
-    you'd run:
-
-        ipptool ipp://localhost/printers/myprinter get-jobs.test
-
-    which would produce something like this:
-
-       job-id job-state    job-name     job-originating-user-name
-       ------ ------------ ------------ -------------------------
-       72     pending      testfile.pdf msweet
-       73     pending      testfile.ps  msweet
-       74     pending-held testfile.jpg msweet
-       75     pending-held testfile.txt msweet
-
-    To get output suitable for import into a spreadsheet, use the "-c" (CSV)
-    option:
-
-        ipptool -c ipp://localhost/printers/myprinter get-jobs.test
-
-    which will produce something like this:
-
-       job-id,job-state,job-name,job-originating-user-name
-       72,pending,testfile.pdf,msweet
-       73,pending,testfile.ps,msweet
-       74,pending-held,testfile.jpg,msweet
-       75,pending-held,testfile.txt,msweet
-
-
-STANDARD TEST FILES
-
-    The following standard test files are included with ipptool:
-
-        create-printer-subscription.test    Creates a printer subscription for
-                                            state change notifications
-        get-completed-jobs.test             Shows a list of completed jobs
-        get-jobs.test                       Shows a list of pending jobs
-        get-notifications.test              Shows events for an ippget
-                                           subscription.
-        get-printer-attributes.test         Shows printer attributes
-        get-subscriptions.test              Shows a list of subscriptions
-        ipp-1.1.test                        IPP/1.1 conformance test suite
-        ipp-2.0.test                        IPP/2.0 conformance test suite
-        ipp-2.1.test                        IPP/2.1 conformance test suite
-        ipp-2.2.test                        IPP/2.2 conformance test suite
-        ipp-everywhere.test                 IPP Everywhere conformance test
-                                            suite
-        print-job.test                      Prints a file
-        print-job-deflate.test              Prints a file, compressing with
-                                            deflate.
-        print-job-gzip.test                 Prints a file, compressing with gzip
-        validate-job.test                   Validates attributes for a job
-                                            submission.
-
-
-CONFORMANCE TESTS
-
-    We provide basic IPP conformance tests for IPP/1.1, IPP/2.0, IPP/2.1,
-    IPP/2.2, and IPP Everywhere.  For a given printer URI, the following
-    commands perform tests at each level:
-
-        ipptool -tf filename [options] -I printer-uri ipp-1.1.test
-        ipptool -tf filename [options] -I -V 2.0 printer-uri ipp-2.0.test
-        ipptool -tf filename [options] -I -V 2.1 printer-uri ipp-2.1.test
-        ipptool -tf filename [options] -I -V 2.2 printer-uri ipp-2.2.test
-
-    The filename must use a format supported by the printer; ipptool will guess
-    the MIME media type using the extension, otherwise application/octet stream
-    will be used.  The following standard test files are included:
-
-       color.jpg
-       document-a4.pdf
-       document-a4.ps
-       document-letter.pdf
-       document-letter.ps
-       gray.jpg
-       onepage-a4.pdf
-       onepage-a4.ps
-       onepage-letter.pdf
-       onepage-letter.ps
-       testfile.jpg
-       testfile.pcl
-       testfile.pdf
-       testfile.ps
-       testfile.txt
-
-    Useful options include the following:
-
-        -4           Connect using IPv4
-        -6           Connect using IPv6
-        -C           Send chunked requests (default)
-        -d name=val  Define a variable
-        -E           Test IPP with HTTP Upgrade to TLS
-        -L           Send requests using the Content-Length header (HTTP/1.0)
-        -S           Test IPP over HTTPS (default for ipps: URIs)
-        -T seconds   Set a timeout for responses in seconds
-        -v           Be verbose, showing all attributes sent and received
-        -X           Produce XML (Apple plist) output
-
-    The printer-uri must be a URI supported by the printer using the "ipp" or
-    "ipps" scheme, for example:
-
-        ipp://192.168.0.1/ipp
-        ipps://192.168.0.1/ipp/print
-
-    Print-by-reference (URL) printing can be tested by defining the document-uri
-    variable as a URL, for example:
-
-        ipptool -tf filename -d document-uri=url -I printer-uri ipp-1.1.test
-
-    The standard test files are available on cups.org under the "test"
-    directory, for example:
-
-        ipptool -tf document-a4.pdf \
-            -d document-uri=http://www.cups.org/test/document-a4.pdf \
-            ipp://192.168.0.1/ipp -I -V 2.0 ipp-2.0.test
-
-    The "document" test files contain 4 pages each.  Doing the IPP conformance
-    tests will will produce up to 90 pages on various media, depending on the
-    printer.
-
-
-IPP EVERYWHERE TESTING
-
-    The IPP Everywhere tests use sample PWG raster files available from:
-
-        ftp://ftp.pwg.org/pub/pwg/ipp/examples
-
-    Extract the corresponding ZIP archives into the current directory before
-    running the ipp-everywhere.test file.  The test file will attempt to print
-    each PWG Raster file that is supported by the printer being tested - up to
-    372 pages including the 90 pages produced by the regular IPP test suite.
-
-
-GETTING SUPPORT AND OTHER RESOURCES
-
-    If you have problems, READ THE DOCUMENTATION FIRST!  We also provide
-    discussion forums which are available at:
-
-       http://www.cups.org/
-
-
-REPORTING BUGS
-
-    If you believe you have discovered a bug in ippfind or ipptool, please fill
-    out the bug form at:
-
-       http://www.cups.org/str.php
-
-    Be sure to identify the version of CUPS and ippfind/ipptool (if you
-    downloaded the standalone version) you are using, the printer (if any) and
-    firmware version, and include any files that apply.
-
-    If you downloaded the standalone version of ippfind/ipptool, please also
-    re-run the command with debug logging enabled.  Run the following commands
-    on Windows to enable debug logging:
-
-        setdebug.bat
-
-    For Linux and Mac OS X use:
-
-       CUPS_DEBUG_LOG=ipptool.log; export CUPS_DEBUG_LOG
-       CUPS_DEBUG_LEVEL=6; export CUPS_DEBUG_LEVEL
-
-    Then when you run the ippfind or ipptool command a new "ipptool.log" file
-    will be created with detailed information - attach this file to the bug you
-    file as well.
-
-
-LEGAL STUFF
-
-    CUPS is Copyright 2007-2013 by Apple Inc.  CUPS and the CUPS logo are
-    trademarks of Apple Inc.
-
-    The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
-
-    CUPS is provided under the terms of version 2 of the GNU General Public
-    License and GNU Library General Public License. This program is distributed
-    in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-    the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-    See the "doc/help/license.html" or "LICENSE.txt" files for more information.
index 658ea1e..51d42e2 100644 (file)
@@ -1,6 +1,6 @@
                           CUPS License Agreement
 
-                     Copyright 2007-2013 by Apple Inc.
+                     Copyright 2007-2016 by Apple Inc.
                             1 Infinite Loop
                          Cupertino, CA 95014 USA
 
@@ -70,8 +70,8 @@ the following special exception:
        b. An Apple Operating System means any operating system
           software developed and/or marketed by Apple Inc.,
           including but not limited to all existing releases and
-          versions of Apple's Darwin, OS X, and OS X Server
-          products and all follow-on releases and future
+          versions of Apple's Darwin, iOS, macOS, macOS Server, and
+          tvOS products and all follow-on releases and future
           versions thereof.
 
        c. This exception is only available for Apple
index 3afef0a..332a127 100644 (file)
@@ -1,6 +1,4 @@
 #
-# "$Id: Makedefs.in 12519 2015-02-17 13:10:19Z msweet $"
-#
 # Common makefile definitions for CUPS.
 #
 # Copyright 2007-2014 by Apple Inc.
@@ -261,8 +259,3 @@ USBQUIRKS   =       @USBQUIRKS@
        echo -n Compressing $<...
        $(RM) $@
        gzip -v9 <$< >$@
-
-
-#
-# End of "$Id: Makedefs.in 12519 2015-02-17 13:10:19Z msweet $"
-#
index 94ce714..264dc1b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,7 @@
 #
-# "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $"
-#
 # Top-level Makefile for CUPS.
 #
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
 #
 # These coded instructions, statements, and computer programs are the
@@ -130,6 +128,9 @@ depend:
 #
 # At least checker-231 is required.
 #
+# Alternatively, use "--analyze -Xanalyzer -analyzer-output=text" for OPTIM (text
+# output instead of HTML...)
+#
 
 .PHONY: clang clang-changes
 clang:
@@ -265,17 +266,11 @@ debugcheck:       all unittests
 #
 
 apihelp:
-       for dir in cgi-bin cups filter ppdc scheduler; do\
+       for dir in cups filter; do\
                echo Generating API help in $$dir... ;\
                (cd $$dir; $(MAKE) $(MFLAGS) apihelp) || exit 1;\
        done
 
-framedhelp:
-       for dir in cgi-bin cups filter ppdc scheduler; do\
-               echo Generating framed API help in $$dir... ;\
-               (cd $$dir; $(MAKE) $(MFLAGS) framedhelp) || exit 1;\
-       done
-
 
 #
 # Create an Xcode docset using Mini-XML's mxmldoc (http://www.msweet.org/)...
@@ -319,22 +314,15 @@ sloc:
 
 EPMFLAGS       =       -v --output-dir dist $(EPMARCH)
 
-bsd deb pkg slackware:
+bsd deb epm pkg rpm slackware:
        epm $(EPMFLAGS) -f $@ cups packaging/cups.list
 
-epm:
-       epm $(EPMFLAGS) -s packaging/installer.gif cups packaging/cups.list
-
-rpm:
-       epm $(EPMFLAGS) -f rpm -s packaging/installer.gif cups packaging/cups.list
-
 .PHONEY:       dist
 dist:  all
        $(RM) -r dist
        $(MAKE) $(MFLAGS) epm
        case `uname` in \
                *BSD*) $(MAKE) $(MFLAGS) bsd;; \
-               Darwin*) $(MAKE) $(MFLAGS) osx;; \
                Linux*) test ! -x /usr/bin/rpm || $(MAKE) $(MFLAGS) rpm;; \
                SunOS*) $(MAKE) $(MFLAGS) pkg;; \
        esac
@@ -345,8 +333,3 @@ dist:       all
 #
 
 .NOTPARALLEL:
-
-
-#
-# End of "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $".
-#
index 86ea94b..ddad00f 100644 (file)
@@ -1,4 +1,4 @@
-README - CUPS v2.1.4 - 2016-06-14
+README - CUPS v2.2.0 - 2016-09-13
 ---------------------------------
 
 Looking for compile instructions?  Read the file "INSTALL.txt" instead...
@@ -7,7 +7,7 @@ Looking for compile instructions?  Read the file "INSTALL.txt" instead...
 INTRODUCTION
 
     CUPS is a standards-based, open source printing system developed by Apple
-    Inc. for OS® X and other UNIX®-like operating systems.  CUPS uses the
+    Inc. for macOS® and other UNIX®-like operating systems.  CUPS uses the
     Internet Printing Protocol ("IPP") and provides System V and Berkeley
     command-line interfaces, a web interface, and a C API to manage printers and
     print jobs.  It supports printing to both local (parallel, serial, USB) and
index 2d6e7eb..2f4f0c1 100644 (file)
@@ -4,54 +4,50 @@ ipp.o: ipp.c backend-private.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
+  ../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
 lpd.o: lpd.c ../cups/http-private.h ../config.h ../cups/language.h \
   ../cups/array.h ../cups/versioning.h ../cups/http.h \
   ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h \
   backend-private.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/debug-private.h ../cups/array-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 dnssd.o: dnssd.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 snmp.o: snmp.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 socket.o: socket.c ../cups/http-private.h ../config.h ../cups/language.h \
   ../cups/array.h ../cups/versioning.h ../cups/http.h \
   ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h \
   backend-private.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/debug-private.h ../cups/array-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 test1284.o: test1284.c ../cups/string-private.h ../config.h ieee1284.c \
   backend-private.h ../cups/cups-private.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
+  ../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
 testbackend.o: testbackend.c ../cups/string-private.h ../config.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
@@ -62,16 +58,15 @@ testsupplies.o: testsupplies.c backend-private.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 usb.o: usb.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h usb-darwin.c \
-  ../cups/file-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
+  usb-darwin.c ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h
index 61a2ce8..ae08947 100644 (file)
@@ -1,18 +1,16 @@
 #
-# "$Id: Makefile 11859 2014-05-08 22:42:44Z msweet $"
+# Backend makefile for CUPS.
 #
-#   Backend makefile for CUPS.
+# Copyright 2007-2016 by Apple Inc.
+# Copyright 1997-2007 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2014 by Apple Inc.
-#   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
-#
-#   This file is subject to the Apple OS-Developed Software exception.
+# This file is subject to the Apple OS-Developed Software exception.
 #
 
 include ../Makedefs
@@ -88,7 +86,7 @@ unittests:    $(UNITTESTS)
 #
 
 clean:
-       $(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns
+       $(RM) $(OBJS) $(TARGETS) $(UNITTESTS) $(LIBOBJS) http https ipps mdns socket-static
 
 
 #
@@ -295,6 +293,12 @@ socket:    socket.o ../cups/$(LIBCUPS) libbackend.a
        echo Linking $@...
        $(CC) $(LDFLAGS) -o socket socket.o libbackend.a $(LIBS)
 
+socket-static: socket.o  ../cups/$(LIBCUPSSTATIC) libbackend.a
+       echo Linking $@...
+       $(CC) $(LDFLAGS) -o socket-static socket.o libbackend.a \
+               ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
+               $(COMMONLIBS) $(LIBZ)
+
 
 #
 # usb
@@ -312,8 +316,3 @@ usb.o:      usb.c usb-darwin.c usb-libusb.c usb-unix.c
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 11859 2014-05-08 22:42:44Z msweet $".
-#
index 2ad3d48..04bf516 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: backend-private.h 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Backend support definitions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -331,8 +329,3 @@ extern int          backendWaitLoop(int snmp_fd, http_addr_t *addr,
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_BACKEND_PRIVATE_H_ */
-
-
-/*
- * End of "$Id: backend-private.h 11558 2014-02-06 18:33:34Z msweet $".
- */
index 53cf779..0aa01a9 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: dnssd.c 12970 2015-11-13 20:02:51Z msweet $"
- *
  * DNS-SD discovery backend for CUPS.
  *
  * Copyright 2008-2015 by Apple Inc.
@@ -1042,9 +1040,7 @@ query_callback(
                   "interfaceIndex=%d, errorCode=%d, fullName=\"%s\", "
                  "rrtype=%u, rrclass=%u, rdlen=%u, rdata=%p, ttl=%u, "
                  "context=%p)\n",
-          sdRef, flags, interfaceIndex, errorCode,
-         fullName ? fullName : "(null)", rrtype, rrclass, rdlen, rdata, ttl,
-         context);
+          sdRef, flags, interfaceIndex, errorCode, fullName, rrtype, rrclass, rdlen, rdata, ttl, context);
 
  /*
   * Only process "add" data...
@@ -1057,9 +1053,7 @@ query_callback(
   fprintf(stderr, "DEBUG2: query_callback(browser=%p, interfaceIndex=%d, "
                   "protocol=%d, event=%d, fullName=\"%s\", rrclass=%u, "
                  "rrtype=%u, rdata=%p, rdlen=%u, flags=%x, context=%p)\n",
-          browser, interfaceIndex, protocol, event,
-         fullName ? fullName : "(null)", rrclass, rrtype, rdata,
-         (unsigned)rdlen, flags, context);
+          browser, interfaceIndex, protocol, event, fullName, rrclass, rrtype, rdata, (unsigned)rdlen, flags, context);
 
  /*
   * Only process "add" data...
@@ -1319,8 +1313,3 @@ unquote(char       *dst,          /* I - Destination buffer */
 
   *dst = '\0';
 }
-
-
-/*
- * End of "$Id: dnssd.c 12970 2015-11-13 20:02:51Z msweet $".
- */
index a2fc623..c77403b 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: ieee1284.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * IEEE-1284 support functions 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
@@ -20,6 +18,7 @@
  */
 
 #include "backend-private.h"
+#include <cups/ppd-private.h>
 
 
 /*
@@ -472,8 +471,3 @@ backendGetMakeModel(
 
   return (0);
 }
-
-
-/*
- * End of "$Id: ieee1284.c 11594 2014-02-14 20:09:01Z msweet $".
- */
index 69970a2..67383c7 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: ipp.c 12896 2015-10-09 13:15:22Z msweet $"
- *
  * IPP backend for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -20,6 +18,7 @@
  */
 
 #include "backend-private.h"
+#include <cups/ppd-private.h>
 #include <cups/array-private.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -108,6 +107,7 @@ static const char * const pattrs[] =        /* Printer attributes we want */
   "copies-supported",
   "cups-version",
   "document-format-supported",
+  "job-password-encryption-supported",
   "marker-colors",
   "marker-high-levels",
   "marker-levels",
@@ -236,9 +236,10 @@ main(int  argc,                            /* I - Number of command-line args */
   int          delay,                  /* Delay for retries */
                prev_delay;             /* Previous delay */
   const char   *compression;           /* Compression mode */
-  int          waitjob,                /* Wait for job complete? */
+  int          waitjob,                        /* Wait for job complete? */
                waitjob_tries = 0,      /* Number of times we've waited */
                waitprinter;            /* Wait for printer ready? */
+  time_t       waittime;               /* Wait time for held jobs */
   _cups_monitor_t monitor;             /* Monitoring data */
   ipp_attribute_t *job_id_attr;                /* job-id attribute */
   int          job_id;                 /* job-id value */
@@ -249,6 +250,7 @@ main(int  argc,                             /* I - Number of command-line args */
 #endif /* HAVE_LIBZ */
   ipp_attribute_t *copies_sup;         /* copies-supported */
   ipp_attribute_t *cups_version;       /* cups-version */
+  ipp_attribute_t *encryption_sup;     /* job-password-encryption-supported */
   ipp_attribute_t *format_sup;         /* document-format-supported */
   ipp_attribute_t *job_auth;           /* job-authorization-uri */
   ipp_attribute_t *media_col_sup;      /* media-col-supported */
@@ -686,44 +688,6 @@ main(int  argc,                            /* I - Number of command-line args */
                       0, NULL);
   httpSetTimeout(http, 30.0, timeout_cb, NULL);
 
-  if (httpIsEncrypted(http))
-  {
-   /*
-    * Validate TLS credentials...
-    */
-
-    cups_array_t       *creds;         /* TLS credentials */
-    cups_array_t       *lcreds = NULL; /* Loaded credentials */
-    http_trust_t       trust;          /* Trust level */
-    static const char  *trusts[] = { NULL, "+cups-pki-invalid", "+cups-pki-changed", "+cups-pki-expired", NULL, "+cups-pki-unknown" };
-                                       /* Trust keywords */
-
-    if (!httpCopyCredentials(http, &creds))
-    {
-      trust = httpCredentialsGetTrust(creds, hostname);
-
-      update_reasons(NULL, "-cups-pki-invalid,cups-pki-changed,cups-pki-expired,cups-pki-unknown");
-      if (trusts[trust])
-      {
-        update_reasons(NULL, trusts[trust]);
-        return (CUPS_BACKEND_STOP);
-      }
-
-      if (httpLoadCredentials(NULL, &lcreds, hostname))
-      {
-       /*
-        * Could not load the credentials, let's save the ones we have so we
-        * can detect changes...
-        */
-
-        httpSaveCredentials(NULL, creds, hostname);
-      }
-
-      httpFreeCredentials(lcreds);
-      httpFreeCredentials(creds);
-    }
-  }
-
  /*
   * See if the printer supports SNMP...
   */
@@ -854,6 +818,76 @@ main(int  argc,                            /* I - Number of command-line args */
   else if (!http)
     return (CUPS_BACKEND_FAILED);
 
+  if (httpIsEncrypted(http))
+  {
+   /*
+    * Validate TLS credentials...
+    */
+
+    cups_array_t       *creds;         /* TLS credentials */
+    cups_array_t       *lcreds = NULL; /* Loaded credentials */
+    http_trust_t       trust;          /* Trust level */
+    char               credinfo[1024], /* Information on credentials */
+                       lcredinfo[1024];/* Information on saved credentials */
+    static const char  * const trusts[] = { NULL, "+cups-pki-invalid", "+cups-pki-changed", "+cups-pki-expired", NULL, "+cups-pki-unknown" };
+                                       /* Trust keywords */
+    static const char  * const trust_msgs[] =
+    {
+      "Credentials are OK/trusted",
+      "Credentials are invalid",
+      "Credentials have changed",
+      "Credentials are expired",
+      "Credentials have been renewed",
+      "Credentials are unknown/new"
+    };
+
+    fputs("DEBUG: Connection is encrypted.\n", stderr);
+
+    if (!httpCopyCredentials(http, &creds))
+    {
+      trust = httpCredentialsGetTrust(creds, hostname);
+      httpCredentialsString(creds, credinfo, sizeof(credinfo));
+
+      fprintf(stderr, "DEBUG: %s (%s)\n", trust_msgs[trust], cupsLastErrorString());
+      fprintf(stderr, "DEBUG: Printer credentials: %s\n", credinfo);
+
+      if (!httpLoadCredentials(NULL, &lcreds, hostname))
+      {
+        httpCredentialsString(lcreds, lcredinfo, sizeof(lcredinfo));
+       fprintf(stderr, "DEBUG: Stored credentials: %s\n", lcredinfo);
+      }
+      else
+        fputs("DEBUG: No stored credentials.\n", stderr);
+
+      update_reasons(NULL, "-cups-pki-invalid,cups-pki-changed,cups-pki-expired,cups-pki-unknown");
+      if (trusts[trust])
+      {
+        update_reasons(NULL, trusts[trust]);
+        return (CUPS_BACKEND_STOP);
+      }
+
+      if (!lcreds)
+      {
+       /*
+        * Could not load the credentials, let's save the ones we have so we
+        * can detect changes...
+        */
+
+        httpSaveCredentials(NULL, creds, hostname);
+      }
+
+      httpFreeCredentials(lcreds);
+      httpFreeCredentials(creds);
+    }
+    else
+    {
+      fputs("DEBUG: No printer credentials.\n", stderr);
+
+      update_reasons(NULL, "cups-pki-unknown");
+      return (CUPS_BACKEND_STOP);
+    }
+  }
+
   update_reasons(NULL, "-connecting-to-device");
   _cupsLangPrintFilter(stderr, "INFO", _("Connected to printer."));
 
@@ -880,6 +914,7 @@ main(int  argc,                             /* I - Number of command-line args */
 #endif /* HAVE_LIBZ */
   copies_sup           = NULL;
   cups_version         = NULL;
+  encryption_sup       = NULL;
   format_sup           = NULL;
   media_col_sup        = NULL;
   supported            = NULL;
@@ -1093,7 +1128,7 @@ main(int  argc,                           /* I - Number of command-line args */
                         "compression value \"%s\".\n", compression);
         compression = NULL;
       }
-      else if (!compression)
+      else if (!compression && (!strcmp(final_content_type, "image/pwg-raster") || !strcmp(final_content_type, "image/urf")))
       {
         if (ippContainsString(compression_sup, "gzip"))
           compression = "gzip";
@@ -1125,6 +1160,8 @@ main(int  argc,                           /* I - Number of command-line args */
 
     cups_version = ippFindAttribute(supported, "cups-version", IPP_TAG_TEXT);
 
+    encryption_sup = ippFindAttribute(supported, "job-password-encryption-supported", IPP_TAG_KEYWORD);
+
     if ((format_sup = ippFindAttribute(supported, "document-format-supported",
                                       IPP_TAG_MIMETYPE)) != NULL)
     {
@@ -1309,6 +1346,41 @@ main(int  argc,                          /* I - Number of command-line args */
       if ((mandatory = ppdFindAttr(ppd, "cupsMandatory", NULL)) != NULL)
         strlcpy(mandatory_attrs, mandatory->value, sizeof(mandatory_attrs));
     }
+
+   /*
+    * Validate job-password/-encryption...
+    */
+
+    if (cupsGetOption("job-password", num_options, options))
+    {
+      const char *keyword;             /* job-password-encryption value */
+      static const char * const hashes[] =
+      {                                        /* List of supported hash algorithms, in order of preference */
+        "sha-512",
+        "sha-384",
+        "sha-512_256",
+        "sha-512-224",
+        "sha-256",
+        "sha-224",
+        "sha",
+        "none"
+      };
+
+      if ((keyword = cupsGetOption("job-password-encryption", num_options, options)) == NULL || !ippContainsString(encryption_sup, keyword))
+      {
+       /*
+        * Either no job-password-encryption or the value isn't supported by
+        * the printer...
+        */
+
+        for (i = 0; i < (int)(sizeof(hashes) / sizeof(hashes[0])); i ++)
+          if (ippContainsString(encryption_sup, hashes[i]))
+            break;
+
+        if (i < (int)(sizeof(hashes) / sizeof(hashes[0])))
+          num_options = cupsAddOption("job-password-encryption", hashes[i], num_options, &options);
+      }
+    }
   }
   else
     num_options = 0;
@@ -1317,24 +1389,10 @@ main(int  argc,                         /* I - Number of command-line args */
 
   if (format_sup != NULL)
   {
-    for (i = 0; i < format_sup->num_values; i ++)
-      if (!_cups_strcasecmp(final_content_type,
-                            format_sup->values[i].string.text))
-      {
-        document_format = final_content_type;
-       break;
-      }
-
-    if (!document_format)
-    {
-      for (i = 0; i < format_sup->num_values; i ++)
-       if (!_cups_strcasecmp("application/octet-stream",
-                             format_sup->values[i].string.text))
-       {
-         document_format = "application/octet-stream";
-         break;
-       }
-    }
+    if (ippContainsString(format_sup, final_content_type))
+      document_format = final_content_type;
+    else if (ippContainsString(format_sup, "application/octet-stream"))
+      document_format = "application/octet-stream";
   }
 
   fprintf(stderr, "DEBUG: final_content_type=\"%s\", document_format=\"%s\"\n",
@@ -1927,7 +1985,7 @@ main(int  argc,                           /* I - Number of command-line args */
 
     _cupsLangPrintFilter(stderr, "INFO", _("Waiting for job to complete."));
 
-    for (delay = _cupsNextDelay(0, &prev_delay); !job_canceled;)
+    for (delay = _cupsNextDelay(0, &prev_delay), waittime = time(NULL) + 30; !job_canceled;)
     {
      /*
       * Check for side-channel requests...
@@ -2038,10 +2096,11 @@ main(int  argc,                         /* I - Number of command-line args */
                    job_sheets->values[0].integer);
 
         /*
-          * Stop polling if the job is finished or pending-held...
+          * Stop polling if the job is finished or pending-held for 30 seconds...
          */
 
-          if (job_state->values[0].integer > IPP_JOB_STOPPED)
+          if (job_state->values[0].integer > IPP_JSTATE_STOPPED ||
+             (job_state->values[0].integer == IPP_JSTATE_HELD && time(NULL) > waittime))
          {
            ippDelete(response);
            break;
@@ -3290,7 +3349,7 @@ sigterm_handler(int sig)          /* I - Signal */
   if (tmpfilename[0])
     unlink(tmpfilename);
 
-  exit(1);
+  _exit(1);
 }
 
 
@@ -3500,7 +3559,3 @@ update_reasons(ipp_attribute_t *attr,     /* I - printer-state-reasons or NULL */
   else if (rem[0])
     fprintf(stderr, "%s\n", rem);
 }
-
-/*
- * End of "$Id: ipp.c 12896 2015-10-09 13:15:22Z msweet $".
- */
index 7daa9a8..2b81107 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: lpd.c 13040 2016-01-11 20:29:13Z msweet $"
- *
  * Line Printer Daemon backend for CUPS.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -77,6 +75,7 @@ static int    abort_job = 0;          /* Non-zero if we get SIGTERM */
  * Local functions...
  */
 
+static int     cups_rresvport(int *port, int family);
 static int     lpd_command(int lpd_fd, char *format, ...);
 static int     lpd_queue(const char *hostname, http_addrlist_t *addrlist,
                          const char *printer, int print_fd, int snmp_fd,
@@ -85,9 +84,6 @@ static int    lpd_queue(const char *hostname, http_addrlist_t *addrlist,
                          int reserve, int manual_copies, int timeout,
                          int contimeout, const char *orighost);
 static ssize_t lpd_write(int lpd_fd, char *buffer, size_t length);
-#ifndef HAVE_RRESVPORT_AF
-static int     rresvport_af(int *port, int family);
-#endif /* !HAVE_RRESVPORT_AF */
 static void    sigterm_handler(int sig);
 
 
@@ -573,6 +569,84 @@ main(int  argc,                            /* I - Number of command-line arguments (6 or 7) */
 
 
 /*
+ * 'cups_rresvport()' - A simple implementation of rresvport_af().
+ */
+
+static int                             /* O  - Socket or -1 on error */
+cups_rresvport(int *port,              /* IO - Port number to bind to */
+               int family)             /* I  - Address family */
+{
+  http_addr_t  addr;                   /* Socket address */
+  int          fd;                     /* Socket file descriptor */
+
+
+ /*
+  * Try to create an IPv4 socket...
+  */
+
+  if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
+    return (-1);
+
+ /*
+  * Initialize the address buffer...
+  */
+
+  memset(&addr, 0, sizeof(addr));
+  addr.addr.sa_family = (sa_family_t)family;
+
+ /*
+  * Try to bind the socket to a reserved port...
+  */
+
+  while (*port > 511)
+  {
+   /*
+    * Set the port number...
+    */
+
+    _httpAddrSetPort(&addr, *port);
+
+   /*
+    * Try binding the port to the socket; return if all is OK...
+    */
+
+    if (!bind(fd, (struct sockaddr *)&addr, (socklen_t)httpAddrLength(&addr)))
+      return (fd);
+
+   /*
+    * Stop if we have any error other than "address already in use"...
+    */
+
+    if (errno != EADDRINUSE)
+    {
+      httpAddrClose(NULL, fd);
+
+      return (-1);
+    }
+
+   /*
+    * Try the next port...
+    */
+
+    (*port)--;
+  }
+
+ /*
+  * Wasn't able to bind to a reserved port, so close the socket and return
+  * -1...
+  */
+
+#ifdef WIN32
+  closesocket(fd);
+#else
+  close(fd);
+#endif /* WIN32 */
+
+  return (-1);
+}
+
+
+/*
  * 'lpd_command()' - Send an LPR command sequence and wait for a reply.
  */
 
@@ -753,7 +827,7 @@ lpd_queue(const char      *hostname,        /* I - Host to connect to */
        * priviledged lport between 721 and 731...
        */
 
-       if ((fd = rresvport_af(&lport, addr->addr.addr.sa_family)) < 0)
+       if ((fd = cups_rresvport(&lport, addr->addr.addr.sa_family)) < 0)
        {
          perror("DEBUG: Unable to reserve port");
          sleep(1);
@@ -1226,86 +1300,6 @@ lpd_write(int     lpd_fd,                /* I - LPD socket */
 }
 
 
-#ifndef HAVE_RRESVPORT_AF
-/*
- * 'rresvport_af()' - A simple implementation of rresvport_af().
- */
-
-static int                             /* O  - Socket or -1 on error */
-rresvport_af(int *port,                        /* IO - Port number to bind to */
-             int family)               /* I  - Address family */
-{
-  http_addr_t  addr;                   /* Socket address */
-  int          fd;                     /* Socket file descriptor */
-
-
- /*
-  * Try to create an IPv4 socket...
-  */
-
-  if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
-    return (-1);
-
- /*
-  * Initialize the address buffer...
-  */
-
-  memset(&addr, 0, sizeof(addr));
-  addr.addr.sa_family = (sa_family_t)family;
-
- /*
-  * Try to bind the socket to a reserved port...
-  */
-
-  while (*port > 511)
-  {
-   /*
-    * Set the port number...
-    */
-
-    _httpAddrSetPort(&addr, *port);
-
-   /*
-    * Try binding the port to the socket; return if all is OK...
-    */
-
-    if (!bind(fd, (struct sockaddr *)&addr, httpAddrLength(&addr)))
-      return (fd);
-
-   /*
-    * Stop if we have any error other than "address already in use"...
-    */
-
-    if (errno != EADDRINUSE)
-    {
-      httpAddrClose(NULL, fd);
-
-      return (-1);
-    }
-
-   /*
-    * Try the next port...
-    */
-
-    (*port)--;
-  }
-
- /*
-  * Wasn't able to bind to a reserved port, so close the socket and return
-  * -1...
-  */
-
-#  ifdef WIN32
-  closesocket(fd);
-#  else
-  close(fd);
-#  endif /* WIN32 */
-
-  return (-1);
-}
-#endif /* !HAVE_RRESVPORT_AF */
-
-
 /*
  * 'sigterm_handler()' - Handle 'terminate' signals that stop the backend.
  */
@@ -1317,8 +1311,3 @@ sigterm_handler(int sig)          /* I - Signal */
 
   abort_job = 1;
 }
-
-
-/*
- * End of "$Id: lpd.c 13040 2016-01-11 20:29:13Z msweet $".
- */
index 2cf5f72..8beced8 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: network.c 12124 2014-08-28 15:37:22Z msweet $"
- *
  * Common backend network APIs for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -301,8 +299,3 @@ backendNetworkSideCB(
 
   return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
 }
-
-
-/*
- * End of "$Id: network.c 12124 2014-08-28 15:37:22Z msweet $".
- */
index 3a82a52..fb7facd 100644 (file)
@@ -1,18 +1,16 @@
 #!/bin/sh
 #
-# "$Id$"
+# Psuedo-backend for CUPS testing purposes.
 #
-#   Psuedo-backend for CUPS testing purposes.
+# Copyright 2011 by Apple Inc.
 #
-#   Copyright 2011 by Apple Inc.
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
-#
-#   This file is subject to the Apple OS-Developed Software exception.
+# This file is subject to the Apple OS-Developed Software exception.
 #
 
 if test $# = 0; then
@@ -24,7 +22,3 @@ fi
 cat $6 >/dev/null
 sleep 5
 exit 0
-
-#
-# End of "$Id$".
-#
index 48b458a..baa3462 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: runloop.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Common run loop APIs for CUPS backends.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -525,8 +523,3 @@ backendWaitLoop(
 
   return (1);
 }
-
-
-/*
- * End of "$Id: runloop.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 38ef28e..c26e72a 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: snmp-supplies.c 12227 2014-10-21 13:42:04Z msweet $"
- *
  * SNMP supplies functions for CUPS.
  *
- * Copyright 2008-2014 by Apple Inc.
+ * Copyright 2008-2015 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -19,6 +17,7 @@
  */
 
 #include "backend-private.h"
+#include <cups/ppd-private.h>
 #include <cups/array.h>
 
 
@@ -1095,8 +1094,3 @@ utf16_to_utf8(
 
   cupsUTF32ToUTF8(dst, temp, (int)dstsize);
 }
-
-
-/*
- * End of "$Id: snmp-supplies.c 12227 2014-10-21 13:42:04Z msweet $".
- */
index d2dd1e0..e66edc9 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * SNMP discovery backend for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -1361,8 +1359,3 @@ update_cache(snmp_cache_t *device,        /* I - Device */
 
   list_device(device);
 }
-
-
-/*
- * End of "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $".
- */
index 11abd00..e515823 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: socket.c 11907 2014-06-09 18:35:32Z msweet $"
- *
  * AppSocket backend for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -514,8 +512,3 @@ wait_bc(int device_fd,                      /* I - Socket */
   else
     return (-1);
 }
-
-
-/*
- * End of "$Id: socket.c 11907 2014-06-09 18:35:32Z msweet $".
- */
index 3a32391..85ac8b5 100644 (file)
@@ -1,22 +1,16 @@
 /*
- * "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $"
+ * IEEE-1284 support functions test program for CUPS.
  *
- *   IEEE-1284 support functions test program for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * "LICENSE" which should have been included with this file.  If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   "LICENSE" which should have been included with this file.  If this
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main() - Test the device-ID functions.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -77,8 +71,3 @@ main(int  argc,                               /* I - Number of command-line args */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: test1284.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index b1f27e4..969083a 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testbackend.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * Backend test program for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -677,8 +675,3 @@ walk_cb(const char *oid,            /* I - OID */
 
   printf("CUPS_SC_CMD_SNMP_WALK %s, %d bytes (%s)\n", oid, datalen, temp);
 }
-
-
-/*
- * End of "$Id: testbackend.c 11594 2014-02-14 20:09:01Z msweet $".
- */
index 0a300bc..f541484 100644 (file)
@@ -1,21 +1,15 @@
 /*
- * "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $"
+ * SNMP supplies test program for CUPS.
  *
- *   SNMP supplies test program for CUPS.
+ * Copyright 2008-2011 by Apple Inc.
  *
- *   Copyright 2008-2011 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * "LICENSE" which should have been included with this file.  If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   "LICENSE" which should have been included with this file.  If this
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main() - Show the supplies state of a printer.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -76,8 +70,3 @@ main(int  argc,                               /* I - Number of command-line args */
     sleep(5);
   }
 }
-
-
-/*
- * End of "$Id: testsupplies.c 3247 2011-05-12 06:22:31Z msweet $".
- */
index 285bccc..24693cd 100644 (file)
@@ -1,7 +1,5 @@
 /*
- * "$Id: usb-darwin.c 12928 2015-10-23 21:31:58Z msweet $"
- *
- * Copyright 2005-2015 Apple Inc. All rights reserved.
+ * Copyright 2005-2016 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
@@ -63,6 +61,7 @@
 #include <cups/file-private.h>
 #include <cups/sidechannel.h>
 #include <cups/language-private.h>
+#include <cups/ppd-private.h>
 #include "backend-private.h"
 #include <CoreFoundation/CoreFoundation.h>
 #include <IOKit/usb/IOUSBLib.h>
@@ -203,7 +202,7 @@ typedef struct classdriver_s                /**** g.classdriver context ****/
 
 } classdriver_t;
 
-typedef Boolean (*iterator_callback_t)(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting);
+typedef Boolean (*iterator_callback_t)(io_service_t obj, printer_interface_t printerIntf, void *refcon);
 
 typedef struct iterator_reference_s    /**** Iterator reference data */
 {
@@ -232,6 +231,7 @@ typedef struct globals_s
   UInt32               location;
   UInt8                        interfaceNum;
   UInt8                        alternateSetting;
+  UInt8                 interfaceProtocol;
 
   CFRunLoopTimerRef    status_timer;
 
@@ -265,8 +265,8 @@ int Iterating = 0;                  /* Are we iterating the bus? */
  * Local functions...
  */
 
-static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting);
-static Boolean list_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting);
+static Boolean list_device_cb(io_service_t obj, printer_interface_t printerIntf, void *refcon);
+static Boolean find_device_cb(io_service_t obj, printer_interface_t printerIntf, void *refcon);
 
 static CFStringRef cfstr_create_trim(const char *cstr);
 static CFStringRef copy_value_for_key(CFStringRef deviceID, CFStringRef *keys);
@@ -302,7 +302,7 @@ static void parse_pserror (char *sockBuffer, int len);
 #endif /* PARSE_PS_ERRORS */
 
 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(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);
@@ -419,10 +419,17 @@ print_device(const char *uri,             /* I - Device URI */
       g.printer_obj = 0x0;
       g.classdriver = 0x0;
     }
-
     fprintf(stderr, "DEBUG: Looking for '%s %s'\n", hostname, resource);
 
-    iterate_printers(find_device_cb, NULL);
+    do
+    {
+      iterate_printers(find_device_cb, NULL);
+      if (g.printer_obj != 0x0)
+        break;
+
+      _cupsLangPrintFilter(stderr, "INFO", _("Waiting for printer to become available."));
+      sleep(5);
+    } while (true);
 
     fputs("DEBUG: Opening connection\n", stderr);
 
@@ -1117,257 +1124,234 @@ sidechannel_thread(void *reference)
 /*
  * 'iterate_printers()' - Iterate over all the printers.
  */
-
 static void iterate_printers(iterator_callback_t callBack, void *userdata)
 {
-    Iterating = 1;
+  Iterating = 1;
 
-    mach_port_t        masterPort = 0x0;
-    kern_return_t kr = IOMasterPort (bootstrap_port, &masterPort);
+  iterator_reference_t reference = { callBack, userdata, true };
 
-    if (kr == kIOReturnSuccess && masterPort != 0x0)
-    {
-        iterator_reference_t reference = { callBack, userdata, true };
+  IONotificationPortRef addNotification = IONotificationPortCreate(kIOMasterPortDefault);
 
-        IONotificationPortRef addNotification = IONotificationPortCreate(masterPort);
-        io_iterator_t addIterator = IO_OBJECT_NULL;
+  int printingClass = kUSBPrintingClass;
+  int printingSubclass = kUSBPrintingSubclass;
 
-        kr = IOServiceAddMatchingNotification(addNotification, kIOFirstMatchNotification, IOServiceMatching(kIOUSBDeviceClassName),
-                                              &device_added, &reference, &addIterator);
-        if (kr == kIOReturnSuccess && addIterator != IO_OBJECT_NULL)
-        {
-            device_added(&reference, addIterator);
-            if (reference.keepRunning)
-            {
-                CFRunLoopAddSource(CFRunLoopGetCurrent(), IONotificationPortGetRunLoopSource(addNotification), kCFRunLoopDefaultMode);
-                CFRunLoopRun();
-            }
-            IOObjectRelease(addIterator);
-        }
-        mach_port_deallocate(mach_task_self(), masterPort);
-    }
+  CFNumberRef interfaceClass = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &printingClass);
+  CFNumberRef interfaceSubClass = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &printingSubclass);
+
+  CFMutableDictionaryRef usbPrinterMatchDictionary = IOServiceMatching(kIOUSBInterfaceClassName);
+  CFDictionaryAddValue(usbPrinterMatchDictionary, CFSTR("bInterfaceClass"), interfaceClass);
+  CFDictionaryAddValue(usbPrinterMatchDictionary, CFSTR("bInterfaceSubClass"), interfaceSubClass);
+
+  CFRelease(interfaceClass);
+  CFRelease(interfaceSubClass);
 
-    Iterating = 0;
+  io_iterator_t add_iterator = IO_OBJECT_NULL;
+  IOServiceAddMatchingNotification(addNotification, kIOMatchedNotification,
+                usbPrinterMatchDictionary, &device_added, &reference, &add_iterator);
+  if (add_iterator != IO_OBJECT_NULL)
+  {
+    device_added (&reference, add_iterator);
+    if (reference.keepRunning)
+    {
+      CFRunLoopAddSource(CFRunLoopGetCurrent(), IONotificationPortGetRunLoopSource(addNotification), kCFRunLoopDefaultMode);
+      CFRunLoopRun();
+    }
+    IOObjectRelease(add_iterator);
+  }
+  Iterating = 0;
 }
 
 
 /*
  * 'device_added()' - Device added notifier.
  */
-#define IsPrintingInterface(c,s,p) ((c) == kUSBPrintingInterfaceClass && (s) == kUSBPrintingSubclass && (p) != kUSBPrintingProtocolIPP)
-
 static void device_added(void *userdata, io_iterator_t iterator)
 {
-    iterator_reference_t *reference = userdata;
-    io_service_t device;
+  iterator_reference_t *reference = userdata;
+  io_service_t intf;
 
-    while (reference->keepRunning && (device = IOIteratorNext(iterator)) != 0x0)
+  while (reference->keepRunning && (intf = IOIteratorNext(iterator)) != 0x0)
+  {
+    printer_interface_t printerIntf = usb_printer_interface_interface(intf);
+    if (printerIntf != NULL)
     {
-        UInt32 locationID = 0;
-        IOUSBDeviceInterface **devIntf = NULL;
-        io_iterator_t intfIterator = IO_OBJECT_NULL;
-        io_object_t intf = IO_OBJECT_NULL;
-
-        devIntf = usb_device_interface_for_device(device);
-        if (devIntf == NULL)
-            goto device_added_done;
+      UInt8 intfClass = 0, intfSubClass = 0;
 
-        UInt16 vendorUniqueID;
-        if ((*devIntf)->GetDeviceVendor(devIntf, &vendorUniqueID) != kIOReturnSuccess || vendorUniqueID == kAppleVendorID || vendorUniqueID == 0x0A5C)
-            goto device_added_done;
-
-        if ((*devIntf)->GetLocationID(devIntf, &locationID) != kIOReturnSuccess)
-            goto device_added_done;
-
-        IOUSBFindInterfaceRequest req = { kIOUSBFindInterfaceDontCare, kIOUSBFindInterfaceDontCare, kIOUSBFindInterfaceDontCare, kIOUSBFindInterfaceDontCare };
-        if ((*devIntf)->CreateInterfaceIterator(devIntf, &req, &intfIterator) != kIOReturnSuccess)
-            goto device_added_done;
-
-        while (reference->keepRunning && (intf = IOIteratorNext(intfIterator)))
-        {
-            printer_interface_t printerIntf = usb_printer_interface_interface(intf);
-            if (printerIntf != NULL)
-            {
-                UInt8 intfClass = 0, intfSubclass = 0, intfProtocol = 0, intfNumber = 0;
-
-                (*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(printerIntf, 0);
-                    if (deviceIDString != NULL)
-                    {
-                        reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, 0);
-                        CFRelease(deviceIDString);
-                    }
-                }
-
-                IOUSBInterfaceDescriptor *intfDesc = NULL;
-                while (reference->keepRunning && (intfDesc = (IOUSBInterfaceDescriptor *)(*printerIntf)->FindNextAssociatedDescriptor(printerIntf, intfDesc, kUSBInterfaceDesc)))
-                {
-                    intfClass = intfDesc->bInterfaceClass;
-                    intfSubclass = intfDesc->bInterfaceSubClass;
-                    intfProtocol = intfDesc->bInterfaceProtocol;
-
-                    if ((IsPrintingInterface(intfClass, intfSubclass, intfProtocol)))
-                    {
-                        CFStringRef deviceIDString = copy_printer_interface_deviceid(printerIntf, intfDesc->bAlternateSetting);
-                        if (deviceIDString != NULL)
-                        {
-                            reference->keepRunning = reference->callback(userdata, intf, deviceIDString, locationID, intfNumber, intfDesc->bAlternateSetting);
-                            CFRelease(deviceIDString);
-                        }
-                    }
-                }
-                (*printerIntf)->Release(printerIntf);
-            }
-            IOObjectRelease(intf);
-        }
-
-        device_added_done:
-            if (devIntf != NULL) (*devIntf)->Release(devIntf);
-            if (intfIterator != IO_OBJECT_NULL) IOObjectRelease(intfIterator);
-
-        IOObjectRelease(device);
+      (*printerIntf)->GetInterfaceClass(printerIntf, &intfClass);
+      (*printerIntf)->GetInterfaceSubClass(printerIntf, &intfSubClass);
+      if (intfClass == kUSBPrintingInterfaceClass && intfSubClass == kUSBPrintingSubclass)
+        reference->keepRunning = reference->callback(intf, printerIntf, userdata);
+        (*printerIntf)->Release(printerIntf);
+      }
+      IOObjectRelease(intf);
     }
 
-    /* One last call to the call back now that we are not longer have printers left to iterate...
-     */
     if (reference->keepRunning && reference->callback)
-        reference->keepRunning = reference->callback(reference->userdata, IO_OBJECT_NULL, NULL, 0, 0, 0);
+      reference->keepRunning = reference->callback(IO_OBJECT_NULL, NULL, reference->userdata);
 
     if (!reference->keepRunning)
-        CFRunLoopStop(CFRunLoopGetCurrent());
+      CFRunLoopStop(CFRunLoopGetCurrent());
 }
 
 /*
  * 'list_device_cb()' - list_device iterator callback.
  */
-
-static Boolean list_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting)
+static Boolean list_device_cb(io_service_t obj, printer_interface_t printerIntf, void *refcon)
 {
-    (void)refcon;
-    (void)interfaceNum;
-    (void)alternateSetting;
+  (void)refcon;
 
-    if (obj != IO_OBJECT_NULL)
-    {
-        CFStringRef make = deviceIDCopyManufacturer(deviceIDString);
-        CFStringRef model = deviceIDCopyModel(deviceIDString);
-        CFStringRef serial = deviceIDCopySerialNumber(deviceIDString);
+  if (obj != IO_OBJECT_NULL)
+  {
+    CFStringRef deviceIDString = NULL;
+    CFStringRef make = NULL;
+    CFStringRef model = NULL;
+    CFStringRef serial = NULL;
+    UInt32 intfLocation;
 
-        char uristr[1024], makestr[1024], modelstr[1024], serialstr[1024];
-        char optionsstr[1024], idstr[1024], make_modelstr[1024];
+    deviceIDString = copy_printer_interface_deviceid(printerIntf, 0);
+    if (deviceIDString == NULL)
+      goto list_device_done;
 
-        CFStringGetCString(deviceIDString, idstr, sizeof(idstr), kCFStringEncodingUTF8);
-        backendGetMakeModel(idstr, make_modelstr, sizeof(make_modelstr));
+    make = deviceIDCopyManufacturer(deviceIDString);
+    model = deviceIDCopyModel(deviceIDString);
+    serial = deviceIDCopySerialNumber(deviceIDString);
 
-        modelstr[0] = '/';
+    char uristr[1024], makestr[1024], modelstr[1024], serialstr[1024];
+    char optionsstr[1024], idstr[1024], make_modelstr[1024];
 
-        if (make  == NULL || !CFStringGetCString(make, makestr, sizeof(makestr), kCFStringEncodingUTF8))
-            strlcpy(makestr, "Unknown", sizeof(makestr));
+    CFStringGetCString(deviceIDString, idstr, sizeof(idstr), kCFStringEncodingUTF8);
+    backendGetMakeModel(idstr, make_modelstr, sizeof(make_modelstr));
 
-        if (model == NULL || !CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1, kCFStringEncodingUTF8))
-            strlcpy(modelstr + 1, "Printer", sizeof(modelstr) - 1);
+    modelstr[0] = '/';
 
-        optionsstr[0] = '\0';
-        if (serial != NULL && CFStringGetCString(serial, serialstr, sizeof(serialstr), kCFStringEncodingUTF8))
-            snprintf(optionsstr, sizeof(optionsstr), "?serial=%s", serialstr);
-        else if (deviceLocation != 0)
-            snprintf(optionsstr, sizeof(optionsstr), "?location=%x", (unsigned)deviceLocation);
+    if (make  == NULL || !CFStringGetCString(make, makestr, sizeof(makestr), kCFStringEncodingUTF8))
+      strlcpy(makestr, "Unknown", sizeof(makestr));
 
-        httpAssembleURI(HTTP_URI_CODING_ALL, uristr, sizeof(uristr), "usb", NULL, makestr, 0, modelstr);
-        strlcat(uristr, optionsstr, sizeof(uristr));
+    if (model == NULL || !CFStringGetCString(model, &modelstr[1], sizeof(modelstr)-1, kCFStringEncodingUTF8))
+      strlcpy(modelstr + 1, "Printer", sizeof(modelstr) - 1);
 
-        cupsBackendReport("direct", uristr, make_modelstr, make_modelstr, idstr,
-                          NULL);
+    optionsstr[0] = '\0';
+    if (serial != NULL && CFStringGetCString(serial, serialstr, sizeof(serialstr), kCFStringEncodingUTF8))
+      snprintf(optionsstr, sizeof(optionsstr), "?serial=%s", serialstr);
+    else if ((*printerIntf)->GetLocationID(printerIntf, &intfLocation) == kIOReturnSuccess)
+      snprintf(optionsstr, sizeof(optionsstr), "?location=%x", (unsigned)intfLocation);
 
-        if (make != NULL) CFRelease(make);
-        if (model != NULL) CFRelease(model);
-        if (serial != NULL) CFRelease(serial);
-    }
+    httpAssembleURI(HTTP_URI_CODING_ALL, uristr, sizeof(uristr), "usb", NULL, makestr, 0, modelstr);
+    strlcat(uristr, optionsstr, sizeof(uristr));
 
-    return obj != IO_OBJECT_NULL;
+    cupsBackendReport("direct", uristr, make_modelstr, make_modelstr, idstr,
+                          NULL);
+  list_device_done:
+
+    if (make != NULL) CFRelease(make);
+    if (model != NULL) CFRelease(model);
+    if (serial != NULL) CFRelease(serial);
+  }
+  return obj != IO_OBJECT_NULL;
 }
 
 /*
  * 'find_device_cb()' - print_device iterator callback.
  */
-static Boolean find_device_cb(void *refcon, io_service_t obj, CFStringRef deviceIDString, UInt32 deviceLocation, UInt8 interfaceNum, UInt8 alternateSetting)
+static Boolean find_device_cb(io_service_t obj, printer_interface_t printerIntf, void *refcon)
 {
-    Boolean keepLooking = true;
+  (void)refcon;
 
-    if (obj != IO_OBJECT_NULL)
+  Boolean keepLooking = true;
+
+  if (obj != IO_OBJECT_NULL)
+  {
+    CFStringRef deviceIDString = NULL;
+    CFStringRef make = NULL;
+    CFStringRef model = NULL;
+    CFStringRef serial = NULL;
+
+    deviceIDString = copy_printer_interface_deviceid(printerIntf, 0);
+    if (deviceIDString == NULL)
+      goto find_device_done;
+
+    make = deviceIDCopyManufacturer(deviceIDString);
+    model = deviceIDCopyModel(deviceIDString);
+    serial = deviceIDCopySerialNumber(deviceIDString);
+
+    if (make && CFStringCompare(make, g.make, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
     {
-        CFStringRef make = deviceIDCopyManufacturer(deviceIDString);
-        CFStringRef model = deviceIDCopyModel(deviceIDString);
-        CFStringRef serial = deviceIDCopySerialNumber(deviceIDString);
+      if (model && CFStringCompare(model, g.model, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
+      {
+        UInt8 intfAltSetting = 0, intfNumber = 0, intfProtocol = 0;
+        UInt32 intfLocation = 0;
+
+        (*printerIntf)->GetInterfaceProtocol(printerIntf, &intfProtocol);
+        (*printerIntf)->GetAlternateSetting(printerIntf, &intfAltSetting);
+        (*printerIntf)->GetInterfaceNumber(printerIntf, &intfNumber);
+        (*printerIntf)->GetLocationID(printerIntf, &intfLocation);
 
-        if (make && CFStringCompare(make, g.make, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
+        if (g.serial != NULL && CFStringGetLength(g.serial) > 0)
         {
-            if (model && CFStringCompare(model, g.model, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
+          if (serial != NULL && CFStringCompare(serial, g.serial, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
+          {
+            g.interfaceProtocol = intfProtocol;
+            g.location = intfLocation;
+            g.alternateSetting = intfAltSetting;
+            if (intfProtocol != kUSBPrintingProtocolIPP)
             {
-                if (g.serial != NULL && CFStringGetLength(g.serial) > 0)
-                {
-                    if (serial != NULL && CFStringCompare(serial, g.serial, kCFCompareCaseInsensitive) == kCFCompareEqualTo)
-                    {
-                        IOObjectRetain(obj);
-                        g.printer_obj = obj;
-                        g.location = deviceLocation;
-                        g.alternateSetting = alternateSetting;
-                        keepLooking = false;
-                    }
-                }
-                else
-                {
-                    if (g.printer_obj != 0)
-                        IOObjectRelease(g.printer_obj);
-
-                    g.alternateSetting = alternateSetting;
-                    g.printer_obj = obj;
-                    IOObjectRetain(obj);
-
-                    if (g.location == 0 || g.location == deviceLocation)
-                        keepLooking = false;
-                }
-
-                if ( !keepLooking )
-                    g.interfaceNum = interfaceNum;
+              g.printer_obj = obj;
+              IOObjectRetain(obj);
             }
+            keepLooking = (intfProtocol == kUSBPrintingProtocolIPP);
+          }
         }
-
-        if (make) CFRelease(make);
-        if (model) CFRelease(model);
-        if (serial) CFRelease(serial);
-    }
-    else
-    {
-        keepLooking = (g.printer_obj == 0);
-        if (obj == IO_OBJECT_NULL && keepLooking)
+        else
         {
-            CFRunLoopTimerContext context = { 0, refcon, NULL, NULL, NULL };
-            CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + 1.0, 10, 0x0, 0x0, status_timer_cb, &context);
-            if (timer != NULL)
-            {
-                CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopDefaultMode);
-                g.status_timer = timer;
-            }
+          if (g.printer_obj != 0)
+            IOObjectRelease(g.printer_obj);
+
+            g.location = intfLocation;
+            g.alternateSetting = intfAltSetting;
+            g.interfaceProtocol = intfProtocol;
+            g.printer_obj = obj;
+            IOObjectRetain(obj);
+
+            if (g.location == 0 || g.location == intfLocation)
+              keepLooking = false;
         }
+
+        if (!keepLooking)
+          g.interfaceNum = intfNumber;
+      }
     }
 
-    if (!keepLooking && g.status_timer != NULL)
+  find_device_done:
+    if (deviceIDString != NULL) CFRelease(deviceIDString);
+    if (make != NULL) CFRelease(make);
+    if (model != NULL) CFRelease(model);
+    if (serial != NULL) CFRelease(serial);
+  }
+  else
+  {
+    keepLooking = (g.printer_obj == 0 && g.interfaceProtocol != kUSBPrintingProtocolIPP);
+    if (obj == IO_OBJECT_NULL && keepLooking)
     {
-        fputs("STATE: -offline-report\n", stderr);
-        _cupsLangPrintFilter(stderr, "INFO", _("The printer is now online."));
-        CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), g.status_timer, kCFRunLoopDefaultMode);
-        CFRelease(g.status_timer);
-        g.status_timer = NULL;
+      CFRunLoopTimerContext context = { 0, refcon, NULL, NULL, NULL };
+      CFRunLoopTimerRef timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent() + 1.0, 10, 0x0, 0x0, status_timer_cb, &context);
+      if (timer != NULL)
+      {
+        CFRunLoopAddTimer(CFRunLoopGetCurrent(), timer, kCFRunLoopDefaultMode);
+        g.status_timer = timer;
+      }
     }
+  }
 
-    return keepLooking;
+  if (!keepLooking && g.status_timer != NULL)
+  {
+    fputs("STATE: -offline-report\n", stderr);
+    _cupsLangPrintFilter(stderr, "INFO", _("The printer is now online."));
+    CFRunLoopRemoveTimer(CFRunLoopGetCurrent(), g.status_timer, kCFRunLoopDefaultMode);
+    CFRelease(g.status_timer);
+    g.status_timer = NULL;
+  }
+
+  return keepLooking;
 }
 
 static CFStringRef deviceIDCopySerialNumber(CFStringRef deviceID)
@@ -1567,23 +1551,6 @@ static printer_interface_t usb_printer_interface_interface(io_service_t usbClass
        return intf;
 }
 
-static IOUSBDeviceInterface **usb_device_interface_for_device(io_service_t usbDevice)
-{
-       IOUSBDeviceInterface ** intf = NULL;
-       IOCFPlugInInterface **plugin = NULL;
-       SInt32  score;
-
-       int kr = IOCreatePlugInInterfaceForService(usbDevice, kIOUSBDeviceUserClientTypeID, kIOCFPlugInInterfaceID, &plugin, &score);
-       if (kr == kIOReturnSuccess)
-       {
-               (*plugin)->QueryInterface(plugin, CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID), (LPVOID *)&intf);
-               IODestroyPlugInInterface(plugin);
-       }
-
-       return intf;
-}
-
-
 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
@@ -2534,8 +2501,3 @@ log_usb_class_driver(int is_64bit)        /* I - Is the USB class driver 64-bit? */
     asl_free(aslm);
   }
 }
-
-
-/*
- * End of "$Id: usb-darwin.c 12928 2015-10-23 21:31:58Z msweet $".
- */
index ffb2fe9..c48c6ec 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: usb-libusb.c 12881 2015-09-15 21:20:02Z msweet $"
- *
  * LIBUSB interface code for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -18,6 +16,7 @@
 
 #include <libusb.h>
 #include <cups/cups-private.h>
+#include <cups/ppd-private.h>
 #include <cups/dir.h>
 #include <pthread.h>
 #include <sys/select.h>
@@ -2018,9 +2017,3 @@ soft_reset_printer(
 
   return (errcode);
 }
-
-
-/*
- * End of "$Id: usb-libusb.c 12881 2015-09-15 21:20:02Z msweet $".
- */
-
index 813039d..41a5606 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: usb-unix.c 12124 2014-08-28 15:37:22Z msweet $"
- *
  * USB port backend for CUPS.
  *
  * This file is included from "usb.c" when compiled on UNIX/Linux.
@@ -600,8 +598,3 @@ side_cb(int         print_fd,               /* I - Print file */
 
   return (cupsSideChannelWrite(command, status, data, datalen, 1.0));
 }
-
-
-/*
- * End of "$Id: usb-unix.c 12124 2014-08-28 15:37:22Z msweet $".
- */
index 3ccbc00..a3b6fba 100644 (file)
@@ -1,24 +1,16 @@
 /*
- * "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $"
+ * USB printer backend for CUPS.
  *
- *   USB port backend for CUPS.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * "LICENSE" which should have been included with this file.  If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   "LICENSE" which should have been included with this file.  If this
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   list_devices() - List all available USB devices to stdout.
- *   print_device() - Print a file to a USB device.
- *   main()         - Send a file to the specified USB port.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -257,8 +249,3 @@ main(int  argc,                             /* I - Number of command-line arguments (6 or 7) */
 
   return (status);
 }
-
-
-/*
- * End of "$Id: usb.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 76b1f2a..8522b24 100644 (file)
@@ -3,26 +3,23 @@ lpc.o: lpc.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 lpq.o: lpq.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 lpr.o: lpr.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 lprm.o: lprm.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
index 6534f76..688efed 100644 (file)
@@ -1,16 +1,14 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# Berkeley commands makefile for CUPS.
 #
-#   Berkeley commands makefile for CUPS.
+# Copyright 2007-2012 by Apple Inc.
+# Copyright 1997-2006 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 1997-2006 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 include ../Makedefs
@@ -161,8 +159,3 @@ lprm:       lprm.o ../cups/$(LIBCUPS)
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
-#
index 72b0f71..93e029f 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: lpc.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * "lpc" command for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -435,8 +433,3 @@ show_status(http_t     *http,               /* I - HTTP connection to server */
     ippDelete(response);
   }
 }
-
-
-/*
- * End of "$Id: lpc.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 0cb9047..f01168c 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: lpq.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * "lpq" command for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -41,7 +39,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
 {
   int          i;                      /* Looping var */
   http_t       *http;                  /* Connection to server */
-  const char   *dest,                  /* Desired printer */
+  const char   *opt,                   /* Option pointer */
+               *dest,                  /* Desired printer */
                *user,                  /* Desired user */
                *val;                   /* Environment variable name */
   char         *instance;              /* Printer instance */
@@ -67,128 +66,138 @@ main(int  argc,                           /* I - Number of command-line arguments */
   all        = 0;
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '+')
+    {
       interval = atoi(argv[i] + 1);
+    }
     else if (argv[i][0] == '-')
     {
-      switch (argv[i][1])
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'E' : /* Encrypt */
+       switch (*opt)
+       {
+         case 'E' : /* Encrypt */
 #ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 
-           if (http)
-             httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
+             if (http)
+               httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
 #else
-            _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
-                           argv[0]);
+             _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
 #endif /* HAVE_SSL */
-           break;
-
-        case 'U' : /* Username */
-           if (argv[i][2] != '\0')
-             cupsSetUser(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+             break;
+
+         case 'U' : /* Username */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after "
-                                 "\"-U\" option."), argv[0]);
-               return (1);
+               cupsSetUser(opt + 1);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
+                 return (1);
+               }
 
-              cupsSetUser(argv[i]);
-           }
-           break;
-
-        case 'P' : /* Printer */
-           if (argv[i][2])
-             dest = argv[i] + 2;
-           else
-           {
-             i ++;
+               cupsSetUser(argv[i]);
+             }
+             break;
 
-             if (i >= argc)
+         case 'P' : /* Printer */
+             if (opt[1] != '\0')
              {
-               httpClose(http);
+               dest = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 httpClose(http);
+
+                 usage();
+               }
 
-               usage();
+               dest = argv[i];
              }
 
-             dest = argv[i];
-           }
-
-           if ((instance = strchr(dest, '/')) != NULL)
-             *instance++ = '\0';
-
-            http = connect_server(argv[0], http);
-
-            if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
-           {
-             if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
-                 cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - add '/version=1.1' to server "
-                                 "name."), argv[0]);
-             else if (instance)
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - unknown destination \"%s/%s\"."),
-                               argv[0], dest, instance);
-              else
-               _cupsLangPrintf(stderr, _("%s: Unknown destination \"%s\"."),
-                               argv[0], dest);
-
-             return (1);
-           }
-
-           cupsFreeDests(1, named_dest);
-           break;
-
-       case 'a' : /* All printers */
-           all = 1;
-           break;
-
-        case 'h' : /* Connect to host */
-           if (http)
-           {
-             httpClose(http);
-             http = NULL;
-           }
+             if ((instance = strchr(dest, '/')) != NULL)
+               *instance++ = '\0';
 
-           if (argv[i][2] != '\0')
-              cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
+             http = connect_server(argv[0], http);
 
-             if (i >= argc)
+             if ((named_dest = cupsGetNamedDest(http, dest, instance)) == NULL)
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected hostname after "
-                                 "\"-h\" option."), argv[0]);
+               if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
+                   cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
+                 _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
+               else if (instance)
+                 _cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s/%s\"."), argv[0], dest, instance);
+               else
+                 _cupsLangPrintf(stderr, _("%s: Unknown destination \"%s\"."), argv[0], dest);
+
                return (1);
-              }
+             }
+
+             cupsFreeDests(1, named_dest);
+             break;
+
+         case 'a' : /* All printers */
+             all = 1;
+             break;
+
+         case 'h' : /* Connect to host */
+             if (http)
+             {
+               httpClose(http);
+               http = NULL;
+             }
+
+             if (opt[1] != '\0')
+             {
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
              else
-                cupsSetServer(argv[i]);
-           }
-           break;
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
+                 return (1);
+               }
+               else
+                 cupsSetServer(argv[i]);
+             }
+             break;
 
-       case 'l' : /* Long status */
-           longstatus = 1;
-           break;
+         case 'l' : /* Long status */
+             longstatus = 1;
+             break;
 
-       default :
-           httpClose(http);
+         default :
+             httpClose(http);
 
-           usage();
+             usage();
+       }
       }
     }
     else if (isdigit(argv[i][0] & 255))
+    {
       id = atoi(argv[i]);
+    }
     else
+    {
       user = argv[i];
+    }
+  }
 
   http = connect_server(argv[0], http);
 
@@ -638,8 +647,3 @@ usage(void)
                  "[-l] [+interval]"));
   exit(1);
 }
-
-
-/*
- * End of "$Id: lpq.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 24242ca..418ef4b 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: lpr.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * "lpr" command for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -32,7 +30,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
   int          job_id;                 /* Job ID */
   char         ch;                     /* Option character */
   char         *printer,               /* Destination printer or class */
-               *instance;              /* Instance */
+               *instance,              /* Instance */
+               *opt;                   /* Option pointer */
   const char   *title,                 /* Job title */
                *val;                   /* Environment variable name */
   int          num_copies;             /* Number of copies per file */
@@ -56,229 +55,235 @@ main(int  argc,                           /* I - Number of command-line arguments */
   title       = NULL;
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-')
     {
-      switch (ch = argv[i][1])
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'E' : /* Encrypt */
+       switch (ch = *opt)
+       {
+         case 'E' : /* Encrypt */
 #ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 #else
-            _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
-                           argv[0]);
+             _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
 #endif /* HAVE_SSL */
-           break;
-
-        case 'U' : /* Username */
-           if (argv[i][2] != '\0')
-             cupsSetUser(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+             break;
+
+         case 'U' : /* Username */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after "
-                                 "\"-U\" option."), argv[0]);
-               return (1);
+               cupsSetUser(opt + 1);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
+                 return (1);
+               }
+
+               cupsSetUser(argv[i]);
+             }
+             break;
 
-              cupsSetUser(argv[i]);
-           }
-           break;
-
-        case 'H' : /* Connect to host */
-           if (argv[i][2] != '\0')
-              cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
+         case 'H' : /* Connect to host */
+             if (opt[1] != '\0')
+             {
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-H\" option."), argv[0]);
+                 return (1);
+               }
+               else
+                 cupsSetServer(argv[i]);
+             }
+             break;
+
+         case '1' : /* TROFF font set 1 */
+         case '2' : /* TROFF font set 2 */
+         case '3' : /* TROFF font set 3 */
+         case '4' : /* TROFF font set 4 */
+         case 'i' : /* indent */
+         case 'w' : /* width */
+             if (opt[1] != '\0')
+             {
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr,
+                                 _("%s: Error - expected value after \"-%c\" "
+                                   "option."), argv[0], ch);
+                 return (1);
+               }
+             }
 
-             if (i >= argc)
+         case 'c' : /* CIFPLOT */
+         case 'd' : /* DVI */
+         case 'f' : /* FORTRAN */
+         case 'g' : /* plot */
+         case 'n' : /* Ditroff */
+         case 't' : /* Troff */
+         case 'v' : /* Raster image */
+             _cupsLangPrintf(stderr, _("%s: Warning - \"%c\" format modifier not supported - output may not be correct."), argv[0], ch);
+             break;
+
+         case 'o' : /* Option */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected hostname after "
-                                 "\"-H\" option."), argv[0]);
-               return (1);
-              }
+               num_options = cupsParseOptions(opt + 1, num_options, &options);
+               opt += strlen(opt) - 1;
+             }
              else
-                cupsSetServer(argv[i]);
-           }
-           break;
-
-       case '1' : /* TROFF font set 1 */
-       case '2' : /* TROFF font set 2 */
-       case '3' : /* TROFF font set 3 */
-       case '4' : /* TROFF font set 4 */
-       case 'i' : /* indent */
-       case 'w' : /* width */
-           if (argv[i][2] == '\0')
-           {
-             i ++;
-
-             if (i >= argc)
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected value after \"-%c\" "
-                                 "option."), argv[0], ch);
-               return (1);
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected option=value after \"-o\" option."), argv[0]);
+                 return (1);
+               }
+
+               num_options = cupsParseOptions(argv[i], num_options, &options);
              }
-           }
-
-        case 'c' : /* CIFPLOT */
-       case 'd' : /* DVI */
-       case 'f' : /* FORTRAN */
-       case 'g' : /* plot */
-       case 'n' : /* Ditroff */
-       case 't' : /* Troff */
-       case 'v' : /* Raster image */
-           _cupsLangPrintf(stderr,
-                           _("%s: Warning - \"%c\" format modifier not "
-                             "supported - output may not be correct."),
-                           argv[0], ch);
-           break;
-
-       case 'o' : /* Option */
-           if (argv[i][2] != '\0')
-             num_options = cupsParseOptions(argv[i] + 2, num_options, &options);
-           else
-           {
-             i ++;
-             if (i >= argc)
+             break;
+
+         case 'l' : /* Literal/raw */
+             num_options = cupsAddOption("raw", "true", num_options, &options);
+             break;
+
+         case 'p' : /* Prettyprint */
+             num_options = cupsAddOption("prettyprint", "true", num_options, &options);
+             break;
+
+         case 'h' : /* Suppress burst page */
+             num_options = cupsAddOption("job-sheets", "none", num_options, &options);
+             break;
+
+         case 's' : /* Don't use symlinks */
+             break;
+
+         case 'm' : /* Mail on completion */
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected option=value after "
-                                 "\"-o\" option."), argv[0]);
-               return (1);
+               char    email[1024];    /* EMail address */
+
+               snprintf(email, sizeof(email), "mailto:%s@%s", cupsUser(), httpGetHostname(NULL, buffer, sizeof(buffer)));
+               num_options = cupsAddOption("notify-recipient-uri", email, num_options, &options);
              }
+             break;
 
-             num_options = cupsParseOptions(argv[i], num_options, &options);
-           }
-           break;
-
-       case 'l' : /* Literal/raw */
-            num_options = cupsAddOption("raw", "true", num_options, &options);
-           break;
-
-       case 'p' : /* Prettyprint */
-            num_options = cupsAddOption("prettyprint", "true", num_options,
-                                       &options);
-           break;
-
-       case 'h' : /* Suppress burst page */
-            num_options = cupsAddOption("job-sheets", "none", num_options,
-                                       &options);
-           break;
-
-       case 's' : /* Don't use symlinks */
-           break;
-
-       case 'm' : /* Mail on completion */
-           {
-             char      email[1024];    /* EMail address */
-
-
-             snprintf(email, sizeof(email), "mailto:%s@%s", cupsUser(),
-                      httpGetHostname(NULL, buffer, sizeof(buffer)));
-             num_options = cupsAddOption("notify-recipient-uri", email,
-                                         num_options, &options);
-           }
-           break;
-
-       case 'q' : /* Queue file but don't print */
-            num_options = cupsAddOption("job-hold-until", "indefinite",
-                                       num_options, &options);
-           break;
-
-       case 'r' : /* Remove file after printing */
-           deletefile = 1;
-           break;
-
-        case 'P' : /* Destination printer or class */
-           if (argv[i][2] != '\0')
-             printer = argv[i] + 2;
-           else
-           {
-             i ++;
-             if (i >= argc)
+         case 'q' : /* Queue file but don't print */
+             num_options = cupsAddOption("job-hold-until", "indefinite", num_options, &options);
+             break;
+
+         case 'r' : /* Remove file after printing */
+             deletefile = 1;
+             break;
+
+         case 'P' : /* Destination printer or class */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected destination after "
-                                 "\"-P\" option."), argv[0]);
-               return (1);
+               printer = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected destination after \"-P\" option."), argv[0]);
+                 return (1);
+               }
+
+               printer = argv[i];
              }
 
-             printer = argv[i];
-           }
-
-            if ((instance = strrchr(printer, '/')) != NULL)
-             *instance++ = '\0';
-
-            if ((dest = cupsGetNamedDest(NULL, printer, instance)) != NULL)
-           {
-             for (j = 0; j < dest->num_options; j ++)
-               if (cupsGetOption(dest->options[j].name, num_options,
-                                 options) == NULL)
-                 num_options = cupsAddOption(dest->options[j].name,
-                                             dest->options[j].value,
-                                             num_options, &options);
-           }
-           else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
-                    cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
-           {
-             _cupsLangPrintf(stderr,
-                             _("%s: Error - add '/version=1.1' to server "
-                               "name."), argv[0]);
-             return (1);
-           }
-           break;
-
-       case '#' : /* Number of copies */
-           if (argv[i][2] != '\0')
-             num_copies = atoi(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+             if ((instance = strrchr(printer, '/')) != NULL)
+               *instance++ = '\0';
+
+             if ((dest = cupsGetNamedDest(NULL, printer, instance)) != NULL)
+             {
+               for (j = 0; j < dest->num_options; j ++)
+                 if (cupsGetOption(dest->options[j].name, num_options,
+                                   options) == NULL)
+                   num_options = cupsAddOption(dest->options[j].name,
+                                               dest->options[j].value,
+                                               num_options, &options);
+             }
+             else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
+                      cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected copies after "
-                                 "\"-#\" option."), argv[0]);
+               _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
                return (1);
              }
+             break;
 
-             num_copies = atoi(argv[i]);
-           }
-
-            sprintf(buffer, "%d", num_copies);
-            num_options = cupsAddOption("copies", buffer, num_options, &options);
-           break;
-
-       case 'C' : /* Class */
-       case 'J' : /* Job name */
-       case 'T' : /* Title */
-           if (argv[i][2] != '\0')
-             title = argv[i] + 2;
-           else
-           {
-             i ++;
-             if (i >= argc)
+         case '#' : /* Number of copies */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected name after \"-%c\" "
-                                 "option."), argv[0], ch);
+               num_copies = atoi(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected copies after \"-#\" option."), argv[0]);
+                 return (1);
+               }
+
+               num_copies = atoi(argv[i]);
+             }
+
+             if (num_copies < 1)
+             {
+               _cupsLangPrintf(stderr, _("%s: Error - copies must be 1 or more."), argv[0]);
                return (1);
              }
 
-             title = argv[i];
-           }
-           break;
+             sprintf(buffer, "%d", num_copies);
+             num_options = cupsAddOption("copies", buffer, num_options, &options);
+             break;
 
-       default :
-           _cupsLangPrintf(stderr,
-                           _("%s: Error - unknown option \"%c\"."), argv[0],
-                           argv[i][1]);
-           return (1);
+         case 'C' : /* Class */
+         case 'J' : /* Job name */
+         case 'T' : /* Title */
+             if (opt[1] != '\0')
+             {
+               title = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected name after \"-%c\" option."), argv[0], ch);
+                 return (1);
+               }
+
+               title = argv[i];
+             }
+             break;
+
+         default :
+             _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
+             return (1);
+       }
       }
     }
     else if (num_files < 1000)
@@ -307,9 +312,11 @@ main(int  argc,                            /* I - Number of command-line arguments */
       }
     }
     else
-      _cupsLangPrintf(stderr,
-                      _("%s: Error - too many files - \"%s\"."), argv[0],
-                     argv[i]);
+    {
+      _cupsLangPrintf(stderr, _("%s: Error - too many files - \"%s\"."), argv[0], argv[i]);
+    }
+  }
+
  /*
   * See if we have any files to print; if not, print from stdin...
   */
@@ -429,8 +436,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: lpr.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 922bbbd..2271d48 100644 (file)
@@ -1,20 +1,14 @@
 /*
- * "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "lprm" command for CUPS.
  *
- *   "lprm" command for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main() - Parse options and cancel jobs.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -35,7 +29,8 @@ main(int  argc,                       /* I - Number of command-line arguments */
   int          i;              /* Looping var */
   int          job_id;         /* Job ID */
   const char   *name;          /* Destination printer */
-  char         *instance;      /* Pointer to instance name */
+  char         *instance,      /* Pointer to instance name */
+               *opt;           /* Option pointer */
   cups_dest_t  *dest,          /* Destination */
                *defdest;       /* Default destination */
   int          did_cancel;     /* Did we cancel something? */
@@ -56,90 +51,96 @@ main(int  argc,                     /* I - Number of command-line arguments */
   */
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-' && argv[i][1] != '\0')
-      switch (argv[i][1])
+    {
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'E' : /* Encrypt */
+       switch (*opt)
+       {
+         case 'E' : /* Encrypt */
 #ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 #else
-            _cupsLangPrintf(stderr,
-                           _("%s: Sorry, no encryption support."), argv[0]);
+             _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
 #endif /* HAVE_SSL */
-           break;
-
-        case 'P' : /* Cancel jobs on a printer */
-           if (argv[i][2])
-             name = argv[i] + 2;
-           else
-           {
-             i ++;
-             name = argv[i];
-           }
-
-           if ((instance = strchr(name, '/')) != NULL)
-             *instance = '\0';
-
-           if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name,
-                                        NULL)) == NULL)
-           {
-             _cupsLangPrintf(stderr,
-                             _("%s: Error - unknown destination \"%s\"."),
-                             argv[0], name);
-              goto error;
-           }
-
-           cupsFreeDests(1, dest);
-           break;
-
-        case 'U' : /* Username */
-           if (argv[i][2] != '\0')
-             cupsSetUser(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+             break;
+
+         case 'P' : /* Cancel jobs on a printer */
+             if (opt[1] != '\0')
+             {
+               name = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after "
-                                 "\"-U\" option."), argv[0]);
-               goto error;
+               i ++;
+               name = argv[i];
              }
 
-              cupsSetUser(argv[i]);
-           }
-           break;
-           
-        case 'h' : /* Connect to host */
-           if (argv[i][2] != '\0')
-              cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
-
-             if (i >= argc)
+             if ((instance = strchr(name, '/')) != NULL)
+               *instance = '\0';
+
+             if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, name, NULL)) == NULL)
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected hostname after "
-                                 "\"-h\" option."), argv[0]);
+               _cupsLangPrintf(stderr, _("%s: Error - unknown destination \"%s\"."), argv[0], name);
                goto error;
-              }
+             }
+
+             cupsFreeDests(1, dest);
+             break;
+
+         case 'U' : /* Username */
+             if (opt[1] != '\0')
+             {
+               cupsSetUser(opt + 1);
+               opt += strlen(opt) - 1;
+             }
              else
-                cupsSetServer(argv[i]);
-           }
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
+                 goto error;
+               }
+
+               cupsSetUser(argv[i]);
+             }
+             break;
 
-            if (defdest)
-             cupsFreeDests(1, defdest);
+         case 'h' : /* Connect to host */
+             if (opt[1] != '\0')
+             {
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
+                 goto error;
+               }
+               else
+                 cupsSetServer(argv[i]);
+             }
 
-           defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
-           name    = defdest ? defdest->name : NULL;
-           break;
+             if (defdest)
+               cupsFreeDests(1, defdest);
 
-       default :
-           _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."),
-                           argv[0], argv[i][1]);
-            goto error;
+             defdest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
+             name    = defdest ? defdest->name : NULL;
+             break;
+
+         default :
+             _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
+             goto error;
+       }
       }
+    }
     else
     {
      /*
@@ -182,6 +183,7 @@ main(int  argc,                     /* I - Number of command-line arguments */
 
       did_cancel = 1;
     }
+  }
 
  /*
   * If nothing has been canceled yet, cancel the current job on the specified
@@ -210,8 +212,3 @@ main(int  argc,                     /* I - Number of command-line arguments */
 
   return (1);
 }
-
-
-/*
- * End of "$Id: lprm.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 66ffa01..b006fe1 100644 (file)
@@ -35,7 +35,9 @@ admin.o: admin.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
   ../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
   ../cups/language-private.h ../cups/transcode.h \
   ../cups/string-private.h ../config.h ../cups/ipp-private.h \
-  ../cups/adminutil.h ../cups/ppd.h
+  ../cups/http-private.h ../cups/md5-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h ../cups/pwg-private.h \
+  ../cups/adminutil.h
 classes.o: classes.c cgi-private.h cgi.h ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
   ../cups/language.h ../cups/pwg.h help-index.h ../cups/debug-private.h \
index 898fb7b..6bc1dba 100644 (file)
@@ -1,9 +1,7 @@
 #
-# "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $"
-#
 # CGI makefile for CUPS.
 #
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1997-2006 by Easy Software Products.
 #
 # These coded instructions, statements, and computer programs are the
@@ -128,10 +126,13 @@ install-exec:
 #
 
 install-headers:
-       echo Installing header files in $(INCLUDEDIR)/cups...
-       $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
-       $(INSTALL_DATA) cgi.h $(INCLUDEDIR)/cups
-       $(INSTALL_DATA) help-index.h $(INCLUDEDIR)/cups
+       if test "x$(privateinclude)" != x; then \
+               echo Installing private header files into $(PRIVATEINCLUDE)...; \
+               $(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
+               for file in cgi.h help-index.h; do \
+                       $(INSTALL_DATA) $$file $(PRIVATEINCLUDE); \
+               done; \
+       fi
 
 
 #
@@ -178,31 +179,11 @@ uninstall:
        $(RM) $(LIBDIR)/libcupscgi.so
        $(RM) $(LIBDIR)/libcupscgi.so.1
        -$(RMDIR) $(LIBDIR)
-       $(RM) $(INCLUDEDIR)/cups/cgi.h
-       $(RM) $(INCLUDEDIR)/cups/help-index.h
-       -$(RMDIR) $(INCLUDEDIR)/cups
-
-
-#
-# Automatic API help files...
-#
-
-apihelp:
-       mxmldoc --section "Programming" \
-               --title "CGI API" \
-               --css ../doc/cups-printable.css \
-               --header api-cgi.header --intro api-cgi.shtml \
-               cgi.h help-index.h $(LIBOBJS:.o=.c) >../doc/help/api-cgi.html
-       mxmldoc --tokens help/api-cgi.html api-cgi.xml >../doc/help/api-cgi.tokens
-       $(RM) api-cgi.xml
-
-framedhelp:
-       mxmldoc --framed api-cgi \
-               --section "Programming" \
-               --title "CGI API" \
-               --css ../doc/cups-printable.css \
-               --header api-cgi.header --intro api-cgi.shtml \
-               cgi.h help-index.h $(LIBOBJS:.o=.c)
+       -if test "x$(privateinclude)" != x; then \
+               $(RM) $(PRIVATEINCLUDE)/cgi.h; \
+               $(RM) $(PRIVATEINCLUDE)/help-index.h; \
+               $(RMDIR) $(PRIVATEINCLUDE); \
+       fi
 
 
 #
@@ -350,8 +331,3 @@ testtemplate:       testtemplate.o ../Makedefs libcupscgi.a ../cups/$(LIBCUPSSTATIC)
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $".
-#
index 29ae5c8..c44a427 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: admin.c 12516 2015-02-12 20:18:11Z msweet $"
- *
  * Administration CGI for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -4274,8 +4272,3 @@ get_printer_ppd(const char *uri,  /* I - Printer URI */
   else
     return (NULL);
 }
-
-
-/*
- * End of "$Id: admin.c 12516 2015-02-12 20:18:11Z msweet $".
- */
diff --git a/cgi-bin/api-cgi.header b/cgi-bin/api-cgi.header
deleted file mode 100644 (file)
index e3355a6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!--
-  "$Id: api-array.header 8087 2008-10-27 21:37:05Z mike $"
-
-  CGI API header for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h1 class='title'>CGI API</h1>
-
-<div class='summary'><table summary='General Information'>
-<thead>
-<tr>
-       <th>Header</th>
-       <th>cups/cgi.h</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-       <th>Library</th>
-       <td>-lcupscgi</td>
-</tr>
-<tr>
-       <th>See Also</th>
-       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
-</tr>
-</tbody>
-</table></div>
diff --git a/cgi-bin/api-cgi.shtml b/cgi-bin/api-cgi.shtml
deleted file mode 100644 (file)
index cf0413a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--
-  "$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
-
-  CGI API introduction for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
-
-<p>The CGI API provides Common Gateway Interface functions for CUPS.</p>
index c5d0eef..3bae750 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Private CGI definitions for CUPS.
  *
- *   Private CGI definitions for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -29,8 +27,3 @@
  */
 
 #define CUPS_PAGE_MAX  100             /* Maximum items per page */
-
-
-/*
- * End of "$Id: cgi-private.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 37732b5..9604f97 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $"
+ * CGI support library definitions for CUPS.
  *
- *   CGI support library definitions for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #ifndef _CUPS_CGI_H_
@@ -113,7 +111,3 @@ extern const char   *cgiText(const char *message);
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_CGI_H_ */
-
-/*
- * End of "$Id: cgi.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 0af538b..ae76a0c 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: classes.c 11928 2014-06-13 00:08:32Z msweet $"
- *
  * Class status CGI for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -299,8 +297,7 @@ show_all_classes(http_t     *http,  /* I - Connection to server */
                        *response;      /* IPP response */
   cups_array_t         *classes;       /* Array of class objects */
   ipp_attribute_t      *pclass;        /* Class object */
-  int                  ascending,      /* Order of classes (0 = descending) */
-                       first,          /* First class to show */
+  int                  first,          /* First class to show */
                        count;          /* Number of classes */
   const char           *var;           /* Form variable */
   void                 *search;        /* Search data */
@@ -372,25 +369,10 @@ show_all_classes(http_t     *http,        /* I - Connection to server */
     sprintf(val, "%d", count);
     cgiSetVariable("TOTAL", val);
 
-    if ((var = cgiGetVariable("ORDER")) != NULL && *var)
-      ascending = !_cups_strcasecmp(var, "asc");
-    else
-      ascending = 1;
-
-    if (ascending)
-    {
-      for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
-          i < CUPS_PAGE_MAX && pclass;
-          i ++, pclass = (ipp_attribute_t *)cupsArrayNext(classes))
-        cgiSetIPPObjectVars(pclass, NULL, i);
-    }
-    else
-    {
-      for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, count - first - 1);
-          i < CUPS_PAGE_MAX && pclass;
-          i ++, pclass = (ipp_attribute_t *)cupsArrayPrev(classes))
-        cgiSetIPPObjectVars(pclass, NULL, i);
-    }
+    for (i = 0, pclass = (ipp_attribute_t *)cupsArrayIndex(classes, first);
+        i < CUPS_PAGE_MAX && pclass;
+        i ++, pclass = (ipp_attribute_t *)cupsArrayNext(classes))
+      cgiSetIPPObjectVars(pclass, NULL, i);
 
    /*
     * Save navigation URLs...
@@ -410,6 +392,12 @@ show_all_classes(http_t     *http, /* I - Connection to server */
       cgiSetVariable("NEXT", val);
     }
 
+    if (count > CUPS_PAGE_MAX)
+    {
+      snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
+      cgiSetVariable("LAST", val);
+    }
+
    /*
     * Then show everything...
     */
@@ -543,8 +531,3 @@ show_class(http_t     *http,                /* I - Connection to server */
 
    cgiEndHTML();
 }
-
-
-/*
- * End of "$Id: classes.c 11928 2014-06-13 00:08:32Z msweet $".
- */
index d467cb6..60cda87 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: help-index.c 12644 2015-05-19 21:22:35Z msweet $"
- *
  * Online help index routines for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -1303,8 +1301,3 @@ help_sort_words(help_word_t *w1,  /* I - Second word */
 
   return (_cups_strcasecmp(w1->text, w2->text));
 }
-
-
-/*
- * End of "$Id: help-index.c 12644 2015-05-19 21:22:35Z msweet $".
- */
index 3618d60..5fb1ac1 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Online help index definitions for CUPS.
  *
- *   Online help index definitions for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   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/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #ifndef _CUPS_HELP_INDEX_H_
@@ -81,7 +79,3 @@ extern help_index_t   *helpSearchIndex(help_index_t *hi, const char *query,
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_HELP_INDEX_H_ */
-
-/*
- * End of "$Id: help-index.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 75f70d9..314be87 100644 (file)
@@ -1,20 +1,14 @@
 /*
- * "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Online help CGI for CUPS.
  *
- *   Online help CGI for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main() - Main entry for CGI.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -390,8 +384,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: help.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index af58c88..e10e2d6 100644 (file)
@@ -1,26 +1,14 @@
 /*
- * "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $"
+ * HTML support functions for CUPS.
  *
- *   HTML support functions for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   cgiEndHTML()           - End a HTML page.
- *   cgiEndMultipart()      - End the delivery of a multipart web page.
- *   cgiFormEncode()        - Encode a string as a form variable.
- *   cgiStartHTML()         - Start a HTML page.
- *   cgiStartMultipart()    - Start a multipart delivery of a web page.
- *   cgiSupportsMultipart() - Does the browser support multi-part documents?
- *   cgi_null_passwd()      - Return a NULL password for authentication.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -232,8 +220,3 @@ cgi_null_passwd(const char *prompt) /* I - Prompt string (unused) */
 
   return (NULL);
 }
-
-
-/*
- * End of "$Id: html.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 1a08960..877d37c 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: ipp-var.c 12768 2015-06-30 16:13:38Z msweet $"
- *
  * CGI <-> IPP variable routines for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -1325,7 +1323,7 @@ cgiSetIPPVars(ipp_t      *response,       /* I - Response data to be copied... */
     attr = cgiSetIPPObjectVars(attr, prefix, element);
   }
 
-  fprintf(stderr, "DEBUG2: Returing %d from cgiSetIPPVars()...\n", element);
+  fprintf(stderr, "DEBUG2: Returning %d from cgiSetIPPVars()...\n", element);
 
   return (element);
 }
@@ -1360,8 +1358,7 @@ cgiShowJobs(http_t     *http,             /* I - Connection to server */
                        *response;      /* IPP response */
   cups_array_t         *jobs;          /* Array of job objects */
   ipp_attribute_t      *job;           /* Job object */
-  int                  ascending,      /* Order of jobs (0 = descending) */
-                       first,          /* First job to show */
+  int                  first,          /* First job to show */
                        count;          /* Number of jobs */
   const char           *var,           /* Form variable */
                        *query,         /* Query string */
@@ -1397,6 +1394,17 @@ cgiShowJobs(http_t     *http,            /* I - Connection to server */
     ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "which-jobs",
                  NULL, which_jobs);
 
+  if ((var = cgiGetVariable("FIRST")) != NULL)
+  {
+    if ((first = atoi(var)) < 0)
+      first = 0;
+  }
+  else
+    first = 0;
+
+  if (first > 0)
+    ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "first-index", first + 1);
+
   cgiGetAttributes(request, "jobs.tmpl");
 
  /*
@@ -1419,7 +1427,7 @@ cgiShowJobs(http_t     *http,             /* I - Connection to server */
     }
 
     jobs  = cgiGetIPPObjects(response, search);
-    count = cupsArrayCount(jobs);
+    count = cupsArrayCount(jobs) + first;
 
     if (search)
       cgiFreeSearch(search);
@@ -1428,25 +1436,6 @@ cgiShowJobs(http_t     *http,            /* I - Connection to server */
     * Figure out which jobs to display...
     */
 
-    if ((var = cgiGetVariable("FIRST")) != NULL)
-      first = atoi(var);
-    else
-      first = 0;
-
-    if (first >= count)
-      first = count - CUPS_PAGE_MAX;
-
-    first = (first / CUPS_PAGE_MAX) * CUPS_PAGE_MAX;
-
-    if (first < 0)
-      first = 0;
-
-    if ((var = cgiGetVariable("ORDER")) != NULL && *var)
-      ascending = !_cups_strcasecmp(var, "asc");
-    else
-      ascending = !which_jobs || !*which_jobs ||
-                  !_cups_strcasecmp(which_jobs, "not-completed");
-
     section = cgiGetVariable("SECTION");
 
     cgiClearVariables();
@@ -1454,8 +1443,6 @@ cgiShowJobs(http_t     *http,             /* I - Connection to server */
     if (query)
       cgiSetVariable("QUERY", query);
 
-    cgiSetVariable("ORDER", ascending ? "asc" : "dec");
-
     cgiSetVariable("SECTION", section);
 
     sprintf(val, "%d", count);
@@ -1464,20 +1451,10 @@ cgiShowJobs(http_t     *http,           /* I - Connection to server */
     if (which_jobs)
       cgiSetVariable("WHICH_JOBS", which_jobs);
 
-    if (ascending)
-    {
-      for (i = 0, job = (ipp_attribute_t *)cupsArrayIndex(jobs, first);
-          i < CUPS_PAGE_MAX && job;
-          i ++, job = (ipp_attribute_t *)cupsArrayNext(jobs))
-        cgiSetIPPObjectVars(job, NULL, i);
-    }
-    else
-    {
-      for (i = 0, job = (ipp_attribute_t *)cupsArrayIndex(jobs, count - first - 1);
-          i < CUPS_PAGE_MAX && job;
-          i ++, job = (ipp_attribute_t *)cupsArrayPrev(jobs))
-        cgiSetIPPObjectVars(job, NULL, i);
-    }
+    for (i = 0, job = (ipp_attribute_t *)cupsArrayFirst(jobs);
+        i < CUPS_PAGE_MAX && job;
+        i ++, job = (ipp_attribute_t *)cupsArrayNext(jobs))
+      cgiSetIPPObjectVars(job, NULL, i);
 
    /*
     * Save navigation URLs...
@@ -1506,6 +1483,12 @@ cgiShowJobs(http_t     *http,            /* I - Connection to server */
       cgiSetVariable("NEXT", val);
     }
 
+    if (count > CUPS_PAGE_MAX)
+    {
+      snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
+      cgiSetVariable("LAST", val);
+    }
+
    /*
     * Then show everything...
     */
@@ -1547,8 +1530,3 @@ cgiText(const char *message)              /* I - Message */
 
   return (_cupsLangString(language, message));
 }
-
-
-/*
- * End of "$Id: ipp-var.c 12768 2015-06-30 16:13:38Z msweet $".
- */
index 383532d..a0d7c4b 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: jobs.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Job status CGI for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -201,8 +199,3 @@ do_job_op(http_t      *http,                /* I - HTTP connection */
 
   cgiEndHTML();
 }
-
-
-/*
- * End of "$Id: jobs.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 6be2797..97e130f 100644 (file)
@@ -1,30 +1,18 @@
 /*
- * "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $"
+ * Xcode documentation set generator.
  *
- *   Xcode documentation set generator.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   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/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
  * Usage:
  *
  *   makedocset directory *.tokens
- *
- * Contents:
- *
- *   main()                   - Test the help index code.
- *   compare_html()           - Compare the titles of two HTML files.
- *   compare_sections()       - Compare the names of two help sections.
- *   compare_sections_files() - Compare the number of files and section names.
- *   write_index()            - Write an index file for the CUPS help.
- *   write_info()             - Write the Info.plist file.
- *   write_nodes()            - Write the Nodes.xml file.
  */
 
 /*
@@ -479,8 +467,3 @@ write_nodes(const char   *path,             /* I - File to write */
 
   cupsFileClose(fp);
 }
-
-
-/*
- * End of "$Id: makedocset.c 3833 2012-05-23 22:51:18Z msweet $".
- */
index 9cfd44c..932c699 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: printers.c 11928 2014-06-13 00:08:32Z msweet $"
- *
  * Printer status CGI for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -306,8 +304,7 @@ show_all_printers(http_t     *http, /* I - Connection to server */
                        *response;      /* IPP response */
   cups_array_t         *printers;      /* Array of printer objects */
   ipp_attribute_t      *printer;       /* Printer object */
-  int                  ascending,      /* Order of printers (0 = descending) */
-                       first,          /* First printer to show */
+  int                  first,          /* First printer to show */
                        count;          /* Number of printers */
   const char           *var;           /* Form variable */
   void                 *search;        /* Search data */
@@ -389,25 +386,10 @@ show_all_printers(http_t     *http,       /* I - Connection to server */
     sprintf(val, "%d", count);
     cgiSetVariable("TOTAL", val);
 
-    if ((var = cgiGetVariable("ORDER")) != NULL && *var)
-      ascending = !_cups_strcasecmp(var, "asc");
-    else
-      ascending = 1;
-
-    if (ascending)
-    {
-      for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
-          i < CUPS_PAGE_MAX && printer;
-          i ++, printer = (ipp_attribute_t *)cupsArrayNext(printers))
-        cgiSetIPPObjectVars(printer, NULL, i);
-    }
-    else
-    {
-      for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, count - first - 1);
-          i < CUPS_PAGE_MAX && printer;
-          i ++, printer = (ipp_attribute_t *)cupsArrayPrev(printers))
-        cgiSetIPPObjectVars(printer, NULL, i);
-    }
+    for (i = 0, printer = (ipp_attribute_t *)cupsArrayIndex(printers, first);
+        i < CUPS_PAGE_MAX && printer;
+        i ++, printer = (ipp_attribute_t *)cupsArrayNext(printers))
+      cgiSetIPPObjectVars(printer, NULL, i);
 
    /*
     * Save navigation URLs...
@@ -427,6 +409,12 @@ show_all_printers(http_t     *http,        /* I - Connection to server */
       cgiSetVariable("NEXT", val);
     }
 
+    if (count > CUPS_PAGE_MAX)
+    {
+      snprintf(val, sizeof(val), "%d", CUPS_PAGE_MAX * (count / CUPS_PAGE_MAX));
+      cgiSetVariable("LAST", val);
+    }
+
    /*
     * Then show everything...
     */
@@ -563,8 +551,3 @@ show_printer(http_t     *http,              /* I - Connection to server */
 
    cgiEndHTML();
 }
-
-
-/*
- * End of "$Id: printers.c 11928 2014-06-13 00:08:32Z msweet $".
- */
index 9a93431..95efb36 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: search.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Search routines for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -368,8 +366,3 @@ cgiFreeSearch(void *search)         /* I - Search context */
 {
   regfree((regex_t *)search);
 }
-
-
-/*
- * End of "$Id: search.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 426e635..c7d2144 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: template.c 12700 2015-06-08 18:32:35Z msweet $"
- *
  * CGI template function.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -683,8 +681,3 @@ cgi_puturi(const char *s,           /* I - String to output */
     s ++;
   }
 }
-
-
-/*
- * End of "$Id: template.c 12700 2015-06-08 18:32:35Z msweet $".
- */
index 61d3296..fe58bab 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testcgi.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * CGI test program for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -62,8 +60,3 @@ main(void)
 
   return (0);
 }
-
-
-/*
- * End of "$Id: testcgi.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 9feed6b..1fbe906 100644 (file)
@@ -1,21 +1,14 @@
 /*
- * "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Help index test program for CUPS.
  *
- *   Help index test program for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   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/".
- *
- * Contents:
- *
- *   main()       - Test the help index code.
- *   list_nodes() - List nodes in an array...
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -106,8 +99,3 @@ list_nodes(const char   *title,              /* I - Title string */
     printf(" (%d words)\n", cupsArrayCount(node->words));
   }
 }
-
-
-/*
- * End of "$Id: testhi.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index c479b3a..046af47 100644 (file)
@@ -1,20 +1,14 @@
 /*
- * "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $"
+ * CGI template test program for CUPS.
  *
- *   CGI template test program for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 2006 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main() - Test the template code.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -96,8 +90,3 @@ main(int  argc,                               /* I - Number of command-line arguments */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: testtemplate.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 017de1e..6d02e10 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: var.c 12621 2015-05-06 21:32:18Z msweet $"
- *
  * CGI form variable and array functions for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -1294,8 +1292,3 @@ cgi_unlink_file(void)
     form_file = NULL;
   }
 }
-
-
-/*
- * End of "$Id: var.c 12621 2015-05-06 21:32:18Z msweet $".
- */
index 933d7d9..bc1f3f9 100644 (file)
@@ -1,16 +1,14 @@
 #
-# "$Id: Makefile 12533 2015-02-27 12:30:26Z msweet $"
+# Configuration file makefile for CUPS.
 #
-#   Configuration file makefile for CUPS.
+# Copyright 2007-2015 by Apple Inc.
+# Copyright 1993-2006 by Easy Software Products.
 #
-#   Copyright 2007-2015 by Apple Inc.
-#   Copyright 1993-2006 by Easy Software Products.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 include ../Makedefs
@@ -136,8 +134,3 @@ uninstall:
                $(RM) $(BUILDROOT)$(PAMDIR)/cups; \
                $(RMDIR) $(BUILDROOT)$(PAMDIR); \
        fi
-
-
-#
-# End of "$Id: Makefile 12533 2015-02-27 12:30:26Z msweet $".
-#
index 0685b19..f460000 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $"
+# "$Id$"
 #
 #   DO NOT EDIT THIS FILE, AS IT IS OVERWRITTEN WHEN YOU INSTALL NEW
 #   VERSIONS OF CUPS.  Instead, create a "local.convs" file that
@@ -59,5 +59,5 @@ application/vnd.cups-raster   image/pwg-raster                100     rastertopwg
 @DEFAULT_RAW_PRINTING@application/octet-stream application/vnd.cups-raw        0       -
 
 #
-# End of "$Id: mime.convs.in 11025 2013-06-07 01:00:33Z msweet $".
+# End of "$Id$".
 #
index 0235859..fbba715 100644 (file)
@@ -1,9 +1,7 @@
 dnl
-dnl "$Id: cups-common.m4 12852 2015-08-28 13:29:21Z msweet $"
-dnl
 dnl Common configuration stuff for CUPS.
 dnl
-dnl Copyright 2007-2015 by Apple Inc.
+dnl Copyright 2007-2016 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
@@ -18,21 +16,7 @@ AC_CONFIG_HEADER(config.h)
 
 dnl Version number information...
 CUPS_VERSION="AC_PACKAGE_VERSION"
-
-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_REVISION=""
 CUPS_BUILD="cups-$CUPS_VERSION"
 
 AC_ARG_WITH(cups_build, [  --with-cups-build       set "cups-config --build" string ],
@@ -215,6 +199,9 @@ AC_CHECK_FUNCS(waitpid wait3)
 dnl Check for posix_spawn
 AC_CHECK_FUNCS(posix_spawn)
 
+dnl Check for getgrouplist
+AC_CHECK_FUNCS(getgrouplist)
+
 dnl See if the tm structure has the tm_gmtoff member...
 AC_MSG_CHECKING(for tm_gmtoff member in tm structure)
 AC_TRY_COMPILE([#include <time.h>],[struct tm t;
@@ -472,7 +459,3 @@ case "$COMPONENTS" in
 esac
 
 AC_SUBST(BUILDDIRS)
-
-dnl
-dnl End of "$Id: cups-common.m4 12852 2015-08-28 13:29:21Z msweet $".
-dnl
index b911877..4e71f0c 100644 (file)
@@ -1,6 +1,4 @@
 dnl
-dnl "$Id: cups-compiler.m4 12742 2015-06-23 14:48:53Z msweet $"
-dnl
 dnl Compiler stuff for CUPS.
 dnl
 dnl Copyright 2007-2014 by Apple Inc.
@@ -244,7 +242,3 @@ case $uname in
                OPTIM="$OPTIM -D_GNU_SOURCE"
                ;;
 esac
-
-dnl
-dnl End of "$Id: cups-compiler.m4 12742 2015-06-23 14:48:53Z msweet $".
-dnl
index 432a927..4471e3c 100644 (file)
@@ -1,16 +1,14 @@
 dnl
-dnl "$Id: cups-defaults.m4 12846 2015-08-26 18:26:22Z msweet $"
+dnl Default cupsd configuration settings for CUPS.
 dnl
-dnl   Default cupsd configuration settings for CUPS.
+dnl Copyright 2007-2015 by Apple Inc.
+dnl Copyright 2006-2007 by Easy Software Products, all rights reserved.
 dnl
-dnl   Copyright 2007-2015 by Apple Inc.
-dnl   Copyright 2006-2007 by Easy Software Products, all rights reserved.
-dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 dnl Default languages...
@@ -24,8 +22,8 @@ AC_ARG_WITH(languages, [  --with-languages        set installed languages, defau
        esac])
 AC_SUBST(LANGUAGES)
 
-dnl OS X bundle-based localization support
-AC_ARG_WITH(bundledir, [  --with-bundledir        set OS X localization bundle directory ],
+dnl macOS bundle-based localization support
+AC_ARG_WITH(bundledir, [  --with-bundledir        set macOS localization bundle directory ],
        CUPS_BUNDLEDIR="$withval",
        if test "x$uname" = xDarwin -a $uversion -ge 100; then
                CUPS_BUNDLEDIR="/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A"
@@ -384,7 +382,7 @@ AC_SUBST(DEFAULT_IPP_PORT)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_IPP_PORT,$DEFAULT_IPP_PORT)
 
 dnl Web interface...
-AC_ARG_ENABLE(webif, [  --enable-webif          enable the web interface by default, default=no for OS X])
+AC_ARG_ENABLE(webif, [  --enable-webif          enable the web interface by default, default=no for macOS])
 case "x$enable_webif" in
        xno)
                CUPS_WEBIF=No
@@ -407,7 +405,3 @@ esac
 
 AC_SUBST(CUPS_WEBIF)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_WEBIF, $CUPS_DEFAULT_WEBIF)
-
-dnl
-dnl End of "$Id: cups-defaults.m4 12846 2015-08-26 18:26:22Z msweet $".
-dnl
index fa3369e..30e45d9 100644 (file)
@@ -1,9 +1,7 @@
 dnl
-dnl "$Id: cups-directories.m4 11717 2014-03-21 16:42:53Z msweet $"
-dnl
 dnl Directory stuff for CUPS.
 dnl
-dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 2007-2016 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
@@ -269,7 +267,7 @@ AC_SUBST(CUPS_REQUESTS)
 # Server executables...
 case "$uname" in
        *BSD* | Darwin*)
-               # *BSD and Darwin (MacOS X)
+               # *BSD and Darwin (macOS)
                INSTALL_SYSV=""
                CUPS_SERVERBIN="$exec_prefix/libexec/cups"
                ;;
@@ -293,7 +291,7 @@ AC_SUBST(CUPS_SERVERROOT)
 AC_ARG_WITH(rundir, [  --with-rundir           set transient run-time state directory],CUPS_STATEDIR="$withval",[
        case "$uname" in
                Darwin*)
-                       # Darwin (OS X)
+                       # Darwin (macOS)
                        CUPS_STATEDIR="$CUPS_SERVERROOT"
                        ;;
                *)
@@ -303,7 +301,3 @@ AC_ARG_WITH(rundir, [  --with-rundir           set transient run-time state dire
        esac])
 AC_DEFINE_UNQUOTED(CUPS_STATEDIR, "$CUPS_STATEDIR")
 AC_SUBST(CUPS_STATEDIR)
-
-dnl
-dnl End of "$Id: cups-directories.m4 11717 2014-03-21 16:42:53Z msweet $".
-dnl
index 69e5d37..0b6ba58 100644 (file)
@@ -1,15 +1,13 @@
 dnl
-dnl "$Id: cups-dnssd.m4 12845 2015-08-26 18:23:53Z msweet $"
+dnl DNS Service Discovery (aka Bonjour) stuff for CUPS.
 dnl
-dnl   DNS Service Discovery (aka Bonjour) stuff for CUPS.
+dnl Copyright 2007-2016 by Apple Inc.
 dnl
-dnl   Copyright 2007-2015 by Apple Inc.
-dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 AC_ARG_ENABLE(avahi, [  --disable-avahi         disable DNS Service Discovery support using Avahi])
@@ -45,7 +43,7 @@ if test "x$DNSSD_BACKEND" = x -a x$enable_dnssd != xno; then
        AC_CHECK_HEADER(dns_sd.h, [
                case "$uname" in
                        Darwin*)
-                               # Darwin and MacOS X...
+                               # Darwin and macOS...
                                AC_DEFINE(HAVE_DNSSD)
                                DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
                                DNSSD_BACKEND="dnssd"
@@ -80,7 +78,3 @@ AC_SUBST(DNSSDLIBS)
 AC_SUBST(DNSSD_BACKEND)
 AC_SUBST(IPPFIND_BIN)
 AC_SUBST(IPPFIND_MAN)
-
-dnl
-dnl End of "$Id: cups-dnssd.m4 12845 2015-08-26 18:23:53Z msweet $".
-dnl
index 616d96c..e540bfc 100644 (file)
@@ -1,19 +1,17 @@
 dnl
-dnl   "$Id: cups-gssapi.m4 11911 2014-06-10 13:54:53Z msweet $"
+dnl GSSAPI/Kerberos library detection for CUPS.
 dnl
-dnl   GSSAPI/Kerberos library detection for CUPS.
+dnl Copyright 2007-2013 by Apple Inc.
+dnl Copyright 2006-2007 by Easy Software Products.
 dnl
-dnl   Copyright 2007-2013 by Apple Inc.
-dnl   Copyright 2006-2007 by Easy Software Products.
+dnl This file contains Kerberos support code, copyright 2006 by
+dnl Jelmer Vernooij.
 dnl
-dnl   This file contains Kerberos support code, copyright 2006 by
-dnl   Jelmer Vernooij.
-dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 AC_ARG_ENABLE(gssapi, [  --disable-gssapi        disable GSSAPI support])
@@ -26,7 +24,7 @@ if test x$enable_gssapi != xno; then
        if test "x$KRB5CONFIG" != x; then
                case "$uname" in
                        Darwin)
-                               # OS X weak-links to the Kerberos framework...
+                               # macOS weak-links to the Kerberos framework...
                                LIBGSSAPI="-weak_framework Kerberos"
                                AC_MSG_CHECKING(for GSS framework)
                                if test -d /System/Library/Frameworks/GSS.framework; then
@@ -127,7 +125,3 @@ fi
 
 AC_SUBST(CUPS_DEFAULT_GSSSERVICENAME)
 AC_DEFINE_UNQUOTED(CUPS_DEFAULT_GSSSERVICENAME, "$CUPS_DEFAULT_GSSSERVICENAME")
-
-dnl
-dnl End of "$Id: cups-gssapi.m4 11911 2014-06-10 13:54:53Z msweet $".
-dnl
index 6be7b1f..1f0c538 100644 (file)
@@ -1,16 +1,14 @@
 dnl
-dnl "$Id: cups-largefile.m4 11324 2013-10-04 03:11:42Z msweet $"
+dnl Large file support stuff for CUPS.
 dnl
-dnl   Large file support stuff for CUPS.
+dnl Copyright 2007-2011 by Apple Inc.
+dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
 dnl
-dnl   Copyright 2007-2011 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
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 dnl Check for largefile support...
@@ -46,7 +44,3 @@ if test $ac_cv_c_long_long = yes; then
 fi
 
 AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
-
-dnl
-dnl End of "$Id: cups-largefile.m4 11324 2013-10-04 03:11:42Z msweet $".
-dnl
index 2dcaab3..805e806 100644 (file)
@@ -1,16 +1,14 @@
 dnl
-dnl "$Id: cups-libtool.m4 11324 2013-10-04 03:11:42Z msweet $"
+dnl Libtool stuff for CUPS.
 dnl
-dnl   Libtool stuff for CUPS.
+dnl Copyright 2007-2011 by Apple Inc.
+dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
 dnl
-dnl   Copyright 2007-2011 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
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 AC_ARG_ENABLE(libtool_unsupported, [  --enable-libtool-unsupported
@@ -33,7 +31,3 @@ if test x$LIBTOOL != x; then
        LINKCUPSIMAGE="../filter/\$(LIBCUPSIMAGE)"
        DSO="\$(CC)"
 fi
-
-dnl
-dnl End of "$Id: cups-libtool.m4 11324 2013-10-04 03:11:42Z msweet $".
-dnl
index bd6b8d5..bbdb0a1 100644 (file)
@@ -1,9 +1,7 @@
 dnl
-dnl "$Id: cups-manpages.m4 11342 2013-10-18 20:36:01Z msweet $"
-dnl
 dnl Manpage stuff for CUPS.
 dnl
-dnl Copyright 2007-2013 by Apple Inc.
+dnl Copyright 2007-2016 by Apple Inc.
 dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
 dnl
 dnl These coded instructions, statements, and computer programs are the
@@ -23,7 +21,7 @@ fi
 if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
        case "$uname" in
                Darwin* | Linux | GNU | *BSD*)
-                       # Darwin, MacOS X, Linux, GNU HURD, and *BSD
+                       # Darwin, macOS, Linux, GNU HURD, and *BSD
                        mandir="/usr/share/man"
                        AMANDIR="/usr/share/man"
                        PMANDIR="/usr/share/man"
@@ -54,7 +52,7 @@ case "$uname" in
                MAN8DIR=1m
                ;;
        Linux* | GNU* | Darwin*)
-               # Linux, GNU Hurd, and OS X
+               # Linux, GNU Hurd, and macOS
                MAN1EXT=1.gz
                MAN5EXT=5.gz
                MAN7EXT=7.gz
@@ -76,7 +74,3 @@ AC_SUBST(MAN5EXT)
 AC_SUBST(MAN7EXT)
 AC_SUBST(MAN8EXT)
 AC_SUBST(MAN8DIR)
-
-dnl
-dnl End of "$Id: cups-manpages.m4 11342 2013-10-18 20:36:01Z msweet $".
-dnl
index e5b3405..7a219be 100644 (file)
@@ -1,9 +1,7 @@
 dnl
-dnl "$Id: cups-network.m4 12324 2014-12-09 20:28:39Z msweet $"
-dnl
 dnl Networking stuff for CUPS.
 dnl
-dnl Copyright 2007-2014 by Apple Inc.
+dnl Copyright 2007-2016 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
@@ -49,7 +47,7 @@ if test x$enable_domainsocket != xno -a x$default_domainsocket != xno; then
        if test "x$default_domainsocket" = x; then
                case "$uname" in
                        Darwin*)
-                               # Darwin and MaxOS X do their own thing...
+                               # Darwin and macOS do their own thing...
                                CUPS_DEFAULT_DOMAINSOCKET="$localstatedir/run/cupsd"
                                ;;
                        *)
@@ -70,7 +68,3 @@ fi
 
 AC_SUBST(CUPS_DEFAULT_DOMAINSOCKET)
 AC_SUBST(CUPS_LISTEN_DOMAINSOCKET)
-
-dnl
-dnl End of "$Id: cups-network.m4 12324 2014-12-09 20:28:39Z msweet $".
-dnl
index 755f9d7..3cf6fb1 100644 (file)
@@ -1,16 +1,14 @@
 dnl
-dnl "$Id: cups-opsys.m4 11324 2013-10-04 03:11:42Z msweet $"
+dnl Operating system stuff for CUPS.
 dnl
-dnl   Operating system stuff for CUPS.
+dnl Copyright 2007-2012 by Apple Inc.
+dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
 dnl
-dnl   Copyright 2007-2012 by Apple Inc.
-dnl   Copyright 1997-2006 by Easy Software Products, all rights reserved.
-dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 dnl Get the operating system, version number, and architecture...
@@ -22,7 +20,7 @@ case "$uname" in
        Darwin*)
                uname="Darwin"
                if test $uversion -lt 120; then
-                       AC_MSG_ERROR([Sorry, this version of CUPS requires OS X 10.8 or higher.])
+                       AC_MSG_ERROR([Sorry, this version of CUPS requires macOS 10.8 or higher.])
                fi
                ;;
 
@@ -33,7 +31,3 @@ case "$uname" in
                uname="Linux"
                ;;
 esac
-
-dnl
-dnl "$Id: cups-opsys.m4 11324 2013-10-04 03:11:42Z msweet $"
-dnl
index 904a273..e3c6aa6 100644 (file)
@@ -1,7 +1,5 @@
 dnl
-dnl "$Id: cups-pam.m4 11342 2013-10-18 20:36:01Z msweet $"
-dnl
-dnl   PAM stuff for CUPS.
+dnl PAM stuff for CUPS.
 dnl
 dnl Copyright 2007-2013 by Apple Inc.
 dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
@@ -56,7 +54,7 @@ if test x$enable_pam != xno; then
 
        case "$uname" in
                Darwin*)
-                       # Darwin/OS X
+                       # Darwin/macOS
                        if test "x$with_pam_module" != x; then
                                PAMFILE="pam.$with_pam_module"
                        elif test -f /usr/lib/pam/pam_opendirectory.so.2; then
@@ -91,7 +89,3 @@ AC_SUBST(PAMFILE)
 AC_SUBST(PAMLIBS)
 AC_SUBST(PAMMOD)
 AC_SUBST(PAMMODAUTH)
-
-dnl
-dnl End of "$Id: cups-pam.m4 11342 2013-10-18 20:36:01Z msweet $".
-dnl
index 8774a2f..9636196 100644 (file)
@@ -1,22 +1,16 @@
 dnl
-dnl "$Id: cups-poll.m4 11324 2013-10-04 03:11:42Z msweet $"
+dnl Select/poll stuff for CUPS.
 dnl
-dnl   Select/poll stuff for CUPS.
+dnl Copyright 2007-2011 by Apple Inc.
+dnl Copyright 2006 by Easy Software Products, all rights reserved.
 dnl
-dnl   Copyright 2007-2011 by Apple Inc.
-dnl   Copyright 2006 by Easy Software Products, all rights reserved.
-dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 AC_CHECK_FUNC(poll, AC_DEFINE(HAVE_POLL))
 AC_CHECK_FUNC(epoll_create, AC_DEFINE(HAVE_EPOLL))
 AC_CHECK_FUNC(kqueue, AC_DEFINE(HAVE_KQUEUE))
-
-dnl
-dnl End of "$Id: cups-poll.m4 11324 2013-10-04 03:11:42Z msweet $".
-dnl
index defaf09..10b4541 100644 (file)
@@ -1,16 +1,14 @@
 dnl
-dnl "$Id: cups-scripting.m4 11324 2013-10-04 03:11:42Z msweet $"
+dnl Scripting configuration stuff for CUPS.
 dnl
-dnl   Scripting configuration stuff for CUPS.
+dnl Copyright 2007-2010 by Apple Inc.
+dnl Copyright 1997-2006 by Easy Software Products, all rights reserved.
 dnl
-dnl   Copyright 2007-2010 by Apple Inc.
-dnl   Copyright 1997-2006 by Easy Software Products, all rights reserved.
-dnl
-dnl   These coded instructions, statements, and computer programs are the
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 dnl Do we have Java?
@@ -83,7 +81,3 @@ AC_DEFINE_UNQUOTED(CUPS_PYTHON, "$CUPS_PYTHON")
 if test "x$CUPS_PYTHON" != x; then
        AC_DEFINE(HAVE_PYTHON)
 fi
-
-dnl
-dnl End of "$Id: cups-scripting.m4 11324 2013-10-04 03:11:42Z msweet $".
-dnl
index a8df14a..33bb30f 100644 (file)
@@ -1,6 +1,4 @@
 dnl
-dnl "$Id: cups-sharedlibs.m4 11342 2013-10-18 20:36:01Z msweet $"
-dnl
 dnl Shared library support for CUPS.
 dnl
 dnl Copyright 2007-2013 by Apple Inc.
@@ -156,7 +154,3 @@ fi
 AC_SUBST(DSOLIBS)
 AC_SUBST(IMGLIBS)
 AC_SUBST(EXPORT_LDFLAGS)
-
-dnl
-dnl End of "$Id: cups-sharedlibs.m4 11342 2013-10-18 20:36:01Z msweet $".
-dnl
index df0bd45..d9d8581 100644 (file)
@@ -1,6 +1,4 @@
 dnl
-dnl "$Id: cups-ssl.m4 12645 2015-05-20 01:20:52Z msweet $"
-dnl
 dnl TLS stuff for CUPS.
 dnl
 dnl Copyright 2007-2015 by Apple Inc.
@@ -106,7 +104,3 @@ AC_SUBST(SSLLIBS)
 
 EXPORT_SSLLIBS="$SSLLIBS"
 AC_SUBST(EXPORT_SSLLIBS)
-
-dnl
-dnl End of "$Id: cups-ssl.m4 12645 2015-05-20 01:20:52Z msweet $".
-dnl
index dfe4740..0ab61ec 100644 (file)
@@ -1,9 +1,7 @@
 dnl
-dnl "$Id: cups-startup.m4 12857 2015-08-31 15:00:45Z msweet $"
-dnl
 dnl Launch-on-demand/startup stuff for CUPS.
 dnl
-dnl Copyright 2007-2015 by Apple Inc.
+dnl Copyright 2007-2016 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
@@ -18,23 +16,20 @@ ONDEMANDLIBS=""
 AC_SUBST(ONDEMANDFLAGS)
 AC_SUBST(ONDEMANDLIBS)
 
-dnl Launchd is used on OS X/Darwin...
+dnl Launchd is used on macOS/Darwin...
 AC_ARG_ENABLE(launchd, [  --disable-launchd       disable launchd support])
 LAUNCHD_DIR=""
 AC_SUBST(LAUNCHD_DIR)
 
 if test x$enable_launchd != xno; then
-       AC_CHECK_FUNC(launch_msg, AC_DEFINE(HAVE_LAUNCHD))
-       if test $uversion -ge 140; then
-               AC_CHECK_FUNC(launch_activate_socket, [
-                       AC_DEFINE(HAVE_LAUNCHD)
-                       AC_DEFINE(HAVE_LAUNCH_ACTIVATE_SOCKET)])
-       fi
+       AC_CHECK_FUNC(launch_activate_socket, [
+               AC_DEFINE(HAVE_LAUNCHD)
+               AC_DEFINE(HAVE_ONDEMAND)])
        AC_CHECK_HEADER(launch.h, AC_DEFINE(HAVE_LAUNCH_H))
 
        case "$uname" in
                Darwin*)
-                       # Darwin, MacOS X
+                       # Darwin, macOS
                        LAUNCHD_DIR="/System/Library/LaunchDaemons"
                        # liblaunch is already part of libSystem
                        ;;
@@ -79,6 +74,7 @@ if test x$enable_systemd != xno; then
 
                if test $have_systemd = yes; then
                         AC_DEFINE(HAVE_SYSTEMD)
+                        AC_DEFINE(HAVE_ONDEMAND)
                        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`"
@@ -87,6 +83,16 @@ if test x$enable_systemd != xno; then
         fi
 fi
 
+dnl Upstart is also used on Linux (e.g., Chrome OS)
+AC_ARG_ENABLE(upstart, [ --enable-upstart         enable upstart support])
+if test "x$enable_upstart" = "xyes"; then
+       if test "x$have_systemd" = "xyes"; then
+               AC_MSG_ERROR(Cannot support both systemd and upstart.)
+       fi
+       AC_DEFINE(HAVE_UPSTART)
+       AC_DEFINE(HAVE_ONDEMAND)
+fi
+
 dnl Solaris uses smf
 SMFMANIFESTDIR=""
 AC_SUBST(SMFMANIFESTDIR)
@@ -185,8 +191,3 @@ if test "x$xinetd" = x; then
 elif test "x$xinetd" != xno; then
        XINETD="$xinetd"
 fi
-
-
-dnl
-dnl End of "$Id: cups-startup.m4 12857 2015-08-31 15:00:45Z msweet $".
-dnl
index 9eaf63a..017b910 100644 (file)
@@ -1,16 +1,14 @@
 dnl
-dnl "$Id: cups-threads.m4 11324 2013-10-04 03:11:42Z msweet $"
+dnl Threading stuff for CUPS.
 dnl
-dnl   Threading stuff for CUPS.
+dnl Copyright 2007-2011 by Apple Inc.
+dnl Copyright 1997-2005 by Easy Software Products, all rights reserved.
 dnl
-dnl   Copyright 2007-2011 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
-dnl   property of Apple Inc. and are protected by Federal copyright
-dnl   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-dnl   which should have been included with this file.  If this file is
-dnl   file is missing or damaged, see the license at "http://www.cups.org/".
+dnl These coded instructions, statements, and computer programs are the
+dnl property of Apple Inc. and are protected by Federal copyright
+dnl law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+dnl which should have been included with this file.  If this file is
+dnl file is missing or damaged, see the license at "http://www.cups.org/".
 dnl
 
 AC_ARG_ENABLE(threads, [  --disable-threads       disable multi-threading support])
@@ -48,7 +46,3 @@ if test "x$enable_threads" != xno; then
 fi
 
 AC_SUBST(PTHREAD_FLAGS)
-
-dnl
-dnl End of "$Id: cups-threads.m4 11324 2013-10-04 03:11:42Z msweet $".
-dnl
index 15607ee..0323eaa 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: config.h.in 12687 2015-06-03 17:19:04Z msweet $"
- *
  * Configuration file for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
 
 
 /*
+ * Do we have on-demand support (launchd/systemd/upstart)?
+ */
+
+#undef HAVE_ONDEMAND
+
+
+/*
  * Do we have launchd support?
  */
 
 #undef HAVE_LAUNCH_H
 #undef HAVE_LAUNCHD
-#undef HAVE_LAUNCH_ACTIVATE_SOCKET
 
 
 /*
 
 
 /*
+ * Do we have upstart support?
+ */
+
+#undef HAVE_UPSTART
+
+
+/*
  * Various scripting languages...
  */
 
 
 
 /*
- * Location of the poppler/Xpdf pdftops program...
- */
-
-#undef HAVE_PDFTOPS
-#undef HAVE_PDFTOPS_WITH_ORIGPAGESIZES
-#define CUPS_PDFTOPS   "/usr/bin/pdftops"
-
-
-/*
- * Location of the Ghostscript gs program...
- */
-
-#undef HAVE_GHOSTSCRIPT
-#undef HAVE_GHOSTSCRIPT_PS2WRITE
-#define CUPS_GHOSTSCRIPT "/usr/bin/gs"
-
-
-/*
  * Do we have CoreFoundation public and private headers?
  */
 
 
 
 /*
- * Do we have OS X 10.4's mbr_XXX functions?
+ * Do we have the getgrouplist() function?
+ */
+
+#undef HAVE_GETGROUPLIST
+
+
+/*
+ * Do we have macOS 10.4's mbr_XXX functions?
  */
 
 #undef HAVE_MEMBERSHIP_H
 
 
 /*
- * Location of OS X localization bundle, if any.
+ * Location of macOS localization bundle, if any.
  */
 
 #undef CUPS_BUNDLEDIR
@@ -738,7 +738,3 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
 #endif /* !HAVE_ABS && !abs */
 
 #endif /* !_CUPS_CONFIG_H_ */
-
-/*
- * End of "$Id: config.h.in 12687 2015-06-03 17:19:04Z msweet $".
- */
index 350bda6..f084324 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.68 for CUPS 2.1.4.
+# Generated by GNU Autoconf 2.68 for CUPS 2.2.0.
 #
-# Report bugs to <https://www.cups.org/str.php>.
+# Report bugs to <https://github.com/apple/cups/issues>.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -239,7 +239,7 @@ fi
     $as_echo "$0: be upgraded to zsh 4.3.4 or later."
   else
     $as_echo "$0: Please tell bug-autoconf@gnu.org and
-$0: https://www.cups.org/str.php about your system,
+$0: https://github.com/apple/cups/issues 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."
@@ -560,9 +560,9 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='CUPS'
 PACKAGE_TARNAME='cups'
-PACKAGE_VERSION='2.1.4'
-PACKAGE_STRING='CUPS 2.1.4'
-PACKAGE_BUGREPORT='https://www.cups.org/str.php'
+PACKAGE_VERSION='2.2.0'
+PACKAGE_STRING='CUPS 2.2.0'
+PACKAGE_BUGREPORT='https://github.com/apple/cups/issues'
 PACKAGE_URL='https://www.cups.org/'
 
 # Factoring default headers for most tests.
@@ -858,6 +858,7 @@ with_dnssd_includes
 enable_launchd
 enable_systemd
 with_systemd
+enable_upstart
 with_smfmanifestdir
 with_rcdir
 with_rclevels
@@ -1447,7 +1448,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures CUPS 2.1.4 to adapt to many kinds of systems.
+\`configure' configures CUPS 2.2.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1508,7 +1509,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of CUPS 2.1.4:";;
+     short | recursive ) echo "Configuration of CUPS 2.2.0:";;
    esac
   cat <<\_ACEOF
 
@@ -1542,12 +1543,13 @@ Optional Features:
   --disable-dnssd         disable DNS Service Discovery support using mDNSResponder
   --disable-launchd       disable launchd support
   --disable-systemd       disable systemd support
+ --enable-upstart         enable upstart support
   --enable-page-logging   enable page_log by default
   --disable-browsing      disable Browsing by default
   --disable-default-shared
                          disable DefaultShared by default
   --disable-raw-printing  do not allow raw printing by default
-  --enable-webif          enable the web interface by default, default=no for OS X
+  --enable-webif          enable the web interface by default, default=no for macOS
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1585,7 +1587,7 @@ Optional Packages:
   --with-rcstop           set stop number for rc scripts
   --with-xinetd           set path for xinetd config files
   --with-languages        set installed languages, default=all
-  --with-bundledir        set OS X localization bundle directory
+  --with-bundledir        set macOS localization bundle directory
   --with-config-file-perm set default ConfigFilePerm value, default=0640
   --with-cupsd-file-perm  set default cupsd permissions, default=0500
   --with-log-file-perm    set default LogFilePerm value, default=0644
@@ -1623,7 +1625,7 @@ Some influential environment variables:
 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 <https://www.cups.org/str.php>.
+Report bugs to <https://github.com/apple/cups/issues>.
 CUPS home page: <https://www.cups.org/>.
 _ACEOF
 ac_status=$?
@@ -1687,7 +1689,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-CUPS configure 2.1.4
+CUPS configure 2.2.0
 generated by GNU Autoconf 2.68
 
 Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1972,9 +1974,9 @@ $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
 $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 ##
-## ------------------------------------------- ##"
+( $as_echo "## --------------------------------------------------- ##
+## Report this to https://github.com/apple/cups/issues ##
+## --------------------------------------------------- ##"
      ) | sed "s/^/$as_me: WARNING:     /" >&2
     ;;
 esac
@@ -2151,7 +2153,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by CUPS $as_me 2.1.4, which was
+It was created by CUPS $as_me 2.2.0, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   $ $0 $@
@@ -2509,7 +2511,7 @@ case "$uname" in
        Darwin*)
                uname="Darwin"
                if test $uversion -lt 120; then
-                       as_fn_error $? "Sorry, this version of CUPS requires OS X 10.8 or higher." "$LINENO" 5
+                       as_fn_error $? "Sorry, this version of CUPS requires macOS 10.8 or higher." "$LINENO" 5
                fi
                ;;
 
@@ -2522,26 +2524,11 @@ case "$uname" in
 esac
 
 
-
 ac_config_headers="$ac_config_headers config.h"
 
 
-CUPS_VERSION="2.1.4"
-
-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.2.0"
+CUPS_REVISION=""
 CUPS_BUILD="cups-$CUPS_VERSION"
 
 
@@ -5305,6 +5292,18 @@ fi
 done
 
 
+for ac_func in getgrouplist
+do :
+  ac_fn_c_check_func "$LINENO" "getgrouplist" "ac_cv_func_getgrouplist"
+if test "x$ac_cv_func_getgrouplist" = xyes; then :
+  cat >>confdefs.h <<_ACEOF
+#define HAVE_GETGROUPLIST 1
+_ACEOF
+
+fi
+done
+
+
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for tm_gmtoff member in tm structure" >&5
 $as_echo_n "checking for tm_gmtoff member in tm structure... " >&6; }
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -5938,7 +5937,6 @@ esac
 
 
 
-
 if test "$prefix" = "NONE"; then
        prefix="/"
 fi
@@ -6281,7 +6279,7 @@ _ACEOF
 # Server executables...
 case "$uname" in
        *BSD* | Darwin*)
-               # *BSD and Darwin (MacOS X)
+               # *BSD and Darwin (macOS)
                INSTALL_SYSV=""
                CUPS_SERVERBIN="$exec_prefix/libexec/cups"
                ;;
@@ -6316,7 +6314,7 @@ else
 
        case "$uname" in
                Darwin*)
-                       # Darwin (OS X)
+                       # Darwin (macOS)
                        CUPS_STATEDIR="$CUPS_SERVERROOT"
                        ;;
                *)
@@ -6333,7 +6331,6 @@ _ACEOF
 
 
 
-
 if test "$mandir" = "\${datarootdir}/man" -a "$prefix" = "/"; then
        # New GNU "standards" break previous ones, so make sure we use
        # the right default location for the operating system...
@@ -6343,7 +6340,7 @@ fi
 if test "$mandir" = "\${prefix}/man" -a "$prefix" = "/"; then
        case "$uname" in
                Darwin* | Linux | GNU | *BSD*)
-                       # Darwin, MacOS X, Linux, GNU HURD, and *BSD
+                       # Darwin, macOS, Linux, GNU HURD, and *BSD
                        mandir="/usr/share/man"
                        AMANDIR="/usr/share/man"
                        PMANDIR="/usr/share/man"
@@ -6373,7 +6370,7 @@ case "$uname" in
                MAN8DIR=1m
                ;;
        Linux* | GNU* | Darwin*)
-               # Linux, GNU Hurd, and OS X
+               # Linux, GNU Hurd, and macOS
                MAN1EXT=1.gz
                MAN5EXT=5.gz
                MAN7EXT=7.gz
@@ -6398,7 +6395,6 @@ esac
 
 
 
-
 PICFLAG=1
 DSOFLAGS="${DSOFLAGS:=}"
 
@@ -6547,7 +6543,6 @@ fi
 
 
 
-
 # Check whether --enable-libtool_unsupported was given.
 if test "${enable_libtool_unsupported+set}" = set; then :
   enableval=$enable_libtool_unsupported; if test x$enable_libtool_unsupported != xno; then
@@ -6572,7 +6567,6 @@ if test x$LIBTOOL != x; then
 fi
 
 
-
 INSTALL_STRIP=""
 OPTIM=""
 
@@ -6936,7 +6930,6 @@ esac
 
 
 
-
 ac_fn_c_check_header_compile "$LINENO" "resolv.h" "ac_cv_header_resolv_h" "
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -7555,7 +7548,7 @@ if test x$enable_domainsocket != xno -a x$default_domainsocket != xno; then
        if test "x$default_domainsocket" = x; then
                case "$uname" in
                        Darwin*)
-                               # Darwin and MaxOS X do their own thing...
+                               # Darwin and macOS do their own thing...
                                CUPS_DEFAULT_DOMAINSOCKET="$localstatedir/run/cupsd"
                                ;;
                        *)
@@ -7581,7 +7574,6 @@ fi
 
 
 
-
 ac_fn_c_check_func "$LINENO" "poll" "ac_cv_func_poll"
 if test "x$ac_cv_func_poll" = xyes; then :
   $as_echo "#define HAVE_POLL 1" >>confdefs.h
@@ -7602,7 +7594,6 @@ fi
 
 
 
-
 # Check whether --enable-gssapi was given.
 if test "${enable_gssapi+set}" = set; then :
   enableval=$enable_gssapi;
@@ -7714,7 +7705,7 @@ fi
        if test "x$KRB5CONFIG" != x; then
                case "$uname" in
                        Darwin)
-                               # OS X weak-links to the Kerberos framework...
+                               # macOS weak-links to the Kerberos framework...
                                LIBGSSAPI="-weak_framework Kerberos"
                                { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GSS framework" >&5
 $as_echo_n "checking for GSS framework... " >&6; }
@@ -8038,7 +8029,6 @@ _ACEOF
 
 
 
-
 # Check whether --enable-threads was given.
 if test "${enable_threads+set}" = set; then :
   enableval=$enable_threads;
@@ -8101,7 +8091,6 @@ fi
 
 
 
-
 # Check whether --enable-ssl was given.
 if test "${enable_ssl+set}" = set; then :
   enableval=$enable_ssl;
@@ -8466,7 +8455,6 @@ EXPORT_SSLLIBS="$SSLLIBS"
 
 
 
-
 # Check whether --enable-pam was given.
 if test "${enable_pam+set}" = set; then :
   enableval=$enable_pam;
@@ -8697,7 +8685,7 @@ fi
 
        case "$uname" in
                Darwin*)
-                       # Darwin/OS X
+                       # Darwin/macOS
                        if test "x$with_pam_module" != x; then
                                PAMFILE="pam.$with_pam_module"
                        elif test -f /usr/lib/pam/pam_opendirectory.so.2; then
@@ -8734,7 +8722,6 @@ fi
 
 
 
-
 # Check whether --enable-largefile was given.
 if test "${enable_largefile+set}" = set; then :
   enableval=$enable_largefile;
@@ -8991,7 +8978,6 @@ fi
 
 
 
-
 # Check whether --enable-avahi was given.
 if test "${enable_avahi+set}" = set; then :
   enableval=$enable_avahi;
@@ -9047,7 +9033,7 @@ if test "x$ac_cv_header_dns_sd_h" = xyes; then :
 
                case "$uname" in
                        Darwin*)
-                               # Darwin and MacOS X...
+                               # Darwin and macOS...
                                $as_echo "#define HAVE_DNSSD 1" >>confdefs.h
 
                                DNSSDLIBS="-framework CoreFoundation -framework SystemConfiguration"
@@ -9105,7 +9091,6 @@ fi
 
 
 
-
 ONDEMANDFLAGS=""
 ONDEMANDLIBS=""
 
@@ -9120,23 +9105,15 @@ LAUNCHD_DIR=""
 
 
 if test x$enable_launchd != xno; then
-       ac_fn_c_check_func "$LINENO" "launch_msg" "ac_cv_func_launch_msg"
-if test "x$ac_cv_func_launch_msg" = xyes; then :
-  $as_echo "#define HAVE_LAUNCHD 1" >>confdefs.h
-
-fi
-
-       if test $uversion -ge 140; then
-               ac_fn_c_check_func "$LINENO" "launch_activate_socket" "ac_cv_func_launch_activate_socket"
+       ac_fn_c_check_func "$LINENO" "launch_activate_socket" "ac_cv_func_launch_activate_socket"
 if test "x$ac_cv_func_launch_activate_socket" = xyes; then :
 
-                       $as_echo "#define HAVE_LAUNCHD 1" >>confdefs.h
+               $as_echo "#define HAVE_LAUNCHD 1" >>confdefs.h
 
-                       $as_echo "#define HAVE_LAUNCH_ACTIVATE_SOCKET 1" >>confdefs.h
+               $as_echo "#define HAVE_ONDEMAND 1" >>confdefs.h
 
 fi
 
-       fi
        ac_fn_c_check_header_mongrel "$LINENO" "launch.h" "ac_cv_header_launch_h" "$ac_includes_default"
 if test "x$ac_cv_header_launch_h" = xyes; then :
   $as_echo "#define HAVE_LAUNCH_H 1" >>confdefs.h
@@ -9147,7 +9124,7 @@ fi
 
        case "$uname" in
                Darwin*)
-                       # Darwin, MacOS X
+                       # Darwin, macOS
                        LAUNCHD_DIR="/System/Library/LaunchDaemons"
                        # liblaunch is already part of libSystem
                        ;;
@@ -9206,6 +9183,8 @@ $as_echo "no" >&6; }
                if test $have_systemd = yes; then
                         $as_echo "#define HAVE_SYSTEMD 1" >>confdefs.h
 
+                        $as_echo "#define HAVE_ONDEMAND 1" >>confdefs.h
+
                        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
@@ -9220,6 +9199,21 @@ fi
         fi
 fi
 
+# Check whether --enable-upstart was given.
+if test "${enable_upstart+set}" = set; then :
+  enableval=$enable_upstart;
+fi
+
+if test "x$enable_upstart" = "xyes"; then
+       if test "x$have_systemd" = "xyes"; then
+               as_fn_error $? "Cannot support both systemd and upstart." "$LINENO" 5
+       fi
+       $as_echo "#define HAVE_UPSTART 1" >>confdefs.h
+
+       $as_echo "#define HAVE_ONDEMAND 1" >>confdefs.h
+
+fi
+
 SMFMANIFESTDIR=""
 
 
@@ -9357,8 +9351,6 @@ elif test "x$xinetd" != xno; then
 fi
 
 
-
-
 LANGUAGES="`ls -1 locale/cups_*.po 2>/dev/null | sed -e '1,$s/locale\/cups_//' -e '1,$s/\.po//' | tr '\n' ' '`"
 
 
@@ -9922,7 +9914,6 @@ _ACEOF
 
 
 
-
 # Check whether --with-java was given.
 if test "${with_java+set}" = set; then :
   withval=$with_java; CUPS_JAVA="$withval"
@@ -10221,7 +10212,6 @@ if test "x$CUPS_PYTHON" != x; then
 fi
 
 
-
 INSTALL_LANGUAGES=""
 UNINSTALL_LANGUAGES=""
 LANGFILES=""
@@ -10765,7 +10755,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by CUPS $as_me 2.1.4, which was
+This file was extended by CUPS $as_me 2.2.0, which was
 generated by GNU Autoconf 2.68.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -10821,14 +10811,14 @@ $config_files
 Configuration headers:
 $config_headers
 
-Report bugs to <https://www.cups.org/str.php>.
+Report bugs to <https://github.com/apple/cups/issues>.
 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="\\
-CUPS config.status 2.1.4
+CUPS config.status 2.2.0
 configured by $0, generated by GNU Autoconf 2.68,
   with options \\"\$ac_cs_config\\"
 
@@ -11562,4 +11552,3 @@ fi
 
 
 chmod +x cups-config
-
index d58ab38..a96b623 100644 (file)
@@ -1,6 +1,4 @@
 dnl
-dnl "$Id: configure.ac 13087 2016-02-12 18:53:24Z msweet $"
-dnl
 dnl Configuration script for CUPS.
 dnl
 dnl Copyright 2007-2016 by Apple Inc.
@@ -17,7 +15,7 @@ dnl We need at least autoconf 2.60...
 AC_PREREQ(2.60)
 
 dnl Package name and version...
-AC_INIT([CUPS], [2.1.4], [https://www.cups.org/str.php], [cups], [https://www.cups.org/])
+AC_INIT([CUPS], [2.2.0], [https://github.com/apple/cups/issues], [cups], [https://www.cups.org/])
 
 sinclude(config-scripts/cups-opsys.m4)
 sinclude(config-scripts/cups-common.m4)
@@ -93,7 +91,3 @@ AC_OUTPUT(Makedefs
          $LANGFILES)
 
 chmod +x cups-config
-
-dnl
-dnl End of "$Id: configure.ac 13087 2016-02-12 18:53:24Z msweet $".
-dnl
index 07726c5..f0951d0 100755 (executable)
@@ -1,21 +1,19 @@
-#! /bin/sh
+#!/bin/sh
 #
-# "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $"
+# CUPS configuration utility.
 #
-#   CUPS configuration utility.
+# Copyright 2007-2016 by Apple Inc.
+# Copyright 2001-2006 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2011 by Apple Inc.
-#   Copyright 2001-2006 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 VERSION="@CUPS_VERSION@"
-APIVERSION="1.6"
+APIVERSION="2.2"
 BUILD="@CUPS_BUILD@"
 
 prefix=@prefix@
@@ -140,7 +138,3 @@ while test $# -gt 0; do
 
     shift
 done
-
-#
-# End of "$Id: cups-config.in 10996 2013-05-29 11:51:34Z msweet $".
-#
index 64a0d19..11ec748 100644 (file)
@@ -2,99 +2,67 @@ adminutil.o: adminutil.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h adminutil.h
+  ../cups/cups.h file.h pwg.h thread-private.h ppd.h raster.h \
+  adminutil.h
 array.o: array.c ../cups/cups.h file.h versioning.h ipp.h http.h array.h \
   language.h pwg.h string-private.h ../config.h debug-private.h \
   array-private.h
-attr.o: attr.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
 auth.o: auth.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 backchannel.o: backchannel.c cups.h file.h versioning.h ipp.h http.h \
   array.h language.h pwg.h
 backend.o: backend.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h backend.h
-conflicts.o: conflicts.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
-custom.o: custom.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h backend.h ppd.h raster.h
 debug.o: debug.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 dest.o: dest.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 dest-job.o: dest-job.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 dest-localization.o: dest-localization.c cups-private.h string-private.h \
   ../config.h debug-private.h ../cups/versioning.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 dest-options.o: dest-options.c cups-private.h string-private.h \
   ../config.h debug-private.h ../cups/versioning.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 dir.o: dir.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h dir.h
-emit.o: emit.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
 encode.o: encode.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 file.o: file.c file-private.h cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 getdevices.o: getdevices.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h adminutil.h
 getifaddrs.o: getifaddrs.c http-private.h ../config.h ../cups/language.h \
   array.h versioning.h ../cups/http.h md5-private.h ipp-private.h \
   ../cups/ipp.h
@@ -102,73 +70,59 @@ getputfile.o: getputfile.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 globals.o: globals.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
+hash.o: hash.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h
 http.o: http.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 http-addr.o: http-addr.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 http-addrlist.o: http-addrlist.c cups-private.h string-private.h \
   ../config.h debug-private.h ../cups/versioning.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 http-support.o: http-support.c cups-private.h string-private.h \
   ../config.h debug-private.h ../cups/versioning.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 ipp.o: ipp.c cups-private.h string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
   ../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
   language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
-  file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h
+  file.h pwg.h thread-private.h
 ipp-support.o: ipp-support.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 langprintf.o: langprintf.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 language.o: language.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
-localize.o: localize.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
-mark.o: mark.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 md5.o: md5.c md5-private.h string-private.h ../config.h
 md5passwd.o: md5passwd.c http-private.h ../config.h ../cups/language.h \
   array.h versioning.h ../cups/http.h md5-private.h ipp-private.h \
@@ -177,102 +131,143 @@ notify.o: notify.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 options.o: options.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
-page.o: page.c string-private.h ../config.h debug-private.h \
-  ../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
-  language.h pwg.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 ppd.o: ppd.c cups-private.h string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
   ../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
   language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
-  file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h
+  file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h raster.h
+ppd-attr.o: ppd-attr.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h raster.h
 ppd-cache.o: ppd-cache.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h raster.h
+ppd-conflicts.o: ppd-conflicts.c cups-private.h string-private.h \
+  ../config.h debug-private.h ../cups/versioning.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  thread-private.h ppd-private.h ../cups/ppd.h raster.h
+ppd-custom.o: ppd-custom.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h raster.h
+ppd-emit.o: ppd-emit.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd.h raster.h
+ppd-localize.o: ppd-localize.c cups-private.h string-private.h \
+  ../config.h debug-private.h ../cups/versioning.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  thread-private.h ppd-private.h ../cups/ppd.h raster.h
+ppd-mark.o: ppd-mark.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h raster.h
+ppd-page.o: ppd-page.c string-private.h ../config.h debug-private.h \
+  ../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
+  language.h pwg.h raster.h
+ppd-util.o: ppd-util.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h raster.h
 pwg-media.o: pwg-media.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 request.o: request.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 sidechannel.o: sidechannel.c sidechannel.h versioning.h cups-private.h \
   string-private.h ../config.h debug-private.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 snmp.o: snmp.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h snmp-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h snmp-private.h
 snprintf.o: snprintf.c string-private.h ../config.h
 string.o: string.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 tempfile.o: tempfile.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 thread.o: thread.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 tls.o: tls.c cups-private.h string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
   ../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
   language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
-  file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h tls-darwin.c
+  file.h pwg.h thread-private.h tls-darwin.c
 transcode.o: transcode.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 usersys.o: usersys.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 util.o: util.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 testadmin.o: testadmin.c adminutil.h cups.h file.h versioning.h ipp.h \
   http.h array.h language.h pwg.h string-private.h ../config.h
 testarray.o: testarray.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h dir.h
+testcache.o: testcache.c ppd-private.h ../cups/cups.h file.h versioning.h \
+  ipp.h http.h array.h language.h pwg.h ../cups/ppd.h raster.h \
+  pwg-private.h file-private.h cups-private.h string-private.h \
+  ../config.h debug-private.h array-private.h ipp-private.h \
+  http-private.h md5-private.h language-private.h ../cups/transcode.h \
+  thread-private.h
 testconflicts.o: testconflicts.c cups.h file.h versioning.h ipp.h http.h \
-  array.h language.h pwg.h ppd.h string-private.h ../config.h
+  array.h language.h pwg.h ppd.h raster.h string-private.h ../config.h
+testcreds.o: testcreds.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h
 testcups.o: testcups.c string-private.h ../config.h cups.h file.h \
-  versioning.h ipp.h http.h array.h language.h pwg.h ppd.h
+  versioning.h ipp.h http.h array.h language.h pwg.h ppd.h raster.h
 testdest.o: testdest.c cups.h file.h versioning.h ipp.h http.h array.h \
   language.h pwg.h
 testfile.o: testfile.c string-private.h ../config.h debug-private.h \
@@ -281,8 +276,7 @@ testhttp.o: testhttp.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 testi18n.o: testi18n.c string-private.h ../config.h language-private.h \
   ../cups/transcode.h language.h array.h versioning.h
 testipp.o: testipp.c file.h versioning.h string-private.h ../config.h \
@@ -291,28 +285,32 @@ testoptions.o: testoptions.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 testlang.o: testlang.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h raster.h
 testppd.o: testppd.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h raster.h
 testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h \
-  ipp.h http.h array.h language.h pwg.h ../cups/ppd.h pwg-private.h \
-  file-private.h cups-private.h string-private.h ../config.h \
-  debug-private.h array-private.h ipp-private.h http-private.h \
-  md5-private.h language-private.h ../cups/transcode.h thread-private.h
+  ipp.h http.h array.h language.h pwg.h ../cups/ppd.h raster.h \
+  pwg-private.h file-private.h cups-private.h string-private.h \
+  ../config.h debug-private.h array-private.h ipp-private.h \
+  http-private.h md5-private.h language-private.h ../cups/transcode.h \
+  thread-private.h
 testsnmp.o: testsnmp.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h snmp-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h snmp-private.h
+tlscheck.o: tlscheck.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h
index 7b65214..ba9bbed 100644 (file)
@@ -1,9 +1,7 @@
 #
-# "$Id: Makefile 12850 2015-08-27 19:29:06Z msweet $"
-#
 # API library Makefile for CUPS.
 #
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1997-2006 by Easy Software Products, all rights reserved.
 #
 # These coded instructions, statements, and computer programs are the
@@ -32,25 +30,22 @@ OPTIONS     =       -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
 LIBOBJS        =       \
                adminutil.o \
                array.o \
-               attr.o \
                auth.o \
                backchannel.o \
                backend.o \
-               conflicts.o \
-               custom.o \
                debug.o \
                dest.o \
                dest-job.o \
                dest-localization.o \
                dest-options.o \
                dir.o \
-               emit.o \
                encode.o \
                file.o \
                getdevices.o \
                getifaddrs.o \
                getputfile.o \
                globals.o \
+               hash.o \
                http.o \
                http-addr.o \
                http-addrlist.o \
@@ -59,15 +54,20 @@ LIBOBJS     =       \
                ipp-support.o \
                langprintf.o \
                language.o \
-               localize.o \
-               mark.o \
                md5.o \
                md5passwd.o \
                notify.o \
                options.o \
-               page.o \
                ppd.o \
+               ppd-attr.o \
                ppd-cache.o \
+               ppd-conflicts.o \
+               ppd-custom.o \
+               ppd-emit.o \
+               ppd-localize.o \
+               ppd-mark.o \
+               ppd-page.o \
+               ppd-util.o \
                pwg-media.o \
                request.o \
                sidechannel.o \
@@ -85,6 +85,7 @@ TESTOBJS      = \
                testarray.o \
                testcache.o \
                testconflicts.o \
+               testcreds.o \
                testcups.o \
                testdest.o \
                testfile.o \
@@ -153,6 +154,7 @@ UNITTARGETS =       \
                testarray \
                testcache \
                testconflicts \
+               testcreds \
                testcups \
                testdest \
                testfile \
@@ -320,13 +322,14 @@ libcups.so.2:     $(LIBOBJS)
 
 libcups.2.dylib:       $(LIBOBJS) $(LIBCUPSORDER)
        echo Creating export list for $@...
-       nm $(LIBOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}' | \
-               grep -v -e '^(_cupsConnect|_cupsCharset|_cupsEncodingName|_cupsSetDefaults|_cupsSetHTTPError|_cupsUserDefault|_httpWait)$$' | \
+       nm -gm $(LIBOBJS) 2>/dev/null | grep "__text" | grep -v weak | \
+               awk '{print $$NF}' | \
+               grep -v -E -e '^(_cupsConnect|_cupsCharset|_cupsEncodingName|_cupsSetDefaults|_cupsSetHTTPError|_cupsUserDefault)$$' | \
                sort >t.exp
        echo Linking $@...
        $(DSO) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
                -install_name $(libdir)/$@ \
-               -current_version 2.11.0 \
+               -current_version 2.12.0 \
                -compatibility_version 2.0.0 \
                -exported_symbols_list t.exp \
                $(LIBOBJS) $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) \
@@ -342,7 +345,7 @@ libcups.2.dylib:    $(LIBOBJS) $(LIBCUPSORDER)
 libcups.la:    $(LIBOBJS)
        echo Linking $@...
        $(CC) $(ARCHFLAGS) $(DSOFLAGS) -o $@ $(LIBOBJS:.o=.lo) \
-               -rpath $(LIBDIR) -version-info 2:11 $(LIBGSSAPI) $(SSLLIBS) \
+               -rpath $(LIBDIR) -version-info 2:12 $(LIBGSSAPI) $(SSLLIBS) \
                $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
 
 
@@ -364,7 +367,7 @@ libcups.a:  $(LIBOBJS)
 libcups2.def: $(LIBOBJS) Makefile
        echo Generating $@...
        echo "LIBRARY libcups2" >libcups2.def
-       echo "VERSION 2.11" >>libcups2.def
+       echo "VERSION 2.12" >>libcups2.def
        echo "EXPORTS" >>libcups2.def
        (nm $(LIBOBJS) 2>/dev/null | grep "T _" | awk '{print $$3}'; \
         echo __cups_strcpy; echo __cups_strlcat; echo __cups_strlcpy) | \
@@ -417,6 +420,16 @@ testconflicts:     testconflicts.o $(LIBCUPSSTATIC)
 
 
 #
+# testcreds (dependency on static CUPS library is intentional)
+#
+
+testcreds:     testcreds.o $(LIBCUPSSTATIC)
+       echo Linking $@...
+       $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ testcreds.o $(LIBCUPSSTATIC) \
+               $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
+
+
+#
 # testcups (dependency on static CUPS library is intentional)
 #
 
@@ -563,6 +576,13 @@ apihelp:
                --css ../doc/cups-printable.css \
                --header api-overview.header --intro api-overview.shtml \
                >../doc/help/api-overview.html
+       mxmldoc --section "Programming" --title "Administration APIs" \
+               --css ../doc/cups-printable.css \
+               --header api-admin.header --intro api-admin.shtml \
+               api-admin.xml \
+               adminutil.c adminutil.h getdevices.c >../doc/help/api-admin.html
+       mxmldoc --tokens help/api-admin.html api-admin.xml >../doc/help/api-admin.tokens
+       $(RM) api-admin.xml
        mxmldoc --section "Programming" --title "Array API" \
                --css ../doc/cups-printable.css \
                --header api-array.header --intro api-array.shtml \
@@ -589,9 +609,7 @@ apihelp:
        mxmldoc --section "Programming" --title "PPD API (DEPRECATED)" \
                --css ../doc/cups-printable.css \
                --header api-ppd.header --intro api-ppd.shtml \
-               api-ppd.xml \
-               ppd.h attr.c conflicts.c custom.c emit.c localize.c mark.c page.c \
-               ppd.c >../doc/help/api-ppd.html
+               api-ppd.xml ppd.h ppd-*.c >../doc/help/api-ppd.html
        mxmldoc --tokens help/api-ppd.html api-ppd.xml >../doc/help/api-ppd.tokens
        $(RM) api-ppd.xml
        mxmldoc --section "Programming" --title "HTTP and IPP APIs" \
@@ -613,50 +631,6 @@ apihelp:
        mxmldoc --tokens help/api-filter.html api-filter.xml >../doc/help/api-filter.tokens
        $(RM) api-filter.xml
 
-framedhelp:
-       echo Generating CUPS API help files...
-       mxmldoc --framed api-overview \
-               --section "Programming" \
-               --title "Introduction to CUPS Programming" \
-               --css ../doc/cups-printable.css \
-               --header api-overview.header --intro api-overview.shtml
-       mxmldoc --framed api-array \
-               --section "Programming" --title "Array API" \
-               --css ../doc/cups-printable.css \
-               --header api-array.header --intro api-array.shtml \
-               array.h array.c
-       mxmldoc --framed api-cups \
-               --section "Programming" --title "CUPS API" \
-               --css ../doc/cups-printable.css \
-               --header api-cups.header --intro api-cups.shtml \
-               cups.h adminutil.c dest*.c language.c notify.c \
-               options.c tempfile.c usersys.c \
-               util.c
-       mxmldoc --framed api-filedir \
-               --section "Programming" --title "File and Directory APIs" \
-               --css ../doc/cups-printable.css \
-               --header api-filedir.header --intro api-filedir.shtml \
-               file.h file.c dir.h dir.c
-       mxmldoc --framed api-ppd \
-               --section "Programming" --title "PPD API (DEPRECATED)" \
-               --css ../doc/cups-printable.css \
-               --header api-ppd.header --intro api-ppd.shtml \
-               ppd.h attr.c conflicts.c custom.c emit.c localize.c mark.c \
-               page.c ppd.c
-       mxmldoc --framed api-httpipp \
-               --section "Programming" --title "HTTP and IPP APIs" \
-               --css ../doc/cups-printable.css \
-               --header api-httpipp.header --intro api-httpipp.shtml \
-               http.h ipp.h auth.c getdevices.c getputfile.c encode.c \
-               http.c http-addr.c http-support.c ipp.c ipp-support.c \
-               md5passwd.c request.c
-       mxmldoc --framed api-filter \
-               --section "Programming" \
-               --title "Filter and Backend Programming" \
-               --css ../doc/cups-printable.css \
-               --header api-filter.header --intro api-filter.shtml \
-               backchannel.c backend.h backend.c sidechannel.c sidechannel.h
-
 
 #
 # Lines of code computation...
@@ -675,8 +649,3 @@ sloc:
 
 include Dependencies
 tls.o: tls-darwin.c tls-gnutls.c tls-sspi.c
-
-
-#
-# End of "$Id: Makefile 12850 2015-08-27 19:29:06Z msweet $".
-#
index 6f38f4f..1a6d6a7 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: adminutil.c 12945 2015-10-26 19:46:02Z msweet $"
- *
  * Administration utility API definitions for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 2001-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -20,6 +18,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd.h"
 #include "adminutil.h"
 #include <fcntl.h>
 #include <sys/stat.h>
@@ -832,7 +831,7 @@ cupsAdminExportSamba(
  * The returned settings should be freed with cupsFreeOptions() when
  * you are done with them.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -1148,7 +1147,7 @@ cupsAdminGetServerSettings(
 /*
  * 'cupsAdminSetServerSettings()' - Set settings on the server.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -1195,6 +1194,7 @@ cupsAdminSetServerSettings(
   int          cupsd_num_settings;     /* New number of settings */
   int          old_share_printers,     /* Share local printers */
                old_remote_admin,       /* Remote administration allowed? */
+               old_remote_any,         /* Remote access from anywhere? */
                old_user_cancel_any,    /* Cancel-job policy set? */
                old_debug_logging;      /* LogLevel debug set? */
   cups_option_t        *cupsd_settings,        /* New settings */
@@ -1260,12 +1260,12 @@ cupsAdminSetServerSettings(
 
   if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ANY, cupsd_num_settings,
                            cupsd_settings)) != NULL)
-    remote_any = atoi(val);
+    old_remote_any = atoi(val);
   else
-    remote_any = 0;
+    old_remote_any = 0;
 
   DEBUG_printf(("1cupsAdminSetServerSettings: old remote_any=%d",
-                remote_any));
+                old_remote_any));
 
   if ((val = cupsGetOption(CUPS_SERVER_SHARE_PRINTERS, cupsd_num_settings,
                            cupsd_settings)) != NULL)
@@ -1311,12 +1311,23 @@ cupsAdminSetServerSettings(
   DEBUG_printf(("1cupsAdminSetServerSettings: debug_logging=%d",
                 debug_logging));
 
-  if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ANY, num_settings,
-                           settings)) != NULL)
+  if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ANY, num_settings, settings)) != NULL)
+  {
     remote_any = atoi(val);
 
-  DEBUG_printf(("1cupsAdminSetServerSettings: remote_any=%d",
-                remote_any));
+    if (remote_any == old_remote_any)
+    {
+     /*
+      * No change to this setting...
+      */
+
+      remote_any = -1;
+    }
+  }
+  else
+    remote_any = -1;
+
+  DEBUG_printf(("1cupsAdminSetServerSettings: remote_any=%d", remote_any));
 
   if ((val = cupsGetOption(CUPS_SERVER_REMOTE_ADMIN, num_settings,
                            settings)) != NULL)
@@ -1431,7 +1442,7 @@ cupsAdminSetServerSettings(
   while (cupsFileGetConf(cupsd, line, sizeof(line), &value, &linenum))
   {
     if ((!_cups_strcasecmp(line, "Port") || !_cups_strcasecmp(line, "Listen")) &&
-        (remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
+        (remote_admin >= 0 || remote_any >= 0 || share_printers >= 0))
     {
       if (!wrote_port_listen)
       {
@@ -1617,7 +1628,7 @@ cupsAdminSetServerSettings(
                         remote_any > 0 ? "all" : "@LOCAL");
       }
       else if (in_root_location &&
-               (remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
+               (remote_admin >= 0 || remote_any >= 0 || share_printers >= 0))
       {
        wrote_root_location = 1;
 
@@ -1720,7 +1731,7 @@ cupsAdminSetServerSettings(
       in_cancel_job = 0;
     }
     else if ((((in_admin_location || in_conf_location || in_root_location) &&
-               (remote_admin >= 0 || remote_any > 0)) ||
+               (remote_admin >= 0 || remote_any >= 0)) ||
               (in_root_location && share_printers >= 0)) &&
              (!_cups_strcasecmp(line, "Allow") || !_cups_strcasecmp(line, "Deny") ||
              !_cups_strcasecmp(line, "Order")))
@@ -1812,7 +1823,7 @@ cupsAdminSetServerSettings(
   }
 
   if (!wrote_port_listen &&
-      (remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
+      (remote_admin >= 0 || remote_any >= 0 || share_printers >= 0))
   {
     if (remote_admin > 0 || remote_any > 0 || share_printers > 0)
     {
@@ -1833,7 +1844,7 @@ cupsAdminSetServerSettings(
   }
 
   if (!wrote_root_location &&
-      (remote_admin >= 0 || remote_any > 0 || share_printers >= 0))
+      (remote_admin >= 0 || remote_any >= 0 || share_printers >= 0))
   {
     if (remote_admin > 0 && share_printers > 0)
       cupsFilePuts(temp,
@@ -2010,9 +2021,14 @@ cupsAdminSetServerSettings(
                                         old_remote_admin ? "1" : "0",
                                         cupsd_num_settings, &cupsd_settings);
 
-    cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ANY,
-                                       remote_any ? "1" : "0",
-                                      cupsd_num_settings, &cupsd_settings);
+    if (remote_any >= 0)
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ANY,
+                                        remote_any ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
+    else
+      cupsd_num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ANY,
+                                        old_remote_any ? "1" : "0",
+                                        cupsd_num_settings, &cupsd_settings);
 
     if (share_printers >= 0)
       cupsd_num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS,
@@ -2366,8 +2382,3 @@ write_option(cups_file_t     *dstfp,      /* I - PPD file */
 
   cupsFilePrintf(dstfp, "*JCLCloseUI: *%s\n\n", name);
 }
-
-
-/*
- * End of "$Id: adminutil.c 12945 2015-10-26 19:46:02Z msweet $".
- */
index f03d2fa..cc119fc 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Administration utility API definitions for CUPS.
  *
- *   Administration utility API definitions for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 2001-2007 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2001-2007 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_ADMINUTIL_H_
@@ -42,12 +40,24 @@ extern "C" {
 #  define CUPS_SERVER_DEBUG_LOGGING    "_debug_logging"
 #  define CUPS_SERVER_REMOTE_ADMIN     "_remote_admin"
 #  define CUPS_SERVER_REMOTE_ANY       "_remote_any"
-/*#  define CUPS_SERVER_REMOTE_PRINTERS        "_remote_printers"*/
 #  define CUPS_SERVER_SHARE_PRINTERS   "_share_printers"
 #  define CUPS_SERVER_USER_CANCEL_ANY  "_user_cancel_any"
 
 
 /*
+ * Types and structures...
+ */
+
+typedef void (*cups_device_cb_t)(const char *device_class,
+                                 const char *device_id, const char *device_info,
+                                 const char *device_make_and_model,
+                                 const char *device_uri,
+                                const char *device_location, void *user_data);
+                                       /* Device callback
+                                        * @since CUPS 1.4/macOS 10.6@ */
+
+
+/*
  * Functions...
  */
 
@@ -69,13 +79,15 @@ extern int  cupsAdminSetServerSettings(http_t *http,
                                           cups_option_t *settings)
                                           _CUPS_API_1_3;
 
+extern ipp_status_t    cupsGetDevices(http_t *http, int timeout,
+                                      const char *include_schemes,
+                                      const char *exclude_schemes,
+                                      cups_device_cb_t callback,
+                                      void *user_data) _CUPS_API_1_4;
+
 
 #  ifdef __cplusplus
 }
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_ADMINUTIL_H_ */
-
-/*
- * End of "$Id: adminutil.h 10996 2013-05-29 11:51:34Z msweet $".
- */
similarity index 64%
rename from scheduler/api-mime.header
rename to cups/api-admin.header
index 8d5db2a..a3ce3b1 100644 (file)
@@ -1,9 +1,7 @@
 <!--
-  "$Id: api-array.header 8087 2008-10-27 21:37:05Z mike $"
+  Administrative API header for CUPS.
 
-  MIME API header for CUPS.
-
-  Copyright 2009 by Apple Inc.
+  Copyright 2016 by Apple Inc.
 
   These coded instructions, statements, and computer programs are the
   property of Apple Inc. and are protected by Federal copyright
   file is missing or damaged, see the license at "http://www.cups.org/".
 -->
 
-<h1 class='title'>MIME API</h1>
+<h1 class='title'>Administrative APIs</h1>
 
 <div class='summary'><table summary='General Information'>
 <thead>
 <tr>
        <th>Header</th>
-       <th>cups/mime.h</th>
+       <th>cups/adminutil.h</th>
 </tr>
 </thead>
 <tbody>
 <tr>
        <th>Library</th>
-       <td>-lcupsmime</td>
+       <td>-lcups</td>
 </tr>
 <tr>
        <th>See Also</th>
-       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
+       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a><br>
+       Programming: <a href='api-cups.html' target='_top'>CUPS API</a><br>
+       Programming: <a href='api-httpipp.html' target='_top'>HTTP and IPP APIs</a></td>
 </tr>
 </tbody>
 </table></div>
diff --git a/cups/api-admin.shtml b/cups/api-admin.shtml
new file mode 100644 (file)
index 0000000..8928e47
--- /dev/null
@@ -0,0 +1,96 @@
+<!--
+  Administrative API documentation for CUPS.
+
+  Copyright 2016 by Apple Inc.
+
+  These coded instructions, statements, and computer programs are the
+  property of Apple Inc. and are protected by Federal copyright
+  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+  which should have been included with this file.  If this file is
+  file is missing or damaged, see the license at "http://www.cups.org/".
+-->
+
+<h2 class="title"><a name="OVERVIEW">Overview</a></h2>
+
+<p>The administrative APIs provide convenience functions to perform certain administrative functions with the CUPS scheduler.</p>
+
+<blockquote><b>Note:<b>
+  <p>Administrative functions normally require administrative privileges to execute and must not be used in ordinary user applications!</p>
+</blockquote>
+
+<h3><a name="SETTINGS">Scheduler Settings</a></h3>
+
+<p>The <a href="#cupsAdminGetServerSettings"><code>cupsAdminGetServerSettings</code></a> and <a href="#cupsAdminSetServerSettings"><code>cupsAdminSetServerSettings</code></a> functions allow you to get and set simple directives and their values, respectively, in the <var>cupsd.conf</var> file for the CUPS scheduler. Settings are stored in CUPS option arrays which provide a simple list of string name/value pairs. While any simple <var>cupsd.conf</var> directive name can be specified, the following convenience names are also defined to control common complex directives:</p>
+
+<ul>
+  <li><code>CUPS_SERVER_DEBUG_LOGGING</code></li>: For <code>cupsAdminGetServerSettings</code>, a value of "1" means that the <code>LogLevel</code> directive is set to <code>debug</code> or <code>debug2</code> while a value of "0" means it is set to any other value. For <code>cupsAdminSetServerSettings</code> a value of "1" sets the <code>LogLeveL</code> to <code>debug</code> while a value of "0" sets it to <code>warn</code>.</li>
+  <li><code>CUPS_SERVER_REMOTE_ADMIN</code></li>: A value of "1" specifies that administrative requests are accepted from remote addresses while "0" specifies that requests are only accepted from local addresses (loopback interface and domain sockets).</li>
+  <li><code>CUPS_SERVER_REMOTE_ANY</code></li>: A value of "1" specifies that requests are accepts from any address while "0" specifies that requests are only accepted from the local subnet (when sharing is enabled) or local addresses (loopback interface and domain sockets).</li>
+  <li><code>CUPS_SERVER_SHARE_PRINTERS</code></li>: A value of "1" specifies that printer sharing is enabled for selected printers and remote requests are accepted while a value of "0" specifies that printer sharing is disables and remote requests are not accepted.</li>
+  <li><code>CUPS_SERVER_USER_CANCEL_ANY</code></li>: A value of "1" specifies that the default security policy allows any user to cancel any print job, regardless of the owner. A value of "0" specifies that only administrative users can cancel other user's jobs.</li>
+</ul>
+
+<blockquote><b>Note:</b>
+  <p>Changing settings will restart the CUPS scheduler.</p>
+  <p>When printer sharing or the web interface are enabled, the scheduler's launch-on-demand functionality is effectively disabled. This can affect power usage, system performance, and the security profile of a system.</p>
+</blockquote>
+
+<p>The recommended way to make changes to the <var>cupsd.conf</var> is to first call <a href="#cupsAdminGetServerSettings"><code>cupsAdminGetServerSettings</code></a>, make any changes to the returned option array, and then call <a href="#cupsAdminSetServerSettings"><code>cupsAdminSetServerSettings</code></a> to save those settings. For example, to enable the web interface:</p>
+
+<pre class="example">
+#include &lt;cups/cups.h&gt;
+#include &lt;cups/adminutil.h&gt;
+
+void
+enable_web_interface(void)
+{
+  int num_settings = 0;           /* Number of settings */
+  cups_option_t *settings = NULL; /* Settings */
+
+
+  if (!<a href="#cupsAdminGetServerSettings">cupsAdminGetServerSettings</a>(CUPS_HTTP_DEFAULT, &amp;num_settings, &amp;settings))
+  {
+    fprintf(stderr, "ERROR: Unable to get server settings: %s\n", cupsLastErrorString());
+    return;
+  }
+
+  num_settings = <a href="api-cups.html#cupsAddOption">cupsAddOption</a>("WebInterface", "Yes", num_settings, &amp;settings);
+
+  if (!<a href="#cupsAdminSetServerSettings">cupsAdminSetServerSettings</a>(CUPS_HTTP_DEFAULT, num_settings, settings))
+  {
+    fprintf(stderr, "ERROR: Unable to set server settings: %s\n", cupsLastErrorString());
+  }
+
+  <a href="api-cups.html#cupsFreeOptions">cupsFreeOptions</a>(num_settings, settings);
+}
+</pre>
+
+<h3><a name="DEVICES">Devices</a></h3>
+
+<p>Printers can be discovered through the CUPS scheduler using the <a href="#cupsGetDevices"><code>cupsGetDevices</code></a> API. Typically this API is used to locate printers to add the the system. Each device that is found will cause a supplied callback function to be executed. For example, to list the available printer devices that can be found within 30 seconds:</p>
+
+<pre class="example">
+#include &lt;cups/cups.h&gt;
+#include &lt;cups/adminutil.h&gt;
+
+
+void
+get_devices_cb(
+    const char *device_class,           /* I - Class */
+    const char *device_id,              /* I - 1284 device ID */
+    const char *device_info,            /* I - Description */
+    const char *device_make_and_model,  /* I - Make and model */
+    const char *device_uri,             /* I - Device URI */
+    const char *device_location,        /* I - Location */
+    void       *user_data)              /* I - User data */
+{
+  puts(device_uri);
+}
+
+
+void
+show_devices(void)
+{
+  <a href="#cupsGetDevices">cupsGetDevices</a>(CUPS_HTTP_DEFAULT, 30, NULL, NULL, get_devices_cb, NULL);
+}
+</pre>
index 4d5acf0..557833e 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-array.header 7266 2008-01-29 02:15:29Z mike $"
-
   Array API header for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
index 7246a7b..374ef5b 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
-
   Array API introduction for CUPS.
 
   Copyright 2007-2011 by Apple Inc.
index ac781af..23b3794 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
-
   CUPS API header for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
index caa96b9..918efe7 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-cups.shtml 7337 2008-02-22 04:44:04Z mike $"
-
   API introduction for CUPS.
 
   Copyright 2007-2013 by Apple Inc.
index f9f5298..87744ee 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-filedir.header 7279 2008-01-31 01:50:44Z mike $"
-
   File and Directory API header for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
index 96bf0fa..8fdbee6 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-filedir.shtml 7279 2008-01-31 01:50:44Z mike $"
-
   File and directory API introduction for CUPS.
 
   Copyright 2007-2011 by Apple Inc.
index 3031452..f08bc71 100644 (file)
@@ -1,9 +1,7 @@
 <!--
-  "$Id: api-filter.header 7616 2008-05-28 00:34:13Z mike $"
-
   Filter and backend programming header for CUPS.
 
-  Copyright 2008-2014 by Apple Inc.
+  Copyright 2008-2016 by Apple Inc.
 
   These coded instructions, statements, and computer programs are the
   property of Apple Inc. and are protected by Federal copyright
@@ -19,6 +17,7 @@
 <tr>
        <th>Headers</th>
        <th>cups/backend.h<br>
+       cups/ppd.h<br>
        cups/sidechannel.h</th>
 </tr>
 </thead>
index 7c33179..1b8f6f3 100644 (file)
@@ -1,9 +1,7 @@
 <!--
-  "$Id: api-filter.shtml 7677 2008-06-19 23:22:19Z mike $"
-
   Filter and backend programming introduction for CUPS.
 
-  Copyright 2007-2014 by Apple Inc.
+  Copyright 2007-2016 by Apple Inc.
   Copyright 1997-2006 by Easy Software Products, all rights reserved.
 
   These coded instructions, statements, and computer programs are the
@@ -81,7 +79,7 @@ directory to write to.</p>
 
 <p>In addition, some operating systems provide additional security mechanisms
 that further limit file system access, even for backends running as root. On
-OS X, for example, no backend may write to a user's home directory. See the <a href="#SANDBOXING">Sandboxing on OS X</a> section for more information.</p>
+macOS, for example, no backend may write to a user's home directory. See the <a href="#SANDBOXING">Sandboxing on macOS</a> section for more information.</p>
 </blockquote>
 
 <h3><a name="SIGNALS">Canceled Jobs and Signal Handling</a></h3>
@@ -153,7 +151,7 @@ when running print filters and backends:</p>
 
        <dt>APPLE_LANGUAGE</dt>
        <dd>The Apple language identifier associated with the job
-       (OS X only).</dd>
+       (macOS only).</dd>
 
        <dt>CHARSET</dt>
        <dd>The job character set, typically "utf-8".</dd>
@@ -287,7 +285,7 @@ prefix strings:</p>
        <dd>Sets or clears printer-state-reason keywords for the current queue.
        Typically this is used to indicate persistent media, ink, toner, and
        configuration conditions or errors on a printer.
-       <a href='#TABLE2'>Table 2</a> lists the standard state keywords -
+       <a href='#TABLE2'>Table 2</a> lists some of the standard "printer-state-reasons" keywords from the <a href="http://www.iana.org/assignments/ipp-registrations/ipp-registrations.xhtml#ipp-registrations-4">IANA IPP Registry</a> -
        use vendor-prefixed ("com.example.foo") keywords for custom states. See
        <a href="#MANAGING_STATE">Managing Printer State in a Filter</a> for more
        information.
@@ -563,7 +561,7 @@ sub-state and not an issue that applies when a job is not printing.</p>
 <blockquote><b>Note:</b>
 
 <p>"STATE:" messages often provide visible alerts to the user. For example,
-on OS X setting a printer-state-reason value with an "-error" or
+on macOS setting a printer-state-reason value with an "-error" or
 "-warning" suffix will cause the printer's dock item to bounce if the
 corresponding reason is localized with a cupsIPPReason keyword in the
 printer's PPD file.</p>
@@ -853,9 +851,9 @@ void *my_data;
 <a href="#cupsSideChannelSNMPWalk">cupsSNMPSideChannelWalk</a>(".1.3.6.1.2.1.43", 5.0, my_callback, my_data);
 </pre>
 
-<h2><a name="SANDBOXING">Sandboxing on OS X</a></h2>
+<h2><a name="SANDBOXING">Sandboxing on macOS</a></h2>
 
-<p>Starting with OS X 10.6, filters and backends are run inside a security "sandbox" which further limits (beyond the normal UNIX user/group permissions) what a filter or backend can do. This helps to both secure the printing system from malicious software and enforce the functional separation of components in the CUPS filter chain. What follows is a list of actions that are explicitly allowed for all filters and backends:</p>
+<p>Starting with macOS 10.6, filters and backends are run inside a security "sandbox" which further limits (beyond the normal UNIX user/group permissions) what a filter or backend can do. This helps to both secure the printing system from malicious software and enforce the functional separation of components in the CUPS filter chain. What follows is a list of actions that are explicitly allowed for all filters and backends:</p>
 
 <ol>
 
index 5f245d7..cbede8f 100644 (file)
@@ -1,9 +1,7 @@
 <!--
-  "$Id: api-httpipp.header 7258 2008-01-28 00:15:05Z mike $"
-
   HTTP and IPP API header for CUPS.
 
-  Copyright 2007-2011 by Apple Inc.
+  Copyright 2007-2016 by Apple Inc.
   Copyright 1997-2006 by Easy Software Products, all rights reserved.
 
   These coded instructions, statements, and computer programs are the
 <div class='summary'><table summary='General Information'>
 <thead>
 <tr>
-       <th>Header</th>
-       <th>cups/cups.h</th>
+       <th>Headers</th>
+       <th>cups/cups.h<br>
+       cups/http.h<br>
+       cups/ipp.h</th>
 </tr>
 </thead>
 <tbody>
index cd0fd53..33bf5ad 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-httpipp.shtml 7684 2008-06-23 16:47:38Z mike $"
-
   HTTP and IPP API introduction for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
index ecb14b6..b96cd07 100644 (file)
@@ -1,9 +1,7 @@
 <!--
-  "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
-
   Introduction to CUPS programming header for CUPS.
 
-  Copyright 2008-2011 by Apple Inc.
+  Copyright 2008-2016 by Apple Inc.
 
   These coded instructions, statements, and computer programs are the
   property of Apple Inc. and are protected by Federal copyright
 <tr>
        <th>Headers</th>
        <th>cups/cups.h<br>
+       cups/adminutil.h<br>
        cups/array.h<br>
-       cups/backend.h<br>
        cups/dir.h<br>
        cups/file.h<br>
+       cups/http.h<br>
+       cups/ipp.h<br>
+       cups/language.h<br>
        cups/ppd.h<br>
-       cups/raster.h<br>
-       cups/sidechannel.h</th>
+       cups/pwg.h<br>
+       cups/raster.h</th>
 </tr>
 </thead>
 <tbody>
 <tr>
        <th>Libraries</th>
-       <td>-lcups<br>
-       -lcupsimage</td>
+       <td>-lcups</td>
 </tr>
 <tr>
        <th>See Also</th>
        Programming: <a href='postscript-driver.html' target='_top'>Developing PostScript Printer Drivers</a><br>
        Programming: <a href='api-filter.html' target='_top'>Filter and Backend Programming</a><br>
        Programming: <a href='ppd-compiler.html' target='_top'>Introduction to the PPD Compiler</a><br>
+       Programming: <a href='api-admin.html' target='_top'>Administrative APIs</a><br>
        Programming: <a href='api-array.html' target='_top'>Array API</a><br>
        Programming: <a href='api-cups.html' target='_top'>CUPS API</a><br>
        Programming: <a href='api-filedir.html' target='_top'>File and Directory APIs</a><br>
        Programming: <a href='api-httpipp.html' target='_top'>HTTP and IPP APIs</a><br>
-       Programming: <a href='api-ppd.html' target='_top'>PPD API</a><br>
+       Programming: <a href='api-ppd.html' target='_top'>PPD API (DEPRECATED)</a><br>
        Programming: <a href='api-raster.html' target='_top'>Raster API</a><br>
        References: <a href='ref-ppdcfile.html' target='_top'>PPD Compiler Driver Information File Reference</a><br>
        Specifications: <a href='spec-ppd.html' target='_top'>CUPS PPD Extensions</a></td>
index 3ece103..9903152 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
-
   Introduction to CUPS programming content for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
index ef0d051..2f7a4cd 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-ppd.header 7616 2008-05-28 00:34:13Z mike $"
-
   PPD API header for CUPS.
 
   Copyright 2008-2012 by Apple Inc.
@@ -14,7 +12,7 @@
 
 <h1 class='title'>PPD API (DEPRECATED)</h1>
 
-<blockquote>The PPD API is deprecated starting in CUPS 1.6/OS X 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
+<blockquote>The PPD API is deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
 
 <div class='summary'><table summary='General Information'>
 <thead>
index 6319f23..50c4850 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id: api-ppd.shtml 7616 2008-05-28 00:34:13Z mike $"
-
   PPD API introduction for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -15,7 +13,7 @@
 
 <h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
 
-<blockquote>The PPD API is deprecated starting in CUPS 1.6/OS X 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
+<blockquote>The PPD API is deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
 
 <p>The CUPS PPD API provides read-only access the data in PostScript Printer
 Description ("PPD") files which are used for all printers with a driver. With
index 74b0c9b..c563e25 100644 (file)
@@ -1,17 +1,15 @@
 /*
- * "$Id: array-private.h 3933 2012-10-01 03:01:10Z msweet $"
+ * Private array definitions for CUPS.
  *
- *   Private array definitions for CUPS.
+ * Copyright 2011-2012 by Apple Inc.
  *
- *   Copyright 2011-2012 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_ARRAY_PRIVATE_H_
@@ -46,7 +44,3 @@ extern cups_array_t   *_cupsArrayNewStrings(const char *s, char delim)
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_ARRAY_PRIVATE_H_ */
-
-/*
- * End of "$Id: array-private.h 3933 2012-10-01 03:01:10Z msweet $".
- */
index b93ca18..b8bec27 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: array.c 12031 2014-07-15 19:57:59Z msweet $"
- *
  * Sorted array routines for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -79,14 +77,14 @@ static int  cups_array_find(cups_array_t *a, void *e, int prev, int *rdiff);
  * appended at the end of the run of identical elements.  For unsorted arrays,
  * the element is appended to the end of the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
 cupsArrayAdd(cups_array_t *a,          /* I - Array */
              void         *e)          /* I - Element */
 {
-  DEBUG_printf(("2cupsArrayAdd(a=%p, e=%p)", a, e));
+  DEBUG_printf(("2cupsArrayAdd(a=%p, e=%p)", (void *)a, e));
 
  /*
   * Range check input...
@@ -125,8 +123,7 @@ _cupsArrayAddStrings(cups_array_t *a,       /* I - Array */
   int          status = 1;             /* Status of add */
 
 
-  DEBUG_printf(("_cupsArrayAddStrings(a=%p, s=\"%s\", delim='%c')", a, s,
-                delim));
+  DEBUG_printf(("_cupsArrayAddStrings(a=%p, s=\"%s\", delim='%c')", (void *)a, s, delim));
 
   if (!a || !s || !*s)
   {
@@ -210,7 +207,7 @@ _cupsArrayAddStrings(cups_array_t *a,       /* I - Array */
  * The caller is responsible for freeing the memory used by the
  * elements themselves.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
@@ -252,7 +249,7 @@ cupsArrayClear(cups_array_t *a)             /* I - Array */
 /*
  * 'cupsArrayCount()' - Get the number of elements in the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - Number of elements */
@@ -279,7 +276,7 @@ cupsArrayCount(cups_array_t *a)             /* I - Array */
  * The current element is undefined until you call @link cupsArrayFind@,
  * @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - Element */
@@ -309,7 +306,7 @@ cupsArrayCurrent(cups_array_t *a)   /* I - Array */
  * The caller is responsible for freeing the memory used by the
  * elements themselves.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
@@ -353,7 +350,7 @@ cupsArrayDelete(cups_array_t *a)    /* I - Array */
 /*
  * 'cupsArrayDup()' - Duplicate the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_array_t *                         /* O - Duplicate array */
@@ -438,7 +435,7 @@ cupsArrayDup(cups_array_t *a)               /* I - Array */
 /*
  * 'cupsArrayFind()' - Find an element in the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - Element found or @code NULL@ */
@@ -533,7 +530,7 @@ cupsArrayFind(cups_array_t *a,              /* I - Array */
 /*
  * 'cupsArrayFirst()' - Get the first element in the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - First element or @code NULL@ if the array is empty */
@@ -562,7 +559,7 @@ cupsArrayFirst(cups_array_t *a)             /* I - Array */
  * The current element is undefined until you call @link cupsArrayFind@,
  * @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 int                                    /* O - Index of the current element, starting at 0 */
@@ -578,7 +575,7 @@ cupsArrayGetIndex(cups_array_t *a)  /* I - Array */
 /*
  * 'cupsArrayGetInsert()' - Get the index of the last inserted element.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 int                                    /* O - Index of the last inserted element, starting at 0 */
@@ -594,7 +591,7 @@ cupsArrayGetInsert(cups_array_t *a) /* I - Array */
 /*
  * 'cupsArrayIndex()' - Get the N-th element in the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - N-th element or @code NULL@ */
@@ -617,14 +614,14 @@ cupsArrayIndex(cups_array_t *a,           /* I - Array */
  * inserted at the beginning of the run of identical elements.  For unsorted
  * arrays, the element is inserted at the beginning of the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on failure, 1 on success */
 cupsArrayInsert(cups_array_t *a,       /* I - Array */
                void         *e)        /* I - Element */
 {
-  DEBUG_printf(("2cupsArrayInsert(a=%p, e=%p)", a, e));
+  DEBUG_printf(("2cupsArrayInsert(a=%p, e=%p)", (void *)a, e));
 
  /*
   * Range check input...
@@ -647,7 +644,7 @@ cupsArrayInsert(cups_array_t *a,    /* I - Array */
 /*
  * 'cupsArrayLast()' - Get the last element in the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - Last element or @code NULL@ if the array is empty */
@@ -678,7 +675,7 @@ cupsArrayLast(cups_array_t *a)              /* I - Array */
  * data pointer argument can safely be omitted when not required so functions
  * like @code strcmp@ can be used for sorted string arrays.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_array_t *                         /* O - Array */
@@ -700,7 +697,7 @@ cupsArrayNew(cups_array_func_t f,   /* I - Comparison function or @code NULL@ for
  * The hash function ("h") is used to implement cached lookups with the
  * specified hash size ("hsize").
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 cups_array_t *                         /* O - Array */
@@ -730,7 +727,7 @@ cupsArrayNew2(cups_array_func_t  f, /* I - Comparison function or @code NULL@ fo
  * The free function ("cf") is used to automatically free/release elements when
  * removed or the array is deleted.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 cups_array_t *                         /* O - Array */
@@ -814,7 +811,7 @@ _cupsArrayNewStrings(const char *s, /* I - Delimited strings or NULL */
  * @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@
  * to set the current element.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - Next element or @code NULL@ */
@@ -847,7 +844,7 @@ cupsArrayNext(cups_array_t *a)              /* I - Array */
  * @link cupsArrayFirst@, or @link cupsArrayIndex@, or @link cupsArrayLast@
  * to set the current element.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - Previous element or @code NULL@ */
@@ -880,7 +877,7 @@ cupsArrayPrev(cups_array_t *a)              /* I - Array */
  * The caller is responsible for freeing the memory used by the
  * removed element.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -945,7 +942,7 @@ cupsArrayRemove(cups_array_t *a,    /* I - Array */
 /*
  * 'cupsArrayRestore()' - Reset the current element to the last @link cupsArraySave@.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - New current element */
@@ -976,7 +973,7 @@ cupsArrayRestore(cups_array_t *a)   /* I - Array */
  *
  * The save/restore stack is guaranteed to be at least 32 elements deep.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -998,7 +995,7 @@ cupsArraySave(cups_array_t *a)              /* I - Array */
 /*
  * 'cupsArrayUserData()' - Return the user data for an array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void *                                 /* O - User data */
@@ -1014,7 +1011,7 @@ cupsArrayUserData(cups_array_t *a)        /* I - Array */
 /*
  * 'cups_array_add()' - Insert or append an element to the array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 static int                             /* O - 1 on success, 0 on failure */
@@ -1027,7 +1024,7 @@ cups_array_add(cups_array_t *a,           /* I - Array */
   int          diff;                   /* Comparison with current element */
 
 
-  DEBUG_printf(("7cups_array_add(a=%p, e=%p, insert=%d)", a, e, insert));
+  DEBUG_printf(("7cups_array_add(a=%p, e=%p, insert=%d)", (void *)a, e, insert));
 
  /*
   * Verify we have room for the new element...
@@ -1207,8 +1204,7 @@ cups_array_find(cups_array_t *a,  /* I - Array */
        diff;                           /* Comparison with current element */
 
 
-  DEBUG_printf(("7cups_array_find(a=%p, e=%p, prev=%d, rdiff=%p)", a, e, prev,
-                rdiff));
+  DEBUG_printf(("7cups_array_find(a=%p, e=%p, prev=%d, rdiff=%p)", (void *)a, e, prev, (void *)rdiff));
 
   if (a->compare)
   {
@@ -1327,8 +1323,3 @@ cups_array_find(cups_array_t *a,  /* I - Array */
 
   return (current);
 }
-
-
-/*
- * End of "$Id: array.c 12031 2014-07-15 19:57:59Z msweet $".
- */
index 7a5fc58..c747831 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: array.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Sorted array definitions for CUPS.
  *
- *   Sorted array definitions for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * 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/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_ARRAY_H_
@@ -86,7 +84,3 @@ extern void           *cupsArrayUserData(cups_array_t *a) _CUPS_API_1_2;
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_ARRAY_H_ */
-
-/*
- * End of "$Id: array.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 52a9db3..f9187ff 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: auth.c 12619 2015-05-06 21:00:19Z msweet $"
- *
  * Authentication functions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -104,7 +102,7 @@ static int  cups_local_auth(http_t *http);
  * This function should be called in response to a @code HTTP_STATUS_UNAUTHORIZED@
  * status, prior to resubmitting your request.
  *
- * @since CUPS 1.1.20/OS X 10.4@
+ * @since CUPS 1.1.20/macOS 10.4@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -122,8 +120,7 @@ cupsDoAuthentication(
   _cups_globals_t *cg;                 /* Global data */
 
 
-  DEBUG_printf(("cupsDoAuthentication(http=%p, method=\"%s\", resource=\"%s\")",
-                http, method, resource));
+  DEBUG_printf(("cupsDoAuthentication(http=%p, method=\"%s\", resource=\"%s\")", (void *)http, method, resource));
 
   if (!http)
     http = _cupsConnect();
@@ -668,8 +665,7 @@ cups_local_auth(http_t *http)               /* I - HTTP connection to server */
 #  endif /* HAVE_AUTHORIZATION_H */
 
 
-  DEBUG_printf(("7cups_local_auth(http=%p) hostaddr=%s, hostname=\"%s\"",
-                http, httpAddrString(http->hostaddr, filename, sizeof(filename)), http->hostname));
+  DEBUG_printf(("7cups_local_auth(http=%p) hostaddr=%s, hostname=\"%s\"", (void *)http, httpAddrString(http->hostaddr, filename, sizeof(filename)), http->hostname));
 
  /*
   * See if we are accessing localhost...
@@ -873,8 +869,3 @@ cups_local_auth(http_t *http)               /* I - HTTP connection to server */
   return (1);
 #endif /* WIN32 || __EMX__ */
 }
-
-
-/*
- * End of "$Id: auth.c 12619 2015-05-06 21:00:19Z msweet $".
- */
index dca31d2..13a9560 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: backchannel.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Backchannel functions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -44,7 +42,7 @@ static void   cups_setup(fd_set *set, struct timeval *tval,
  * parameter controls how many seconds to wait for the data - use 0.0 to
  * return immediately if there is no data, -1.0 to wait for data indefinitely.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ssize_t                                        /* O - Bytes read or -1 on error */
@@ -95,7 +93,7 @@ cupsBackChannelRead(char   *buffer,   /* I - Buffer to read into */
  * 0.0 to return immediately if the data cannot be written, -1.0 to wait
  * indefinitely.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ssize_t                                        /* O - Bytes written or -1 on error */
@@ -186,8 +184,3 @@ cups_setup(fd_set         *set,             /* I - Set for select() */
   FD_ZERO(set);
   FD_SET(3, set);
 }
-
-
-/*
- * End of "$Id: backchannel.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 0789471..a21ee38 100644 (file)
@@ -1,24 +1,16 @@
 /*
- * "$Id: backend.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Backend functions for CUPS.
  *
- *   Backend functions for CUPS.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2006 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   cupsBackendDeviceURI() - Get the device URI for a backend.
- *   cupsBackendReport()    - Write a device line from a backend.
- *   quote_string()         - Write a quoted string to stdout, escaping \ and ".
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -27,6 +19,7 @@
 
 #include "cups-private.h"
 #include "backend.h"
+#include "ppd.h"
 
 
 /*
@@ -44,7 +37,7 @@ static void   quote_string(const char *s);
  * variable or the device URI passed in argv[0], whichever is found
  * first.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 const char *                           /* O - Device URI or @code NULL@ */
@@ -92,7 +85,7 @@ cupsBackendDeviceURI(char **argv)     /* I - Command-line arguments */
  * It handles quoting of special characters in the device-make-and-model,
  * device-info, device-id, and device-location strings.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 void
@@ -147,8 +140,3 @@ quote_string(const char *s)         /* I - String to write */
 
   putchar('\"');
 }
-
-
-/*
- * End of "$Id: backend.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 127c027..709fd6e 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: backend.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Backend definitions for CUPS.
  *
- *   Backend definitions for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_BACKEND_H_
@@ -72,7 +70,3 @@ extern void           cupsBackendReport(const char *device_scheme,
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_BACKEND_H_ */
-
-/*
- * End of "$Id: backend.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index da8a396..998aeec 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: cups-private.h 12441 2015-01-29 14:42:32Z msweet $"
+ * Private definitions for CUPS.
  *
- *   Private definitions for CUPS.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   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
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_CUPS_PRIVATE_H_
@@ -29,7 +27,6 @@
 #  include "http-private.h"
 #  include "language-private.h"
 #  include "pwg-private.h"
-#  include "ppd-private.h"
 #  include "thread-private.h"
 #  include <cups/cups.h>
 #  ifdef __APPLE__
@@ -122,11 +119,6 @@ typedef struct _cups_globals_s             /**** CUPS global state data ****/
   char                 language[32];   /* Cached language */
 #  endif /* __APPLE__ */
 
-  /* ppd.c */
-  ppd_status_t         ppd_status;     /* Status of last ppdOpen*() */
-  int                  ppd_line;       /* Current line number */
-  ppd_conform_t                ppd_conform;    /* Level of conformance required */
-
   /* pwg-media.c */
   cups_array_t         *leg_size_lut,  /* Lookup table for legacy names */
                        *ppd_size_lut,  /* Lookup table for PPD names */
@@ -166,6 +158,7 @@ typedef struct _cups_globals_s              /**** CUPS global state data ****/
   void                 *server_cert_data;
                                        /* Server certificate user data */
   int                  server_version, /* Server IPP version */
+                       trust_first,    /* Trust on first use? */
                        any_root,       /* Allow any (e.g., self-signed) root */
                        expired_certs,  /* Allow expired certs */
                        validate_certs; /* Validate certificates */
@@ -173,8 +166,6 @@ typedef struct _cups_globals_s              /**** CUPS global state data ****/
   /* util.c */
   char                 def_printer[256];
                                        /* Default printer */
-  char                 ppd_filename[HTTP_MAX_URI];
-                                       /* PPD filename */
 } _cups_globals_t;
 
 typedef struct _cups_media_db_s                /* Media database */
@@ -244,6 +235,7 @@ extern char         *_cupsBufferGet(size_t size);
 extern void            _cupsBufferRelease(char *b);
 
 extern http_t          *_cupsConnect(void);
+extern char            *_cupsCreateDest(const char *name, const char *info, const char *device_id, const char *device_uri, char *uri, size_t urisize);
 extern int             _cupsGet1284Values(const char *device_id,
                                           cups_option_t **values);
 extern const char      *_cupsGetDestResource(cups_dest_t *dest, char *resource,
@@ -279,7 +271,3 @@ extern char         *_cupsUserDefault(char *name, size_t namesize);
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_CUPS_PRIVATE_H_ */
-
-/*
- * End of "$Id: cups-private.h 12441 2015-01-29 14:42:32Z msweet $".
- */
index f38dfed..c9bea80 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: cups.h 13087 2016-02-12 18:53:24Z msweet $"
- *
  * API definitions for CUPS.
  *
  * Copyright 2007-2016 by Apple Inc.
@@ -26,8 +24,8 @@
 #  if defined(WIN32) && !defined(__CUPS_SSIZE_T_DEFINED)
 #    define __CUPS_SSIZE_T_DEFINED
 #    include <stddef.h>
-/* Windows does not support the ssize_t type, so map it to off_t... */
-typedef off_t ssize_t;                 /* @private@ */
+/* Windows does not support the ssize_t type, so map it to long... */
+typedef long ssize_t;                  /* @private@ */
 #  endif /* WIN32 && !__CUPS_SSIZE_T_DEFINED */
 
 #  include "file.h"
@@ -35,15 +33,6 @@ typedef off_t ssize_t;                       /* @private@ */
 #  include "language.h"
 #  include "pwg.h"
 
-/*
- * Define _PPD_DEPRECATED to silence the warnings about PPD functions being
- * deprecated...
- */
-
-#  ifndef _PPD_DEPRECATED
-#    define _PPD_DEPRECATED _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.")
-#  endif /* !_PPD_DEPRECATED */
-
 
 /*
  * C++ magic...
@@ -58,10 +47,10 @@ extern "C" {
  * Constants...
  */
 
-#  define CUPS_VERSION                 2.0104
+#  define CUPS_VERSION                 2.0200
 #  define CUPS_VERSION_MAJOR           2
-#  define CUPS_VERSION_MINOR           1
-#  define CUPS_VERSION_PATCH           4
+#  define CUPS_VERSION_MINOR           2
+#  define CUPS_VERSION_PATCH           0
 
 #  define CUPS_BC_FD                   3
                                        /* Back-channel file descriptor for
@@ -236,21 +225,21 @@ enum cups_ptype_e                 /* Printer type/capability bit
   CUPS_PRINTER_FAX = 0x40000,          /* Fax queue */
   CUPS_PRINTER_REJECTING = 0x80000,    /* Printer is rejecting jobs */
   CUPS_PRINTER_DELETE = 0x100000,      /* Delete printer
-                                        * @since CUPS 1.2/OS X 10.5@ */
+                                        * @since CUPS 1.2/macOS 10.5@ */
   CUPS_PRINTER_NOT_SHARED = 0x200000,  /* Printer is not shared
-                                        * @since CUPS 1.2/OS X 10.5@ */
+                                        * @since CUPS 1.2/macOS 10.5@ */
   CUPS_PRINTER_AUTHENTICATED = 0x400000,/* Printer requires authentication
-                                        * @since CUPS 1.2/OS X 10.5@ */
+                                        * @since CUPS 1.2/macOS 10.5@ */
   CUPS_PRINTER_COMMANDS = 0x800000,    /* Printer supports maintenance commands
-                                        * @since CUPS 1.2/OS X 10.5@ */
+                                        * @since CUPS 1.2/macOS 10.5@ */
   CUPS_PRINTER_DISCOVERED = 0x1000000, /* Printer was automatically discovered
                                         * and added @private@
                                         * @since Deprecated@ */
   CUPS_PRINTER_SCANNER = 0x2000000,    /* Scanner-only device
-                                        * @since CUPS 1.4/OS X 10.6@ */
+                                        * @since CUPS 1.4/macOS 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@ */
+                                        * @since CUPS 1.4/macOS 10.6@ */
+  CUPS_PRINTER_3D = 0x8000000,         /* Printer with 3D capabilities @since CUPS 2.1@ */
   CUPS_PRINTER_OPTIONS = 0x6fffc       /* ~(CLASS | REMOTE | IMPLICIT |
                                         * DEFAULT | FAX | REJECTING | DELETE |
                                         * NOT_SHARED | AUTHENTICATED |
@@ -274,7 +263,7 @@ typedef struct cups_dest_s          /**** Destination ****/
 
 typedef struct _cups_dinfo_s cups_dinfo_t;
                                        /* Destination capability and status
-                                        * information @since CUPS 1.6/OS X 10.8@ */
+                                        * information @since CUPS 1.6/macOS 10.8@ */
 
 typedef struct cups_job_s              /**** Job ****/
 {
@@ -291,7 +280,7 @@ typedef struct cups_job_s           /**** Job ****/
   time_t       processing_time;        /* Time the job was processed */
 } cups_job_t;
 
-typedef struct cups_size_s             /**** Media Size @since CUPS 1.6/OS X 10.8@ ****/
+typedef struct cups_size_s             /**** Media Size @since CUPS 1.6/macOS 10.8@ ****/
 {
   char         media[128];             /* Media name to use */
   int          width,                  /* Width in hundredths of millimeters */
@@ -311,27 +300,19 @@ typedef int (*cups_client_cert_cb_t)(http_t *http, void *tls,
                                     cups_array_t *distinguished_names,
                                     void *user_data);
                                        /* Client credentials callback
-                                        * @since CUPS 1.5/OS X 10.7@ */
+                                        * @since CUPS 1.5/macOS 10.7@ */
 
 typedef int (*cups_dest_cb_t)(void *user_data, unsigned flags,
                              cups_dest_t *dest);
                                        /* Destination enumeration callback
-                                        * @since CUPS 1.6/OS X 10.8@ */
+                                        * @since CUPS 1.6/macOS 10.8@ */
 
 #  ifdef __BLOCKS__
 typedef int (^cups_dest_block_t)(unsigned flags, cups_dest_t *dest);
                                        /* Destination enumeration block
-                                        * @since CUPS 1.6/OS X 10.8@ */
+                                        * @since CUPS 1.6/macOS 10.8@ */
 #  endif /* __BLOCKS__ */
 
-typedef void (*cups_device_cb_t)(const char *device_class,
-                                 const char *device_id, const char *device_info,
-                                 const char *device_make_and_model,
-                                 const char *device_uri,
-                                const char *device_location, void *user_data);
-                                       /* Device callback
-                                        * @since CUPS 1.4/OS X 10.6@ */
-
 typedef const char *(*cups_password_cb_t)(const char *prompt);
                                        /* Password callback */
 
@@ -340,12 +321,12 @@ typedef const char *(*cups_password_cb2_t)(const char *prompt, http_t *http,
                                           const char *resource,
                                           void *user_data);
                                        /* New password callback
-                                        * @since CUPS 1.4/OS X 10.6@ */
+                                        * @since CUPS 1.4/macOS 10.6@ */
 
 typedef int (*cups_server_cert_cb_t)(http_t *http, void *tls,
                                     cups_array_t *certs, void *user_data);
                                        /* Server credentials callback
-                                        * @since CUPS 1.5/OS X 10.7@ */
+                                        * @since CUPS 1.5/macOS 10.7@ */
 
 
 /*
@@ -364,7 +345,6 @@ extern int          cupsGetClasses(char ***classes) _CUPS_DEPRECATED_MSG("Use cupsGetDes
 extern const char      *cupsGetDefault(void);
 extern int             cupsGetJobs(cups_job_t **jobs, const char *name,
                                    int myjobs, int whichjobs);
-extern const char      *cupsGetPPD(const char *name) _PPD_DEPRECATED;
 extern int             cupsGetPrinters(char ***printers) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
 extern ipp_status_t    cupsLastError(void);
 extern int             cupsPrintFile(const char *name, const char *filename,
@@ -422,7 +402,6 @@ extern int          cupsGetDests2(http_t *http, cups_dest_t **dests)
 extern int             cupsGetJobs2(http_t *http, cups_job_t **jobs,
                                     const char *name, int myjobs,
                                     int whichjobs) _CUPS_API_1_1_21;
-extern const char      *cupsGetPPD2(http_t *http, const char *name) _PPD_DEPRECATED;
 extern int             cupsPrintFile2(http_t *http, const char *name,
                                       const char *filename,
                                       const char *title, int num_options,
@@ -435,7 +414,7 @@ extern int          cupsPrintFiles2(http_t *http, const char *name,
 extern int             cupsSetDests2(http_t *http, int num_dests,
                                      cups_dest_t *dests) _CUPS_API_1_1_21;
 
-/**** New in CUPS 1.2/OS X 10.5 ****/
+/**** New in CUPS 1.2/macOS 10.5 ****/
 extern ssize_t         cupsBackChannelRead(char *buffer, size_t bytes,
                                            double timeout) _CUPS_API_1_2;
 extern ssize_t         cupsBackChannelWrite(const char *buffer, size_t bytes,
@@ -452,12 +431,10 @@ extern int                cupsRemoveOption(const char *name, int num_options,
                                         cups_option_t **options) _CUPS_API_1_2;
 extern cups_file_t     *cupsTempFile2(char *filename, int len) _CUPS_API_1_2;
 
-/**** New in CUPS 1.3/OS X 10.5 ****/
+/**** New in CUPS 1.3/macOS 10.5 ****/
 extern ipp_t           *cupsDoIORequest(http_t *http, ipp_t *request,
                                         const char *resource, int infile,
                                         int outfile) _CUPS_API_1_3;
-extern char            *cupsGetServerPPD(http_t *http, const char *name)
-                                         _CUPS_API_1_3;
 extern int             cupsRemoveDest(const char *name,
                                       const char *instance,
                                       int num_dests, cups_dest_t **dests)
@@ -467,7 +444,7 @@ extern void         cupsSetDefaultDest(const char *name,
                                           int num_dests,
                                           cups_dest_t *dests) _CUPS_API_1_3;
 
-/**** New in CUPS 1.4/OS X 10.6 ****/
+/**** New in CUPS 1.4/macOS 10.6 ****/
 extern ipp_status_t    cupsCancelJob2(http_t *http, const char *name,
                                       int job_id, int purge) _CUPS_API_1_4;
 extern int             cupsCreateJob(http_t *http, const char *name,
@@ -475,19 +452,11 @@ extern int                cupsCreateJob(http_t *http, const char *name,
                                      cups_option_t *options) _CUPS_API_1_4;
 extern ipp_status_t    cupsFinishDocument(http_t *http,
                                           const char *name) _CUPS_API_1_4;
-extern ipp_status_t    cupsGetDevices(http_t *http, int timeout,
-                                      const char *include_schemes,
-                                      const char *exclude_schemes,
-                                      cups_device_cb_t callback,
-                                      void *user_data) _CUPS_API_1_4;
 extern cups_dest_t     *cupsGetNamedDest(http_t *http, const char *name,
                                          const char *instance) _CUPS_API_1_4;
 extern const char      *cupsGetPassword2(const char *prompt, http_t *http,
                                          const char *method,
                                          const char *resource) _CUPS_API_1_4;
-extern http_status_t   cupsGetPPD3(http_t *http, const char *name,
-                                   time_t *modtime, char *buffer,
-                                   size_t bufsize) _PPD_DEPRECATED;
 extern ipp_t           *cupsGetResponse(http_t *http,
                                         const char *resource) _CUPS_API_1_4;
 extern ssize_t         cupsReadResponseData(http_t *http, char *buffer,
@@ -504,14 +473,14 @@ extern http_status_t      cupsStartDocument(http_t *http, const char *name,
 extern http_status_t   cupsWriteRequestData(http_t *http, const char *buffer,
                                             size_t length) _CUPS_API_1_4;
 
-/**** New in CUPS 1.5/OS X 10.7 ****/
+/**** New in CUPS 1.5/macOS 10.7 ****/
 extern void            cupsSetClientCertCB(cups_client_cert_cb_t cb,
                                            void *user_data) _CUPS_API_1_5;
 extern int             cupsSetCredentials(cups_array_t *certs) _CUPS_API_1_5;
 extern void            cupsSetServerCertCB(cups_server_cert_cb_t cb,
                                            void *user_data) _CUPS_API_1_5;
 
-/**** New in CUPS 1.6/OS X 10.8 ****/
+/**** New in CUPS 1.6/macOS 10.8 ****/
 extern ipp_status_t    cupsCancelDestJob(http_t *http, cups_dest_t *dest,
                                          int job_id) _CUPS_API_1_6;
 extern int             cupsCheckDestSupported(http_t *http, cups_dest_t *dest,
@@ -612,7 +581,7 @@ extern int          cupsGetDestMediaByIndex(http_t *http, cups_dest_t *dest,
                                                unsigned flags,
                                                cups_size_t *size)
                                                _CUPS_API_1_7;
-extern  int            cupsGetDestMediaCount(http_t *http, cups_dest_t *dest,
+extern int             cupsGetDestMediaCount(http_t *http, cups_dest_t *dest,
                                              cups_dinfo_t *dinfo,
                                              unsigned flags) _CUPS_API_1_7;
 extern int             cupsGetDestMediaDefault(http_t *http, cups_dest_t *dest,
@@ -623,18 +592,17 @@ extern int                cupsGetDestMediaDefault(http_t *http, cups_dest_t *dest,
 extern void            cupsSetUserAgent(const char *user_agent) _CUPS_API_1_7;
 extern const char      *cupsUserAgent(void) _CUPS_API_1_7;
 
-/* New in CUPS 2.0/OS X 10.10 */
+/* New in CUPS 2.0/macOS 10.10 */
 extern cups_dest_t     *cupsGetDestWithURI(const char *name, const char *uri) _CUPS_API_2_0;
 extern const char      *cupsLocalizeDestMedia(http_t *http, cups_dest_t *dest, cups_dinfo_t *info, unsigned flags, cups_size_t *size) _CUPS_API_2_0;
 extern int             cupsMakeServerCredentials(const char *path, const char *common_name, int num_alt_names, const char **alt_names, time_t expiration_date) _CUPS_API_2_0;
 extern int             cupsSetServerCredentials(const char *path, const char *common_name, int auto_create) _CUPS_API_2_0;
 
+/* New in CUPS 2.2/macOS 10.12 */
+extern ssize_t         cupsHashData(const char *algorithm, const void *data, size_t datalen, unsigned char *hash, size_t hashsize) _CUPS_API_2_2;
+
 #  ifdef __cplusplus
 }
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_CUPS_H_ */
-
-/*
- * End of "$Id: cups.h 13087 2016-02-12 18:53:24Z msweet $".
- */
index 8968aeb..8d9861c 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: debug-private.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Private debugging macros for CUPS.
  *
- *   Private debugging macros for CUPS.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_DEBUG_PRIVATE_H_
@@ -111,7 +109,3 @@ extern int  _cups_gettimeofday(struct timeval *tv, void *tz);
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_DEBUG_PRIVATE_H_ */
-
-/*
- * End of "$Id: debug-private.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 5b51d46..a25e4b1 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: debug.c 12928 2015-10-23 21:31:58Z msweet $"
- *
  * Debugging functions for CUPS.
  *
  * Copyright 2008-2015 by Apple Inc.
@@ -642,8 +640,3 @@ _cups_safe_vsnprintf(
 
   return (bytes);
 }
-
-
-/*
- * End of "$Id: debug.c 12928 2015-10-23 21:31:58Z msweet $".
- */
index 703b171..146887e 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: dest-job.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Destination job support for CUPS.
  *
- * Copyright 2012-2014 by Apple Inc.
+ * Copyright 2012-2016 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
  *
  * The "job_id" is the number returned by cupsCreateDestJob.
  *
- * Returns IPP_STATUS_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
- * failure.
+ * Returns @code IPP_STATUS_OK@ on success and
+ * @code IPP_STATUS_ERRPR_NOT_AUTHORIZED@ or
+ * @code IPP_STATUS_ERROR_FORBIDDEN@ on failure.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_status_t
@@ -37,13 +36,26 @@ cupsCancelDestJob(http_t      *http,        /* I - Connection to destination */
                   cups_dest_t *dest,   /* I - Destination */
                   int         job_id)  /* I - Job ID */
 {
-  /* TODO: Needs to be implemented! */
-  /* Probably also needs to be revved to accept cups_dinfo_t... */
-  (void)http;
-  (void)dest;
-  (void)job_id;
+  cups_dinfo_t *info;                  /* Destination information */
+
+
+  if ((info = cupsCopyDestInfo(http, dest)) != NULL)
+  {
+    ipp_t      *request;               /* Cancel-Job request */
+
+    request = ippNewRequest(IPP_OP_CANCEL_JOB);
+
+    ippSetVersion(request, info->version / 10, info->version % 10);
+
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, info->uri);
+    ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id", job_id);
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser());
 
-  return (IPP_STATUS_ERROR_NOT_FOUND);
+    ippDelete(cupsDoRequest(http, request, info->resource));
+    cupsFreeDestInfo(info);
+  }
+
+  return (cupsLastError());
 }
 
 
@@ -54,7 +66,7 @@ cupsCancelDestJob(http_t      *http,  /* I - Connection to destination */
  * "job_id" is the job ID returned by cupsCreateDestJob. Returns @code IPP_STATUS_OK@
  * on success.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_status_t                           /* O - IPP status code */
@@ -69,9 +81,7 @@ cupsCloseDestJob(
   ipp_attribute_t      *attr;          /* operations-supported attribute */
 
 
-  DEBUG_printf(("cupsCloseDestJob(http=%p, dest=%p(%s/%s), info=%p, job_id=%d)",
-                http, dest, dest ? dest->name : NULL,
-                dest ? dest->instance : NULL, info, job_id));
+  DEBUG_printf(("cupsCloseDestJob(http=%p, dest=%p(%s/%s), info=%p, job_id=%d)", (void *)http, (void *)dest, dest ? dest->name : NULL, dest ? dest->instance : NULL, (void *)info, job_id));
 
  /*
   * Range check input...
@@ -140,7 +150,7 @@ cupsCloseDestJob(
  * Returns @code IPP_STATUS_OK@ or @code IPP_STATUS_OK_SUBST@ on success, saving the job ID
  * in the variable pointed to by "job_id".
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_status_t                           /* O - IPP status code */
@@ -159,10 +169,7 @@ cupsCreateDestJob(
 
 
   DEBUG_printf(("cupsCreateDestJob(http=%p, dest=%p(%s/%s), info=%p, "
-                "job_id=%p, title=\"%s\", num_options=%d, options=%p)",
-                http, dest, dest ? dest->name : NULL,
-                dest ? dest->instance : NULL, info, job_id, title, num_options,
-                options));
+                "job_id=%p, title=\"%s\", num_options=%d, options=%p)", (void *)http, (void *)dest, dest ? dest->name : NULL, dest ? dest->instance : NULL, (void *)info, (void *)job_id, title, num_options, (void *)options));
 
  /*
   * Range check input...
@@ -233,7 +240,7 @@ cupsCreateDestJob(
  *
  * Returns @code IPP_STATUS_OK@ or @code IPP_STATUS_OK_SUBST@ on success.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_status_t                           /* O - Status of document submission */
@@ -242,9 +249,7 @@ cupsFinishDestDocument(
     cups_dest_t  *dest,                        /* I - Destination */
     cups_dinfo_t *info)                /* I - Destination information */
 {
-  DEBUG_printf(("cupsFinishDestDocument(http=%p, dest=%p(%s/%s), info=%p)",
-                http, dest, dest ? dest->name : NULL,
-                dest ? dest->instance : NULL, info));
+  DEBUG_printf(("cupsFinishDestDocument(http=%p, dest=%p(%s/%s), info=%p)", (void *)http, (void *)dest, dest ? dest->name : NULL, dest ? dest->instance : NULL, (void *)info));
 
  /*
   * Range check input...
@@ -280,7 +285,7 @@ cupsFinishDestDocument(
  * if this is the last document to be submitted in the job.  Returns
  * @code HTTP_CONTINUE@ on success.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 http_status_t                          /* O - Status of document creation */
@@ -299,12 +304,7 @@ cupsStartDestDocument(
   http_status_t        status;                 /* HTTP status */
 
 
-  DEBUG_printf(("cupsStartDestDocument(http=%p, dest=%p(%s/%s), info=%p, "
-                "job_id=%d, docname=\"%s\", format=\"%s\", num_options=%d, "
-                "options=%p, last_document=%d)",
-                http, dest, dest ? dest->name : NULL,
-                dest ? dest->instance : NULL, info, job_id, docname, format,
-                num_options, options, last_document));
+  DEBUG_printf(("cupsStartDestDocument(http=%p, dest=%p(%s/%s), info=%p, job_id=%d, docname=\"%s\", format=\"%s\", num_options=%d, options=%p, last_document=%d)", (void *)http, (void *)dest, dest ? dest->name : NULL, dest ? dest->instance : NULL, (void *)info, job_id, docname, format, num_options, (void *)options, last_document));
 
  /*
   * Range check input...
@@ -357,8 +357,3 @@ cupsStartDestDocument(
 
   return (status);
 }
-
-
-/*
- * End of "$Id: dest-job.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index d76ae2b..6358b6d 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: dest-localization.c 12094 2014-08-19 12:15:11Z msweet $"
- *
  * Destination localization support for CUPS.
  *
  * Copyright 2012-2014 by Apple Inc.
@@ -38,7 +36,7 @@ static char   *cups_scan_strings(char *buffer);
  * The returned string is stored in the destination information and will become
  * invalid if the destination information is deleted.
  *
- * @since CUPS 2.0/OS X 10.10@
+ * @since CUPS 2.0/macOS 10.10@
  */
 
 const char *                           /* O - Localized string */
@@ -143,7 +141,7 @@ cupsLocalizeDestMedia(
 
   if (mdb)
   {
-    DEBUG_printf(("1cupsLocalizeDestMedia: MATCH mdb%p [key=\"%s\" size_name=\"%s\" source=\"%s\" type=\"%s\" width=%d length=%d B%d L%d R%d T%d]", mdb, mdb->key, mdb->size_name, mdb->source, mdb->type, mdb->width, mdb->length, mdb->bottom, mdb->left, mdb->right, mdb->top));
+    DEBUG_printf(("1cupsLocalizeDestMedia: MATCH mdb%p [key=\"%s\" size_name=\"%s\" source=\"%s\" type=\"%s\" width=%d length=%d B%d L%d R%d T%d]", (void *)mdb, mdb->key, mdb->size_name, mdb->source, mdb->type, mdb->width, mdb->length, mdb->bottom, mdb->left, mdb->right, mdb->top));
 
     lsource = cupsLocalizeDestValue(http, dest, dinfo, "media-source", mdb->source);
     ltype   = cupsLocalizeDestValue(http, dest, dinfo, "media-type", mdb->type);
@@ -202,7 +200,7 @@ cupsLocalizeDestMedia(
  * The returned string is stored in the destination information and will become
  * invalid if the destination information is deleted.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 const char *                           /* O - Localized string */
@@ -241,7 +239,7 @@ cupsLocalizeDestOption(
  * The returned string is stored in the destination information and will become
  * invalid if the destination information is deleted.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 const char *                           /* O - Localized string */
@@ -531,9 +529,3 @@ cups_scan_strings(char *buffer)             /* I - Start of string */
 
   return (bufptr);
 }
-
-
-
-/*
- * End of "$Id: dest-localization.c 12094 2014-08-19 12:15:11Z msweet $".
- */
index 8fda3c8..fc3fd35 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: dest-options.c 11882 2014-05-16 21:02:15Z msweet $"
- *
  * Destination option/media support for CUPS.
  *
- * Copyright 2012-2014 by Apple Inc.
+ * Copyright 2012-2016 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -66,7 +64,7 @@ static void           cups_update_ready(http_t *http, cups_dinfo_t *dinfo);
  *
  * Returns 1 if supported, 0 otherwise.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 if supported, 0 otherwise */
@@ -263,7 +261,7 @@ cupsCheckDestSupported(
  * If cupsCopyDestConflicts returns 1 but "num_resolved" and "resolved" are set
  * to 0 and @code NULL@, respectively, then the conflict cannot be resolved.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 if there is a conflict, 0 if none, -1 on error */
@@ -548,7 +546,7 @@ cupsCopyDestConflicts(
  * The caller is responsible for calling @link cupsFreeDestInfo@ on the return
  * value. @code NULL@ is returned on error.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 cups_dinfo_t *                         /* O - Destination information */
@@ -574,8 +572,7 @@ cupsCopyDestInfo(
   };
 
 
-  DEBUG_printf(("cupsCopyDestSupported(http=%p, dest=%p(%s))", http, dest,
-                dest ? dest->name : ""));
+  DEBUG_printf(("cupsCopyDestSupported(http=%p, dest=%p(%s))", (void *)http, (void *)dest, dest ? dest->name : ""));
 
  /*
   * Range check input...
@@ -675,7 +672,7 @@ cupsCopyDestInfo(
  * @code ippGetResolution@, @code ippGetString@, and @code ippGetValueTag@
  * functions to inspect the default value(s) as needed.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 ipp_attribute_t        *                       /* O - Default attribute or @code NULL@ for none */
@@ -706,6 +703,7 @@ cupsFindDestDefault(
   return (ippFindAttribute(dinfo->attrs, name, IPP_TAG_ZERO));
 }
 
+
 /*
  * 'cupsFindDestReady()' - Find the default value(s) for the given option.
  *
@@ -715,7 +713,7 @@ cupsFindDestDefault(
  * @code ippGetResolution@, @code ippGetString@, and @code ippGetValueTag@
  * functions to inspect the default value(s) as needed.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 ipp_attribute_t        *                       /* O - Default attribute or @code NULL@ for none */
@@ -748,6 +746,7 @@ cupsFindDestReady(
   return (ippFindAttribute(dinfo->ready_attrs, name, IPP_TAG_ZERO));
 }
 
+
 /*
  * 'cupsFindDestSupported()' - Find the default value(s) for the given option.
  *
@@ -757,7 +756,7 @@ cupsFindDestReady(
  * @code ippGetResolution@, @code ippGetString@, and @code ippGetValueTag@
  * functions to inspect the default value(s) as needed.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 ipp_attribute_t        *                       /* O - Default attribute or @code NULL@ for none */
@@ -836,7 +835,7 @@ cupsFreeDestInfo(cups_dinfo_t *dinfo)       /* I - Destination information */
  * example, passing @code CUPS_MEDIA_FLAGS_BORDERLESS@ will get the Nth
  * borderless size supported by the printer.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -884,7 +883,7 @@ cupsGetDestMediaByIndex(
     _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(EINVAL), 0);
     return (0);
   }
-  
+
   if (nsize->size_name)
     strlcpy(size->media, nsize->size_name, sizeof(size->media));
   else if (nsize->key)
@@ -925,7 +924,7 @@ cupsGetDestMediaByIndex(
  *
  * Returns 1 when there is a match and 0 if there is not a match.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on match, 0 on failure */
@@ -990,7 +989,7 @@ cupsGetDestMediaByName(
  *
  * Returns 1 when there is a match and 0 if there is not a match.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on match, 0 on failure */
@@ -1049,7 +1048,7 @@ cupsGetDestMediaBySize(
  * counted.  For example, passing @code CUPS_MEDIA_FLAGS_BORDERLESS@ will return
  * the number of borderless sizes.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - Number of sizes */
@@ -1090,7 +1089,7 @@ cupsGetDestMediaCount(
  * example, passing @code CUPS_MEDIA_FLAGS_BORDERLESS@ will return the default
  * borderless size, typically US Letter or A4, but sometimes 4x6 photo media.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -1261,7 +1260,7 @@ cups_create_cached(http_t       *http,    /* I - Connection to destination */
                        *first;         /* First entry this size */
 
 
-  DEBUG_printf(("3cups_create_cached(http=%p, dinfo=%p, flags=%u)", http, dinfo, flags));
+  DEBUG_printf(("3cups_create_cached(http=%p, dinfo=%p, flags=%u)", (void *)http, (void *)dinfo, flags));
 
   if (dinfo->cached_db)
     cupsArrayDelete(dinfo->cached_db);
@@ -1290,13 +1289,13 @@ cups_create_cached(http_t       *http,  /* I - Connection to destination */
        mdb;
        mdb = (_cups_media_db_t *)cupsArrayNext(db))
   {
-    DEBUG_printf(("4cups_create_cached: %p key=\"%s\", type=\"%s\", %dx%d, B%d L%d R%d T%d", mdb, mdb->key, mdb->type, mdb->width, mdb->length, mdb->bottom, mdb->left, mdb->right, mdb->top));
+    DEBUG_printf(("4cups_create_cached: %p key=\"%s\", type=\"%s\", %dx%d, B%d L%d R%d T%d", (void *)mdb, mdb->key, mdb->type, mdb->width, mdb->length, mdb->bottom, mdb->left, mdb->right, mdb->top));
 
     if (flags & CUPS_MEDIA_FLAGS_BORDERLESS)
     {
       if (!mdb->left && !mdb->right && !mdb->top && !mdb->bottom)
       {
-        DEBUG_printf(("4cups_create_cached: add %p", mdb));
+        DEBUG_printf(("4cups_create_cached: add %p", (void *)mdb));
         cupsArrayAdd(dinfo->cached_db, mdb);
       }
     }
@@ -1304,7 +1303,7 @@ cups_create_cached(http_t       *http,    /* I - Connection to destination */
     {
       if (first->width != mdb->width || first->length != mdb->length)
       {
-       DEBUG_printf(("4cups_create_cached: add %p", first));
+       DEBUG_printf(("4cups_create_cached: add %p", (void *)first));
         cupsArrayAdd(dinfo->cached_db, first);
         first = mdb;
       }
@@ -1314,14 +1313,14 @@ cups_create_cached(http_t       *http,  /* I - Connection to destination */
     }
     else
     {
-      DEBUG_printf(("4cups_create_cached: add %p", mdb));
+      DEBUG_printf(("4cups_create_cached: add %p", (void *)mdb));
       cupsArrayAdd(dinfo->cached_db, mdb);
     }
   }
 
   if (flags & CUPS_MEDIA_FLAGS_DUPLEX)
   {
-    DEBUG_printf(("4cups_create_cached: add %p", first));
+    DEBUG_printf(("4cups_create_cached: add %p", (void *)first));
     cupsArrayAdd(dinfo->cached_db, first);
   }
 }
@@ -2264,8 +2263,3 @@ cups_update_ready(http_t       *http,     /* I - Connection to destination */
 
   dinfo->ready_time = time(NULL);
 }
-
-
-/*
- * End of "$Id: dest-options.c 11882 2014-05-16 21:02:15Z msweet $".
- */
index 578d352..cd7529c 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: dest.c 13075 2016-01-29 21:14:05Z msweet $"
- *
  * User-defined destination (and option) support for CUPS.
  *
  * Copyright 2007-2016 by Apple Inc.
  */
 
 #ifdef __APPLE__
-#  include <SystemConfiguration/SystemConfiguration.h>
+#  if !TARGET_OS_IOS
+#    include <SystemConfiguration/SystemConfiguration.h>
+#    define _CUPS_LOCATION_DEFAULTS 1
+#  endif /* !TARGET_OS_IOS */
 #  define kCUPSPrintingPrefs   CFSTR("org.cups.PrintingPrefs")
 #  define kDefaultPaperIDKey   CFSTR("DefaultPaperID")
 #  define kLastUsedPrintersKey CFSTR("LastUsedPrinters")
@@ -119,13 +120,17 @@ typedef struct _cups_dnssd_resolve_s      /* Data for resolving URI */
  * Local functions...
  */
 
-#ifdef __APPLE__
+#if _CUPS_LOCATION_DEFAULTS
 static CFArrayRef      appleCopyLocations(void);
 static CFStringRef     appleCopyNetwork(void);
+#endif /* _CUPS_LOCATION_DEFAULTS */
+#ifdef __APPLE__
 static char            *appleGetPaperSize(char *name, size_t namesize);
+#endif /* __APPLE__ */
+#if _CUPS_LOCATION_DEFAULTS
 static CFStringRef     appleGetPrinter(CFArrayRef locations,
                                        CFStringRef network, CFIndex *locindex);
-#endif /* __APPLE__ */
+#endif /* _CUPS_LOCATION_DEFAULTS */
 static cups_dest_t     *cups_add_dest(const char *name, const char *instance,
                                       int *num_dests, cups_dest_t **dests);
 #ifdef __BLOCKS__
@@ -309,6 +314,7 @@ _cupsAppleCopyDefaultPaperID(void)
 CFStringRef                            /* O - Default printer name */
 _cupsAppleCopyDefaultPrinter(void)
 {
+#  if _CUPS_LOCATION_DEFAULTS
   CFStringRef  network;                /* Network location */
   CFArrayRef   locations;              /* Location array */
   CFStringRef  locprinter;             /* Current printer */
@@ -365,6 +371,10 @@ _cupsAppleCopyDefaultPrinter(void)
   CFRelease(locations);
 
   return (locprinter);
+
+#  else
+  return (NULL);
+#  endif /* _CUPS_LOCATION_DEFAULTS */
 }
 
 
@@ -402,7 +412,10 @@ _cupsAppleSetDefaultPaperID(
 {
   CFPreferencesSetAppValue(kDefaultPaperIDKey, name, kCUPSPrintingPrefs);
   CFPreferencesAppSynchronize(kCUPSPrintingPrefs);
+
+#  ifdef HAVE_NOTIFY_POST
   notify_post("com.apple.printerPrefsChange");
+#  endif /* HAVE_NOTIFY_POST */
 }
 
 
@@ -414,6 +427,7 @@ void
 _cupsAppleSetDefaultPrinter(
     CFStringRef name)                  /* I - Default printer/class name */
 {
+#  if _CUPS_LOCATION_DEFAULTS
   CFStringRef          network;        /* Current network */
   CFArrayRef           locations;      /* Old locations array */
   CFIndex              locindex;       /* Index in locations array */
@@ -490,7 +504,10 @@ _cupsAppleSetDefaultPrinter(
       CFPreferencesSetAppValue(kLastUsedPrintersKey, newlocations,
                                kCUPSPrintingPrefs);
       CFPreferencesAppSynchronize(kCUPSPrintingPrefs);
+
+#  ifdef HAVE_NOTIFY_POST
       notify_post("com.apple.printerPrefsChange");
+#  endif /* HAVE_NOTIFY_POST */
     }
 
     if (newlocations)
@@ -504,6 +521,10 @@ _cupsAppleSetDefaultPrinter(
     CFRelease(locations);
 
   CFRelease(network);
+
+#  else
+  (void)name;
+#  endif /* _CUPS_LOCATION_DEFAULTS */
 }
 
 
@@ -519,7 +540,10 @@ _cupsAppleSetUseLastPrinter(
                           uselast ? kCFBooleanTrue : kCFBooleanFalse,
                           kCUPSPrintingPrefs);
   CFPreferencesAppSynchronize(kCUPSPrintingPrefs);
+
+#  ifdef HAVE_NOTIFY_POST
   notify_post("com.apple.printerPrefsChange");
+#  endif /* HAVE_NOTIFY_POST */
 }
 #endif /* __APPLE__ */
 
@@ -533,7 +557,7 @@ _cupsAppleSetUseLastPrinter(
  * to by "cancel" is non-zero, or the callback function (or block) returns 0,
  * The caller is responsible for calling httpClose() on the returned object.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 http_t *                               /* O - Connection to server or @code NULL@ */
@@ -559,6 +583,8 @@ cupsConnectDest(
   http_t       *http;                  /* Connection to server */
 
 
+  DEBUG_printf(("cupsConnectDest(dest=%p, flags=0x%x, msec=%d, cancel=%p(%d), resource=\"%s\", resourcesize=" CUPS_LLFMT ", cb=%p, user_data=%p)", (void *)dest, flags, msec, (void *)cancel, cancel ? *cancel : -1, resource, CUPS_LLCAST resourcesize, (void *)cb, user_data));
+
  /*
   * Range check input...
   */
@@ -582,26 +608,39 @@ cupsConnectDest(
   * Grab the printer URI...
   */
 
-  if ((uri = cupsGetOption("printer-uri-supported", dest->num_options,
-                           dest->options)) == NULL)
+  if ((uri = cupsGetOption("printer-uri-supported", dest->num_options, dest->options)) == NULL)
   {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
+    if ((uri = cupsGetOption("resolved-device-uri", dest->num_options, dest->options)) == NULL)
+    {
+      if ((uri = cupsGetOption("device-uri", dest->num_options, dest->options)) != NULL)
+      {
+#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
+        if (strstr(uri, "._tcp"))
+          uri = cups_dnssd_resolve(dest, uri, msec, cancel, cb, user_data);
+#endif /* HAVE_DNSSD || HAVE_AVAHI */
+      }
+    }
 
-    if (cb)
-      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
-            dest);
+    if (uri)
+      uri = _cupsCreateDest(dest->name, cupsGetOption("printer-info", dest->num_options, dest->options), NULL, uri, tempresource, sizeof(tempresource));
 
-    return (NULL);
+    if (uri)
+    {
+      dest->num_options = cupsAddOption("printer-uri-supported", uri, dest->num_options, &dest->options);
+
+      uri = cupsGetOption("printer-uri-supported", dest->num_options, dest->options);
+    }
   }
 
-#if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
-  if (strstr(uri, "._tcp"))
+  if (!uri)
   {
-    if ((uri = cups_dnssd_resolve(dest, uri, msec, cancel, cb,
-                                  user_data)) == NULL)
-      return (NULL);
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(ENOENT), 0);
+
+    if (cb)
+      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR, dest);
+
+    return (NULL);
   }
-#endif /* HAVE_DNSSD || HAVE_AVAHI */
 
   if (httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme),
                       userpass, sizeof(userpass), hostname, sizeof(hostname),
@@ -621,16 +660,14 @@ cupsConnectDest(
   */
 
   if (cb)
-    (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_RESOLVING,
-          dest);
+    (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_RESOLVING, dest);
 
   snprintf(portstr, sizeof(portstr), "%d", port);
 
   if ((addrlist = httpAddrGetList(hostname, AF_UNSPEC, portstr)) == NULL)
   {
     if (cb)
-      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
-            dest);
+      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR, dest);
 
     return (NULL);
   }
@@ -640,8 +677,7 @@ cupsConnectDest(
     httpAddrFreeList(addrlist);
 
     if (cb)
-      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_CANCELED,
-            dest);
+      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_CANCELED, dest);
 
     return (NULL);
   }
@@ -655,8 +691,7 @@ cupsConnectDest(
   else
     encryption = HTTP_ENCRYPTION_IF_REQUESTED;
 
-  http = httpConnect2(hostname, port, addrlist, AF_UNSPEC, encryption, 1, 0,
-                      NULL);
+  http = httpConnect2(hostname, port, addrlist, AF_UNSPEC, encryption, 1, 0, NULL);
   httpAddrFreeList(addrlist);
 
  /*
@@ -671,17 +706,14 @@ cupsConnectDest(
   else
   {
     if (cb)
-      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_CONNECTING,
-            dest);
+      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_CONNECTING, dest);
 
     if (!httpReconnect2(http, msec, cancel) && cb)
     {
       if (cancel && *cancel)
-       (*cb)(user_data,
-             CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_CONNECTING, dest);
+       (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_CONNECTING, dest);
       else
-       (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
-             dest);
+       (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR, dest);
     }
     else if (cb)
       (*cb)(user_data, CUPS_DEST_FLAGS_NONE, dest);
@@ -701,7 +733,7 @@ cupsConnectDest(
  * to by "cancel" is non-zero, or the callback function (or block) returns 0,
  * The caller is responsible for calling httpClose() on the returned object.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 http_t *                               /* O - Connection to server or @code NULL@ */
@@ -727,7 +759,7 @@ cupsConnectDestBlock(
  * copy) - for use with the cupsEnumDests* functions. The caller is responsible
  * for calling cupsFreeDests() on the returned object(s).
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int
@@ -796,6 +828,83 @@ cupsCopyDest(cups_dest_t *dest,
 
 
 /*
+ * '_cupsCreateDest()' - Create a local (temporary) queue.
+ */
+
+char *                                 /* O - Printer URI or @code NULL@ on error */
+_cupsCreateDest(const char *name,      /* I - Printer name */
+                const char *info,      /* I - Printer description of @code NULL@ */
+               const char *device_id,  /* I - 1284 Device ID or @code NULL@ */
+               const char *device_uri, /* I - Device URI */
+               char       *uri,        /* I - Printer URI buffer */
+               size_t     urisize)     /* I - Size of URI buffer */
+{
+  http_t       *http;                  /* Connection to server */
+  ipp_t                *request,               /* CUPS-Create-Local-Printer request */
+               *response;              /* CUPS-Create-Local-Printer response */
+  ipp_attribute_t *attr;               /* printer-uri-supported attribute */
+  ipp_pstate_t state = IPP_PSTATE_STOPPED;
+                                       /* printer-state value */
+
+
+  if (!name || !device_uri || !uri || urisize < 32)
+    return (NULL);
+
+  if ((http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, HTTP_ENCRYPTION_IF_REQUESTED, 1, 30000, NULL)) == NULL)
+    return (NULL);
+
+  request = ippNewRequest(IPP_OP_CUPS_CREATE_LOCAL_PRINTER);
+
+  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, "ipp://localhost/");
+  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser());
+
+  ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_URI, "device-uri", NULL, device_uri);
+  ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name", NULL, name);
+  if (info)
+    ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info", NULL, info);
+  if (device_id)
+    ippAddString(request, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-device-id", NULL, device_id);
+
+  response = cupsDoRequest(http, request, "/");
+
+  if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
+    strlcpy(uri, ippGetString(attr, 0, NULL), urisize);
+  else
+  {
+    ippDelete(response);
+    httpClose(http);
+    return (NULL);
+  }
+
+  if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
+    state = (ipp_pstate_t)ippGetInteger(attr, 0);
+
+  while (state == IPP_PSTATE_STOPPED && cupsLastError() == IPP_STATUS_OK)
+  {
+    sleep(1);
+    ippDelete(response);
+
+    request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "requesting-user-name", NULL, cupsUser());
+    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", NULL, "printer-state");
+
+    response = cupsDoRequest(http, request, "/");
+
+    if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
+      state = (ipp_pstate_t)ippGetInteger(attr, 0);
+  }
+
+  ippDelete(response);
+
+  httpClose(http);
+
+  return (uri);
+}
+
+
+/*
  * 'cupsEnumDests()' - Enumerate available destinations with a callback function.
  *
  * Destinations are enumerated from one or more sources. The callback function
@@ -806,7 +915,7 @@ cupsCopyDest(cups_dest_t *dest,
  * Enumeration happens on the current thread and does not return until all
  * destinations have been enumerated or the callback function returns 0.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -1141,7 +1250,7 @@ cupsEnumDests(
  * Enumeration happens on the current thread and does not return until all
  * destinations have been enumerated or the block returns 0.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -1311,7 +1420,7 @@ _cupsGetDestResource(
  *
  * "uri" is the "ipp" or "ipps" URI for the printer.
  *
- * @since CUPS 2.0/OS X 10.10@
+ * @since CUPS 2.0/macOS 10.10@
  */
 
 cups_dest_t *                          /* O - Destination or @code NULL@ */
@@ -1390,7 +1499,7 @@ cupsGetDestWithURI(const char *name,      /* I - Desired printer name or @code NULL@
   }
 
   dest->name        = _cupsStrAlloc(name);
-  dest->num_options = cupsAddOption("printer-uri-supported", uri, dest->num_options, &(dest->options));
+  dest->num_options = cupsAddOption("device-uri", uri, dest->num_options, &(dest->options));
   dest->num_options = cupsAddOption("printer-info", name, dest->num_options, &(dest->options));
 
   return (dest);
@@ -1415,7 +1524,7 @@ cupsGetDestWithURI(const char *name,      /* I - Desired printer name or @code NULL@
  * Free the memory used by the destination array using the @link cupsFreeDests@
  * function.
  *
- * Note: On OS X this function also gets the default paper from the system
+ * Note: On macOS this function also gets the default paper from the system
  * preferences (~/L/P/org.cups.PrintingPrefs.plist) and includes it in the
  * options array for each destination that supports it.
  */
@@ -1708,7 +1817,7 @@ cupsGetDests(cups_dest_t **dests) /* O - Destinations */
  * Use the @link cupsFreeDests@ function to free the destination list and
  * the @link cupsGetDest@ function to find a particular destination.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  */
 
 int                                    /* O - Number of destinations */
@@ -1885,7 +1994,7 @@ cupsGetDests2(http_t      *http,  /* I - Connection to server or @code CUPS_HTTP_
  * The returned destination must be freed using @link cupsFreeDests@ with a
  * "num_dests" value of 1.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 cups_dest_t *                          /* O - Destination or @code NULL@ */
@@ -1999,7 +2108,7 @@ cupsGetNamedDest(http_t     *http,        /* I - Connection to server or @code CUPS_HTT
  * @link cupsSetDests@ or @link cupsSetDests2@ functions to save the new
  * options for the user.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 int                                    /* O  - New number of destinations */
@@ -2045,7 +2154,7 @@ cupsRemoveDest(const char  *name, /* I  - Destination name */
 /*
  * 'cupsSetDefaultDest()' - Set the default destination.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 void
@@ -2100,7 +2209,7 @@ cupsSetDests(int         num_dests,       /* I - Number of destinations */
  * This function saves the destinations to /etc/cups/lpoptions when run
  * as root and ~/.cups/lpoptions when run as a normal user.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -2326,7 +2435,7 @@ cupsSetDests2(http_t      *http,  /* I - Connection to server or @code CUPS_HTTP_
 
 #ifdef HAVE_NOTIFY_POST
  /*
-  * Send a notification so that MacOS X applications can know about the
+  * Send a notification so that macOS applications can know about the
   * change, too.
   */
 
@@ -2391,7 +2500,7 @@ _cupsUserDefault(char   *name,            /* I - Name buffer */
 }
 
 
-#ifdef __APPLE__
+#if _CUPS_LOCATION_DEFAULTS
 /*
  * 'appleCopyLocations()' - Copy the location history array.
  */
@@ -2484,8 +2593,10 @@ appleCopyNetwork(void)
 
   return (network);
 }
+#endif /* _CUPS_LOCATION_DEFAULTS */
 
 
+#ifdef __APPLE__
 /*
  * 'appleGetPaperSize()' - Get the default paper size.
  */
@@ -2511,8 +2622,10 @@ appleGetPaperSize(char   *name,          /* I - Paper size name buffer */
 
   return (name);
 }
+#endif /* __APPLE__ */
 
 
+#if _CUPS_LOCATION_DEFAULTS
 /*
  * 'appleGetPrinter()' - Get a printer from the history array.
  */
@@ -2550,7 +2663,7 @@ appleGetPrinter(CFArrayRef  locations,    /* I - Location array */
 
   return (NULL);
 }
-#endif /* __APPLE__ */
+#endif /* _CUPS_LOCATION_DEFAULTS */
 
 
 /*
@@ -2680,11 +2793,7 @@ cups_dnssd_browse_cb(
                                        /* Enumeration data */
 
 
-  DEBUG_printf(("5cups_dnssd_browse_cb(sdRef=%p, flags=%x, "
-               "interfaceIndex=%d, errorCode=%d, serviceName=\"%s\", "
-               "regtype=\"%s\", replyDomain=\"%s\", context=%p)",
-               sdRef, flags, interfaceIndex, errorCode, serviceName, regtype,
-               replyDomain, context));
+  DEBUG_printf(("5cups_dnssd_browse_cb(sdRef=%p, flags=%x, interfaceIndex=%d, errorCode=%d, serviceName=\"%s\", regtype=\"%s\", replyDomain=\"%s\", context=%p)", (void *)sdRef, flags, interfaceIndex, errorCode, serviceName, regtype, replyDomain, context));
 
  /*
   * Don't do anything on error...
@@ -2821,8 +2930,7 @@ cups_dnssd_free_device(
     _cups_dnssd_device_t *device,      /* I - Device */
     _cups_dnssd_data_t   *data)                /* I - Enumeration data */
 {
-  DEBUG_printf(("5cups_dnssd_free_device(device=%p(%s), data=%p)", device,
-                device->dest.name, data));
+  DEBUG_printf(("5cups_dnssd_free_device(device=%p(%s), data=%p)", (void *)device, device->dest.name, (void *)data));
 
 #  ifdef HAVE_DNSSD
   if (device->ref)
@@ -2860,9 +2968,7 @@ cups_dnssd_get_device(
                                        /* Full name for query */
 
 
-  DEBUG_printf(("5cups_dnssd_get_device(data=%p, serviceName=\"%s\", "
-                "regtype=\"%s\", replyDomain=\"%s\")", data, serviceName,
-                regtype, replyDomain));
+  DEBUG_printf(("5cups_dnssd_get_device(data=%p, serviceName=\"%s\", regtype=\"%s\", replyDomain=\"%s\")", (void *)data, serviceName, regtype, replyDomain));
 
  /*
   * See if this is an existing device...
@@ -2993,11 +3099,7 @@ cups_dnssd_local_cb(
   _cups_dnssd_device_t *device;        /* Device */
 
 
-  DEBUG_printf(("5cups_dnssd_local_cb(sdRef=%p, flags=%x, "
-               "interfaceIndex=%d, errorCode=%d, serviceName=\"%s\", "
-               "regtype=\"%s\", replyDomain=\"%s\", context=%p)",
-               sdRef, flags, interfaceIndex, errorCode, serviceName,
-               regtype, replyDomain, context));
+  DEBUG_printf(("5cups_dnssd_local_cb(sdRef=%p, flags=%x, interfaceIndex=%d, errorCode=%d, serviceName=\"%s\", regtype=\"%s\", replyDomain=\"%s\", context=%p)", (void *)sdRef, flags, interfaceIndex, errorCode, serviceName, regtype, replyDomain, context));
 
  /*
   * Only process "add" data...
@@ -3119,11 +3221,7 @@ cups_dnssd_query_cb(
 
 
 #  ifdef HAVE_DNSSD
-  DEBUG_printf(("5cups_dnssd_query_cb(sdRef=%p, flags=%x, "
-               "interfaceIndex=%d, errorCode=%d, fullName=\"%s\", "
-               "rrtype=%u, rrclass=%u, rdlen=%u, rdata=%p, ttl=%u, "
-               "context=%p)", sdRef, flags, interfaceIndex, errorCode,
-               fullName, rrtype, rrclass, rdlen, rdata, ttl, context));
+  DEBUG_printf(("5cups_dnssd_query_cb(sdRef=%p, flags=%x, interfaceIndex=%d, errorCode=%d, fullName=\"%s\", rrtype=%u, rrclass=%u, rdlen=%u, rdata=%p, ttl=%u, context=%p)", (void *)sdRef, flags, interfaceIndex, errorCode, fullName, rrtype, rrclass, rdlen, rdata, ttl, context));
 
  /*
   * Only process "add" data...
@@ -3269,22 +3367,28 @@ cups_dnssd_query_cb(
         */
 
         const char     *start, *next;  /* Pointer into value */
-        int            have_pdf = 0;   /* Have PDF? */
+        int            have_pdf = 0,   /* Have PDF? */
+                       have_raster = 0;/* Have raster format support? */
 
         for (start = value; start && *start; start = next)
         {
-          if (!_cups_strncasecmp(start, "application/pdf", 15) &&
-              (!start[15] || start[15] == ','))
+          if (!_cups_strncasecmp(start, "application/pdf", 15) && (!start[15] || start[15] == ','))
           {
             have_pdf = 1;
             break;
           }
+          else if ((!_cups_strncasecmp(start, "image/pwg-raster", 16) && (!start[16] || start[16] == ',')) ||
+                  (!_cups_strncasecmp(start, "image/urf", 9) && (!start[9] || start[9] == ',')))
+          {
+            have_raster = 1;
+            break;
+          }
 
           if ((next = strchr(start, ',')) != NULL)
             next ++;
         }
 
-        if (!have_pdf)
+        if (!have_pdf && !have_raster)
           device->state = _CUPS_DNSSD_INCOMPATIBLE;
       }
       else if (!_cups_strcasecmp(key, "printer-type"))
@@ -3350,31 +3454,21 @@ cups_dnssd_query_cb(
     * Save the printer-xxx values...
     */
 
-    device->dest.num_options = cupsAddOption("printer-info", name,
-                                            device->dest.num_options,
-                                            &device->dest.options);
+    device->dest.num_options = cupsAddOption("printer-info", name, device->dest.num_options, &device->dest.options);
 
     if (make_and_model[0])
     {
       strlcat(make_and_model, " ", sizeof(make_and_model));
       strlcat(make_and_model, model, sizeof(make_and_model));
 
-      device->dest.num_options = cupsAddOption("printer-make-and-model",
-                                              make_and_model,
-                                              device->dest.num_options,
-                                              &device->dest.options);
+      device->dest.num_options = cupsAddOption("printer-make-and-model", make_and_model, device->dest.num_options, &device->dest.options);
     }
     else
-      device->dest.num_options = cupsAddOption("printer-make-and-model",
-                                              model,
-                                              device->dest.num_options,
-                                              &device->dest.options);
+      device->dest.num_options = cupsAddOption("printer-make-and-model", model, device->dest.num_options, &device->dest.options);
 
     device->type = type;
     snprintf(value, sizeof(value), "%u", type);
-    device->dest.num_options = cupsAddOption("printer-type", value,
-                                            device->dest.num_options,
-                                            &device->dest.options);
+    device->dest.num_options = cupsAddOption("printer-type", value, device->dest.num_options, &device->dest.options);
 
    /*
     * Save the URI...
@@ -3385,11 +3479,9 @@ cups_dnssd_query_cb(
                     !strcmp(device->regtype, "_ipps._tcp") ? "ipps" : "ipp",
                     NULL, uriname, 0, saw_printer_type ? "/cups" : "/");
 
-    DEBUG_printf(("6cups_dnssd_query: printer-uri-supported=\"%s\"", uri));
+    DEBUG_printf(("6cups_dnssd_query: device-uri=\"%s\"", uri));
 
-    device->dest.num_options = cupsAddOption("printer-uri-supported", uri,
-                                            device->dest.num_options,
-                                            &device->dest.options);
+    device->dest.num_options = cupsAddOption("device-uri", uri, device->dest.num_options, &device->dest.options);
   }
   else
     DEBUG_printf(("6cups_dnssd_query: Ignoring TXT record for '%s'.",
@@ -3435,18 +3527,14 @@ cups_dnssd_resolve(
     resolve.end_time.tv_sec += 75;
 
   if (cb)
-    (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_RESOLVING,
-         dest);
+    (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_RESOLVING, dest);
 
-  if ((uri = _httpResolveURI(uri, tempuri, sizeof(tempuri),
-                            _HTTP_RESOLVE_FQDN, cups_dnssd_resolve_cb,
-                            &resolve)) == NULL)
+  if ((uri = _httpResolveURI(uri, tempuri, sizeof(tempuri), _HTTP_RESOLVE_DEFAULT, cups_dnssd_resolve_cb, &resolve)) == NULL)
   {
     _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to resolve printer-uri."), 1);
 
     if (cb)
-      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR,
-           dest);
+      (*cb)(user_data, CUPS_DEST_FLAGS_UNCONNECTED | CUPS_DEST_FLAGS_ERROR, dest);
 
     return (NULL);
   }
@@ -3455,11 +3543,9 @@ cups_dnssd_resolve(
   * Save the resolved URI...
   */
 
-  dest->num_options = cupsAddOption("printer-uri-supported", uri,
-                                   dest->num_options, &dest->options);
+  dest->num_options = cupsAddOption("resolved-device-uri", uri, dest->num_options, &dest->options);
 
-  return (cupsGetOption("printer-uri-supported", dest->num_options,
-                        dest->options));
+  return (cupsGetOption("resolved-device-uri", dest->num_options, dest->options));
 }
 
 
@@ -3479,8 +3565,11 @@ cups_dnssd_resolve_cb(void *context)     /* I - Resolve data */
   * If the cancel variable is set, return immediately.
   */
 
-  if (*resolve->cancel)
+  if (resolve->cancel && *(resolve->cancel))
+  {
+    DEBUG_puts("4cups_dnssd_resolve_cb: Canceled.");
     return (0);
+  }
 
  /*
   * Otherwise check the end time...
@@ -3488,9 +3577,11 @@ cups_dnssd_resolve_cb(void *context)     /* I - Resolve data */
 
   gettimeofday(&curtime, NULL);
 
-  return (curtime.tv_sec > resolve->end_time.tv_sec ||
+  DEBUG_printf(("4cups_dnssd_resolve_cb: curtime=%d.%06d, end_time=%d.%06d", (int)curtime.tv_sec, (int)curtime.tv_usec, (int)resolve->end_time.tv_sec, (int)resolve->end_time.tv_usec));
+
+  return (curtime.tv_sec < resolve->end_time.tv_sec ||
           (curtime.tv_sec == resolve->end_time.tv_sec &&
-           curtime.tv_usec > resolve->end_time.tv_usec));
+           curtime.tv_usec < resolve->end_time.tv_usec));
 }
 
 
@@ -3704,10 +3795,7 @@ cups_get_dests(
   int          linenum;                /* Current line number */
 
 
-  DEBUG_printf(("7cups_get_dests(filename=\"%s\", match_name=\"%s\", "
-                "match_inst=\"%s\", user_default_set=%d, num_dests=%d, "
-               "dests=%p)", filename, match_name, match_inst,
-               user_default_set, num_dests, dests));
+  DEBUG_printf(("7cups_get_dests(filename=\"%s\", match_name=\"%s\", match_inst=\"%s\", user_default_set=%d, num_dests=%d, dests=%p)", filename, match_name, match_inst, user_default_set, num_dests, (void *)dests));
 
  /*
   * Try to open the file...
@@ -3939,8 +4027,3 @@ cups_make_string(
 
   return (buffer);
 }
-
-
-/*
- * End of "$Id: dest.c 13075 2016-01-29 21:14:05Z msweet $".
- */
index 1bae123..074e659 100644 (file)
@@ -1,30 +1,16 @@
 /*
- * "$Id: dir.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Directory routines for CUPS.
  *
- *   Directory routines for CUPS.
+ * This set of APIs abstracts enumeration of directory entries.
  *
- *   This set of APIs abstracts enumeration of directory entries.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   _cups_dir_time() - Convert a FILETIME value to a UNIX time value.
- *   cupsDirClose()   - Close a directory.
- *   cupsDirOpen()    - Open a directory.
- *   cupsDirRead()    - Read the next directory entry.
- *   cupsDirRewind()  - Rewind to the start of the directory.
- *   cupsDirClose()   - Close a directory.
- *   cupsDirOpen()    - Open a directory.
- *   cupsDirRead()    - Read the next directory entry.
- *   cupsDirRewind()  - Rewind to the start of the directory.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -79,7 +65,7 @@ _cups_dir_time(FILETIME ft)           /* I - File time */
 /*
  * 'cupsDirClose()' - Close a directory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
@@ -110,7 +96,7 @@ cupsDirClose(cups_dir_t *dp)         /* I - Directory pointer */
 /*
  * 'cupsDirOpen()' - Open a directory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_dir_t *                           /* O - Directory pointer or @code NULL@ if the directory could not be opened. */
@@ -153,7 +139,7 @@ cupsDirOpen(const char *directory)  /* I - Directory name */
 /*
  * 'cupsDirRead()' - Read the next directory entry.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_dentry_t *                                /* O - Directory entry or @code NULL@ if there are no more */
@@ -213,7 +199,7 @@ cupsDirRead(cups_dir_t *dp)         /* I - Directory pointer */
 /*
  * 'cupsDirRewind()' - Rewind to the start of the directory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
@@ -263,13 +249,13 @@ struct _cups_dir_s                        /**** Directory data structure ****/
 /*
  * 'cupsDirClose()' - Close a directory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
 cupsDirClose(cups_dir_t *dp)           /* I - Directory pointer */
 {
-  DEBUG_printf(("cupsDirClose(dp=%p)", dp));
+  DEBUG_printf(("cupsDirClose(dp=%p)", (void *)dp));
 
  /*
   * Range check input...
@@ -290,7 +276,7 @@ cupsDirClose(cups_dir_t *dp)                /* I - Directory pointer */
 /*
  * 'cupsDirOpen()' - Open a directory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_dir_t *                           /* O - Directory pointer or @code NULL@ if the directory could not be opened. */
@@ -344,7 +330,7 @@ cupsDirOpen(const char *directory)  /* I - Directory name */
 /*
  * 'cupsDirRead()' - Read the next directory entry.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_dentry_t *                                /* O - Directory entry or @code NULL@ when there are no more */
@@ -358,7 +344,7 @@ cupsDirRead(cups_dir_t *dp)         /* I - Directory pointer */
 #  endif /* HAVE_PTHREAD_H */
 
 
-  DEBUG_printf(("2cupsDirRead(dp=%p)", dp));
+  DEBUG_printf(("2cupsDirRead(dp=%p)", (void *)dp));
 
  /*
   * Range check input...
@@ -442,13 +428,13 @@ cupsDirRead(cups_dir_t *dp)               /* I - Directory pointer */
 /*
  * 'cupsDirRewind()' - Rewind to the start of the directory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
 cupsDirRewind(cups_dir_t *dp)          /* I - Directory pointer */
 {
-  DEBUG_printf(("cupsDirRewind(dp=%p)", dp));
+  DEBUG_printf(("cupsDirRewind(dp=%p)", (void *)dp));
 
  /*
   * Range check input...
@@ -463,10 +449,4 @@ cupsDirRewind(cups_dir_t *dp)              /* I - Directory pointer */
 
   rewinddir(dp->dir);
 }
-
-
 #endif /* WIN32 */
-
-/*
- * End of "$Id: dir.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index ad8278c..98a6767 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: dir.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Public directory definitions for CUPS.
  *
- *   Public directory definitions for CUPS.
+ * This set of APIs abstracts enumeration of directory entries.
  *
- *   This set of APIs abstracts enumeration of directory entries.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #ifndef _CUPS_DIR_H_
@@ -63,7 +61,3 @@ extern void           cupsDirRewind(cups_dir_t *dp) _CUPS_API_1_2;
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_DIR_H_ */
-
-/*
- * End of "$Id: dir.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 26c5efe..d26d86d 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: encode.c 13064 2016-01-27 16:05:09Z msweet $"
- *
  * Option encoding routines for CUPS.
  *
  * Copyright 2007-2016 by Apple Inc.
@@ -281,6 +279,7 @@ static const _ipp_option_t ipp_options[] =
   { 0, "printer-info",         IPP_TAG_TEXT,           IPP_TAG_PRINTER },
   { 0, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN,   IPP_TAG_PRINTER },
   { 0, "printer-is-shared",    IPP_TAG_BOOLEAN,        IPP_TAG_PRINTER },
+  { 0, "printer-is-temporary", IPP_TAG_BOOLEAN,        IPP_TAG_PRINTER },
   { 0, "printer-location",     IPP_TAG_TEXT,           IPP_TAG_PRINTER },
   { 0, "printer-make-and-model", IPP_TAG_TEXT,         IPP_TAG_PRINTER },
   { 0, "printer-more-info",    IPP_TAG_URI,            IPP_TAG_PRINTER },
@@ -339,7 +338,7 @@ cupsEncodeOptions(ipp_t         *ipp,               /* I - Request to add to */
                  int           num_options,    /* I - Number of options */
                  cups_option_t *options)       /* I - Options */
 {
-  DEBUG_printf(("cupsEncodeOptions(%p, %d, %p)", ipp, num_options, options));
+  DEBUG_printf(("cupsEncodeOptions(%p, %d, %p)", (void *)ipp, num_options, (void *)options));
 
  /*
   * Add the options in the proper groups & order...
@@ -358,7 +357,7 @@ cupsEncodeOptions(ipp_t         *ipp,               /* I - Request to add to */
  * function multiple times for each group, or use cupsEncodeOptions()
  * to add the standard groups.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
@@ -385,10 +384,7 @@ cupsEncodeOptions2(
   const ipp_op_t       *ops;           /* List of allowed operations */
 
 
-  DEBUG_printf(("cupsEncodeOptions2(ipp=%p(%s), num_options=%d, options=%p, "
-                "group_tag=%x)", ipp,
-                ipp ? ippOpString(ippGetOperation(ipp)) : "", num_options,
-                options, group_tag));
+  DEBUG_printf(("cupsEncodeOptions2(ipp=%p(%s), num_options=%d, options=%p, group_tag=%x)", (void *)ipp, ipp ? ippOpString(ippGetOperation(ipp)) : "", num_options, (void *)options, group_tag));
 
  /*
   * Range check input...
@@ -850,8 +846,3 @@ compare_ipp_options(_ipp_option_t *a,       /* I - First option */
 {
   return (strcmp(a->name, b->name));
 }
-
-
-/*
- * End of "$Id: encode.c 13064 2016-01-27 16:05:09Z msweet $".
- */
index 7a34207..6ce11cf 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: file-private.h 11627 2014-02-20 16:15:09Z msweet $"
- *
  * Private file definitions for CUPS.
  *
  * Since stdio files max out at 256 files on many systems, we have to
@@ -133,7 +131,3 @@ extern void                 _cupsFileCheckFilter(void *context,
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_FILE_PRIVATE_H_ */
-
-/*
- * End of "$Id: file-private.h 11627 2014-02-20 16:15:09Z msweet $".
- */
index a69f0f9..b81bfe8 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: file.c 12641 2015-05-19 15:04:39Z msweet $"
- *
  * File functions for CUPS.
  *
  * Since stdio files max out at 256 files on many systems, we have to
@@ -314,7 +312,7 @@ _cupsFileCheckFilter(
 /*
  * 'cupsFileClose()' - Close a CUPS file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -326,7 +324,7 @@ cupsFileClose(cups_file_t *fp)              /* I - CUPS file */
   int  is_stdio;                       /* Is a stdio file? */
 
 
-  DEBUG_printf(("cupsFileClose(fp=%p)", fp));
+  DEBUG_printf(("cupsFileClose(fp=%p)", (void *)fp));
 
  /*
   * Range check...
@@ -446,7 +444,7 @@ cupsFileClose(cups_file_t *fp)              /* I - CUPS file */
 /*
  * 'cupsFileCompression()' - Return whether a file is compressed.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - @code CUPS_FILE_NONE@ or @code CUPS_FILE_GZIP@ */
@@ -459,7 +457,7 @@ cupsFileCompression(cups_file_t *fp)        /* I - CUPS file */
 /*
  * 'cupsFileEOF()' - Return the end-of-file status.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 1 on end of file, 0 otherwise */
@@ -478,7 +476,7 @@ cupsFileEOF(cups_file_t *fp)                /* I - CUPS file */
  * the supplied paths, @code NULL@ is returned. A @code NULL@ path only
  * matches the current directory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 const char *                           /* O - Full path to file or @code NULL@ if not found */
@@ -496,9 +494,7 @@ cupsFileFind(const char *filename,  /* I - File to find */
   * Range check input...
   */
 
-  DEBUG_printf(("cupsFileFind(filename=\"%s\", path=\"%s\", executable=%d, "
-                "buffer=%p, bufsize=%d)", filename, path, executable, buffer,
-               bufsize));
+  DEBUG_printf(("cupsFileFind(filename=\"%s\", path=\"%s\", executable=%d, buffer=%p, bufsize=%d)", filename, path, executable, (void *)buffer, bufsize));
 
   if (!filename || !buffer || bufsize < 2)
     return (NULL);
@@ -581,7 +577,7 @@ cupsFileFind(const char *filename,  /* I - File to find */
 /*
  * 'cupsFileFlush()' - Flush pending output.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -590,7 +586,7 @@ cupsFileFlush(cups_file_t *fp)              /* I - CUPS file */
   ssize_t      bytes;                  /* Bytes to write */
 
 
-  DEBUG_printf(("cupsFileFlush(fp=%p)", fp));
+  DEBUG_printf(("cupsFileFlush(fp=%p)", (void *)fp));
 
  /*
   * Range check input...
@@ -629,7 +625,7 @@ cupsFileFlush(cups_file_t *fp)              /* I - CUPS file */
 /*
  * 'cupsFileGetChar()' - Get a single character from a file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - Character or -1 on end of file */
@@ -639,7 +635,7 @@ cupsFileGetChar(cups_file_t *fp)    /* I - CUPS file */
   * Range check input...
   */
 
-  DEBUG_printf(("4cupsFileGetChar(fp=%p)", fp));
+  DEBUG_printf(("4cupsFileGetChar(fp=%p)", (void *)fp));
 
   if (!fp || (fp->mode != 'r' && fp->mode != 's'))
   {
@@ -651,7 +647,7 @@ cupsFileGetChar(cups_file_t *fp)    /* I - CUPS file */
   * If the input buffer is empty, try to read more data...
   */
 
-  DEBUG_printf(("5cupsFileGetChar: fp->eof=%d, fp->ptr=%p, fp->end=%p", fp->eof, fp->ptr, fp->end));
+  DEBUG_printf(("5cupsFileGetChar: fp->eof=%d, fp->ptr=%p, fp->end=%p", fp->eof, (void *)fp->ptr, (void *)fp->end));
 
   if (fp->ptr >= fp->end)
     if (cups_fill(fp) <= 0)
@@ -677,7 +673,7 @@ cupsFileGetChar(cups_file_t *fp)    /* I - CUPS file */
 /*
  * 'cupsFileGetConf()' - Get a line from a configuration file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 char *                                 /* O  - Line read or @code NULL@ on end of file or error */
@@ -695,8 +691,7 @@ cupsFileGetConf(cups_file_t *fp,    /* I  - CUPS file */
   */
 
   DEBUG_printf(("2cupsFileGetConf(fp=%p, buf=%p, buflen=" CUPS_LLFMT
-                ", value=%p, linenum=%p)", fp, buf, CUPS_LLCAST buflen,
-               value, linenum));
+                ", value=%p, linenum=%p)", (void *)fp, (void *)buf, CUPS_LLCAST buflen, (void *)value, (void *)linenum));
 
   if (!fp || (fp->mode != 'r' && fp->mode != 's') ||
       !buf || buflen < 2 || !value)
@@ -821,7 +816,7 @@ cupsFileGetConf(cups_file_t *fp,    /* I  - CUPS file */
  * nul-terminated, however you should use the returned length to determine
  * the number of bytes on the line.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 size_t                                 /* O - Number of bytes on line or 0 on end of file */
@@ -838,8 +833,7 @@ cupsFileGetLine(cups_file_t *fp,    /* I - File to read from */
   * Range check input...
   */
 
-  DEBUG_printf(("2cupsFileGetLine(fp=%p, buf=%p, buflen=" CUPS_LLFMT ")",
-                fp, buf, CUPS_LLCAST buflen));
+  DEBUG_printf(("2cupsFileGetLine(fp=%p, buf=%p, buflen=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST buflen));
 
   if (!fp || (fp->mode != 'r' && fp->mode != 's') || !buf || buflen < 3)
     return (0);
@@ -896,7 +890,7 @@ cupsFileGetLine(cups_file_t *fp,    /* I - File to read from */
 /*
  * 'cupsFileGets()' - Get a CR and/or LF-terminated line.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 char *                                 /* O - Line read or @code NULL@ on end of file or error */
@@ -913,8 +907,7 @@ cupsFileGets(cups_file_t *fp,               /* I - CUPS file */
   * Range check input...
   */
 
-  DEBUG_printf(("2cupsFileGets(fp=%p, buf=%p, buflen=" CUPS_LLFMT ")", fp, buf,
-                CUPS_LLCAST buflen));
+  DEBUG_printf(("2cupsFileGets(fp=%p, buf=%p, buflen=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST buflen));
 
   if (!fp || (fp->mode != 'r' && fp->mode != 's') || !buf || buflen < 2)
     return (NULL);
@@ -978,7 +971,7 @@ cupsFileGets(cups_file_t *fp,               /* I - CUPS file */
 /*
  * 'cupsFileLock()' - Temporarily lock access to a file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -1007,7 +1000,7 @@ cupsFileLock(cups_file_t *fp,             /* I - CUPS file */
 /*
  * 'cupsFileNumber()' - Return the file descriptor associated with a CUPS file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - File descriptor */
@@ -1036,7 +1029,7 @@ cupsFileNumber(cups_file_t *fp)           /* I - CUPS file */
  * connection as needed, generally preferring IPv6 connections when there is
  * a choice.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_file_t *                          /* O - CUPS file or @code NULL@ if the file or socket cannot be opened */
@@ -1158,7 +1151,7 @@ cupsFileOpen(const char *filename,        /* I - Name of file */
  * supplied which enables Flate compression of the file.  Compression is
  * not supported for the "a" (append) mode.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_file_t *                          /* O - CUPS file or @code NULL@ if the file could not be opened */
@@ -1270,7 +1263,7 @@ cupsFileOpenFd(int        fd,             /* I - File descriptor */
 /*
  * 'cupsFilePeekChar()' - Peek at the next character from a file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - Character or -1 on end of file */
@@ -1302,7 +1295,7 @@ cupsFilePeekChar(cups_file_t *fp) /* I - CUPS file */
 /*
  * 'cupsFilePrintf()' - Write a formatted string.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - Number of bytes written or -1 on error */
@@ -1314,7 +1307,7 @@ cupsFilePrintf(cups_file_t *fp,           /* I - CUPS file */
   ssize_t      bytes;                  /* Formatted size */
 
 
-  DEBUG_printf(("2cupsFilePrintf(fp=%p, format=\"%s\", ...)", fp, format));
+  DEBUG_printf(("2cupsFilePrintf(fp=%p, format=\"%s\", ...)", (void *)fp, format));
 
   if (!fp || !format || (fp->mode != 'w' && fp->mode != 's'))
     return (-1);
@@ -1399,7 +1392,7 @@ cupsFilePrintf(cups_file_t *fp,           /* I - CUPS file */
 /*
  * 'cupsFilePutChar()' - Write a character.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -1453,7 +1446,7 @@ cupsFilePutChar(cups_file_t *fp,  /* I - CUPS file */
  *
  * This function handles any comment escaping of the value.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 ssize_t                                        /* O - Number of bytes written or -1 on error */
@@ -1514,7 +1507,7 @@ cupsFilePutConf(cups_file_t *fp,  /* I - CUPS file */
  *
  * Like the @code fputs@ function, no newline is appended to the string.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - Number of bytes written or -1 on error */
@@ -1578,7 +1571,7 @@ cupsFilePuts(cups_file_t *fp,             /* I - CUPS file */
 /*
  * 'cupsFileRead()' - Read from a file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ssize_t                                        /* O - Number of bytes read or -1 on error */
@@ -1590,8 +1583,7 @@ cupsFileRead(cups_file_t *fp,             /* I - CUPS file */
   ssize_t      count;                  /* Bytes read */
 
 
-  DEBUG_printf(("2cupsFileRead(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", fp, buf,
-                CUPS_LLCAST bytes));
+  DEBUG_printf(("2cupsFileRead(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes));
 
  /*
   * Range check input...
@@ -1655,7 +1647,7 @@ cupsFileRead(cups_file_t *fp,             /* I - CUPS file */
  * 'cupsFileRewind()' - Set the current file position to the beginning of the
  *                      file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 off_t                                  /* O - New file position or -1 on error */
@@ -1665,7 +1657,7 @@ cupsFileRewind(cups_file_t *fp)           /* I - CUPS file */
   * Range check input...
   */
 
-  DEBUG_printf(("cupsFileRewind(fp=%p)", fp));
+  DEBUG_printf(("cupsFileRewind(fp=%p)", (void *)fp));
   DEBUG_printf(("2cupsFileRewind: pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos));
 
   if (!fp || fp->mode != 'r')
@@ -1727,7 +1719,7 @@ cupsFileRewind(cups_file_t *fp)           /* I - CUPS file */
 /*
  * 'cupsFileSeek()' - Seek in a file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 off_t                                  /* O - New file position or -1 on error */
@@ -1737,10 +1729,9 @@ cupsFileSeek(cups_file_t *fp,            /* I - CUPS file */
   ssize_t      bytes;                  /* Number bytes in buffer */
 
 
-  DEBUG_printf(("cupsFileSeek(fp=%p, pos=" CUPS_LLFMT ")", fp,
-                CUPS_LLCAST pos));
+  DEBUG_printf(("cupsFileSeek(fp=%p, pos=" CUPS_LLFMT ")", (void *)fp, CUPS_LLCAST pos));
   DEBUG_printf(("2cupsFileSeek: fp->pos=" CUPS_LLFMT, CUPS_LLCAST fp->pos));
-  DEBUG_printf(("2cupsFileSeek: fp->ptr=%p, fp->end=%p", fp->ptr, fp->end));
+  DEBUG_printf(("2cupsFileSeek: fp->ptr=%p, fp->end=%p", (void *)fp->ptr, (void *)fp->end));
 
  /*
   * Range check input...
@@ -1880,7 +1871,7 @@ cupsFileSeek(cups_file_t *fp,             /* I - CUPS file */
 /*
  * 'cupsFileStderr()' - Return a CUPS file associated with stderr.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_file_t *                          /* O - CUPS file */
@@ -1916,7 +1907,7 @@ cupsFileStderr(void)
 /*
  * 'cupsFileStdin()' - Return a CUPS file associated with stdin.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_file_t *                          /* O - CUPS file */
@@ -1946,7 +1937,7 @@ cupsFileStdin(void)
 /*
  * 'cupsFileStdout()' - Return a CUPS file associated with stdout.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_file_t *                          /* O - CUPS file */
@@ -1982,15 +1973,14 @@ cupsFileStdout(void)
 /*
  * 'cupsFileTell()' - Return the current file position.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 off_t                                  /* O - File position */
 cupsFileTell(cups_file_t *fp)          /* I - CUPS file */
 {
-  DEBUG_printf(("2cupsFileTell(fp=%p)", fp));
-  DEBUG_printf(("3cupsFileTell: pos=" CUPS_LLFMT,
-               CUPS_LLCAST (fp ? fp->pos : -1)));
+  DEBUG_printf(("2cupsFileTell(fp=%p)", (void *)fp));
+  DEBUG_printf(("3cupsFileTell: pos=" CUPS_LLFMT, CUPS_LLCAST (fp ? fp->pos : -1)));
 
   return (fp ? fp->pos : 0);
 }
@@ -1999,7 +1989,7 @@ cupsFileTell(cups_file_t *fp)             /* I - CUPS file */
 /*
  * 'cupsFileUnlock()' - Unlock access to a file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -2009,7 +1999,7 @@ cupsFileUnlock(cups_file_t *fp)           /* I - CUPS file */
   * Range check...
   */
 
-  DEBUG_printf(("cupsFileUnlock(fp=%p)", fp));
+  DEBUG_printf(("cupsFileUnlock(fp=%p)", (void *)fp));
 
   if (!fp || fp->mode == 's')
     return (-1);
@@ -2029,7 +2019,7 @@ cupsFileUnlock(cups_file_t *fp)           /* I - CUPS file */
 /*
  * 'cupsFileWrite()' - Write to a file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ssize_t                                        /* O - Number of bytes written or -1 on error */
@@ -2041,8 +2031,7 @@ cupsFileWrite(cups_file_t *fp,            /* I - CUPS file */
   * Range check input...
   */
 
-  DEBUG_printf(("2cupsFileWrite(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")",
-                fp, buf, CUPS_LLCAST bytes));
+  DEBUG_printf(("2cupsFileWrite(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes));
 
   if (!fp || !buf || (fp->mode != 'w' && fp->mode != 's'))
     return (-1);
@@ -2102,8 +2091,7 @@ cups_compress(cups_file_t *fp,            /* I - CUPS file */
               const char  *buf,                /* I - Buffer */
              size_t      bytes)        /* I - Number bytes */
 {
-  DEBUG_printf(("7cups_compress(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", fp, buf,
-                CUPS_LLCAST bytes));
+  DEBUG_printf(("7cups_compress(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes));
 
  /*
   * Update the CRC...
@@ -2159,10 +2147,8 @@ cups_fill(cups_file_t *fp)               /* I - CUPS file */
 #endif /* HAVE_LIBZ */
 
 
-  DEBUG_printf(("7cups_fill(fp=%p)", fp));
-  DEBUG_printf(("9cups_fill: fp->ptr=%p, fp->end=%p, fp->buf=%p, "
-                "fp->bufpos=" CUPS_LLFMT ", fp->eof=%d",
-                fp->ptr, fp->end, fp->buf, CUPS_LLCAST fp->bufpos, fp->eof));
+  DEBUG_printf(("7cups_fill(fp=%p)", (void *)fp));
+  DEBUG_printf(("9cups_fill: fp->ptr=%p, fp->end=%p, fp->buf=%p, fp->bufpos=" CUPS_LLFMT ", fp->eof=%d", (void *)fp->ptr, (void *)fp->end, (void *)fp->buf, CUPS_LLCAST fp->bufpos, fp->eof));
 
   if (fp->ptr && fp->end)
     fp->bufpos += fp->end - fp->buf;
@@ -2641,8 +2627,7 @@ cups_read(cups_file_t *fp,                /* I - CUPS file */
   ssize_t      total;                  /* Total bytes read */
 
 
-  DEBUG_printf(("7cups_read(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", fp, buf,
-                CUPS_LLCAST bytes));
+  DEBUG_printf(("7cups_read(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes));
 
  /*
   * Loop until we read at least 0 bytes...
@@ -2698,8 +2683,7 @@ cups_write(cups_file_t *fp,               /* I - CUPS file */
   ssize_t      count;                  /* Count this time */
 
 
-  DEBUG_printf(("7cups_write(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", fp, buf,
-                CUPS_LLCAST bytes));
+  DEBUG_printf(("7cups_write(fp=%p, buf=%p, bytes=" CUPS_LLFMT ")", (void *)fp, (void *)buf, CUPS_LLCAST bytes));
 
  /*
   * Loop until all bytes are written...
@@ -2749,8 +2733,3 @@ cups_write(cups_file_t *fp,               /* I - CUPS file */
 
   return ((ssize_t)total);
 }
-
-
-/*
- * End of "$Id: file.c 12641 2015-05-19 15:04:39Z msweet $".
- */
index 43bf294..8a4289f 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: file.h 11627 2014-02-20 16:15:09Z msweet $"
- *
  * Public file definitions for CUPS.
  *
  * Since stdio files max out at 256 files on many systems, we have to
@@ -112,7 +110,3 @@ extern ssize_t              cupsFileWrite(cups_file_t *fp, const char *buf,
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_FILE_H_ */
-
-/*
- * End of "$Id: file.h 11627 2014-02-20 16:15:09Z msweet $".
- */
index ea862a7..13bebd2 100644 (file)
@@ -1,21 +1,15 @@
 /*
- * "$Id: getdevices.c 4216 2013-03-11 13:57:36Z msweet $"
+ * cupsGetDevices implementation for CUPS.
  *
- *   cupsGetDevices implementation for CUPS.
+ * Copyright 2008-2016 by Apple Inc.
  *
- *   Copyright 2008-2013 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   cupsGetDevices() - Get available printer devices.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -23,6 +17,7 @@
  */
 
 #include "cups-private.h"
+#include "adminutil.h"
 
 
 /*
@@ -34,7 +29,7 @@
  * parameters provide comma-delimited lists of backends to include or omit from
  * the request respectively.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 ipp_status_t                           /* O - Request status - @code IPP_OK@ on success. */
@@ -65,10 +60,7 @@ cupsGetDevices(
   * Range check input...
   */
 
-  DEBUG_printf(("cupsGetDevices(http=%p, timeout=%d, include_schemes=\"%s\", "
-                "exclude_schemes=\"%s\", callback=%p, user_data=%p)", http,
-               timeout, include_schemes, exclude_schemes, callback,
-               user_data));
+  DEBUG_printf(("cupsGetDevices(http=%p, timeout=%d, include_schemes=\"%s\", exclude_schemes=\"%s\", callback=%p, user_data=%p)", (void *)http, timeout, include_schemes, exclude_schemes, (void *)callback, user_data));
 
   if (!callback)
     return (IPP_STATUS_ERROR_INTERNAL);
@@ -190,8 +182,7 @@ cupsGetDevices(
     if ((state = ippRead(http, response)) == IPP_STATE_ERROR)
       break;
 
-    DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state,
-                  response->last));
+    DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state, (void *)response->last));
 
     if (!response->attrs)
       continue;
@@ -243,8 +234,7 @@ cupsGetDevices(
   }
   while (state != IPP_STATE_DATA);
 
-  DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state,
-               response->last));
+  DEBUG_printf(("2cupsGetDevices: state=%d, response->last=%p", state, (void *)response->last));
 
   if (device_class && device_id && device_info && device_make_and_model &&
       device_uri)
@@ -277,8 +267,3 @@ cupsGetDevices(
 
   return (cupsLastError());
 }
-
-
-/*
- * End of "$Id: getdevices.c 4216 2013-03-11 13:57:36Z msweet $".
- */
index 02903a7..82653a9 100644 (file)
@@ -1,21 +1,14 @@
 /*
- * "$Id: getifaddrs.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Network interface functions for CUPS.
  *
- *   Network interface functions for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   "LICENSE" which should have been included with this file.  If this
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   _cups_getifaddrs()  - Get a list of network interfaces on the system.
- *   _cups_freeifaddrs() - Free an interface list...
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * "LICENSE" which should have been included with this file.  If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -259,8 +252,3 @@ _cups_freeifaddrs(struct ifaddrs *addrs)/* I - Interface list to free */
   }
 }
 #endif /* !HAVE_GETIFADDRS */
-
-
-/*
- * End of "$Id: getifaddrs.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 73d2142..76a3093 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: getputfile.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Get/put file functions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -34,7 +32,7 @@
  *
  * This function returns @code HTTP_STATUS_OK@ when the file is successfully retrieved.
  *
- * @since CUPS 1.1.20/OS X 10.4@
+ * @since CUPS 1.1.20/macOS 10.4@
  */
 
 http_status_t                          /* O - HTTP status */
@@ -53,8 +51,7 @@ cupsGetFd(http_t     *http,           /* I - Connection to server or @code CUPS_HTTP_DEFA
   * Range check input...
   */
 
-  DEBUG_printf(("cupsGetFd(http=%p, resource=\"%s\", fd=%d)", http,
-                resource, fd));
+  DEBUG_printf(("cupsGetFd(http=%p, resource=\"%s\", fd=%d)", (void *)http, resource, fd));
 
   if (!resource || fd < 0)
   {
@@ -190,7 +187,7 @@ cupsGetFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
  *
  * This function returns @code HTTP_STATUS_OK@ when the file is successfully retrieved.
  *
- * @since CUPS 1.1.20/OS X 10.4@
+ * @since CUPS 1.1.20/macOS 10.4@
  */
 
 http_status_t                          /* O - HTTP status */
@@ -258,7 +255,7 @@ cupsGetFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
  * This function returns @code HTTP_STATUS_CREATED@ when the file is stored
  * successfully.
  *
- * @since CUPS 1.1.20/OS X 10.4@
+ * @since CUPS 1.1.20/macOS 10.4@
  */
 
 http_status_t                          /* O - HTTP status */
@@ -276,8 +273,7 @@ cupsPutFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
   * Range check input...
   */
 
-  DEBUG_printf(("cupsPutFd(http=%p, resource=\"%s\", fd=%d)", http,
-                resource, fd));
+  DEBUG_printf(("cupsPutFd(http=%p, resource=\"%s\", fd=%d)", (void *)http, resource, fd));
 
   if (!resource || fd < 0)
   {
@@ -459,7 +455,7 @@ cupsPutFd(http_t     *http,         /* I - Connection to server or @code CUPS_HTTP_DEFA
  * This function returns @code HTTP_CREATED@ when the file is stored
  * successfully.
  *
- * @since CUPS 1.1.20/OS X 10.4@
+ * @since CUPS 1.1.20/macOS 10.4@
  */
 
 http_status_t                          /* O - HTTP status */
@@ -508,8 +504,3 @@ cupsPutFile(http_t     *http,               /* I - Connection to server or @code CUPS_HTTP_DE
 
   return (status);
 }
-
-
-/*
- * End of "$Id: getputfile.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 4b041f4..276bbcf 100644 (file)
@@ -1,29 +1,16 @@
 /*
- * "$Id: globals.c 12480 2015-02-03 12:36:34Z msweet $"
+ * Global variable access routines for CUPS.
  *
- *   Global variable access routines for CUPS.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   _cupsGlobalLock()    - Lock the global mutex.
- *   _cupsGlobals()       - Return a pointer to thread local storage
- *   _cupsGlobalUnlock()  - Unlock the global mutex.
- *   DllMain()            - Main entry for library.
- *   cups_fix_path()      - Fix a file path to use forward slashes consistently.
- *   cups_globals_alloc() - Allocate and initialize global data.
- *   cups_globals_free()  - Free global data.
- *   cups_globals_init()  - Initialize environment variables.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -37,7 +24,6 @@
  * Local globals...
  */
 
-
 #ifdef DEBUG
 static int             cups_global_index = 0;
                                        /* Next thread number */
@@ -216,6 +202,7 @@ cups_globals_alloc(void)
   memset(cg, 0, sizeof(_cups_globals_t));
   cg->encryption     = (http_encryption_t)-1;
   cg->password_cb    = (cups_password_cb2_t)_cupsGetPassword;
+  cg->trust_first    = -1;
   cg->any_root       = -1;
   cg->expired_certs  = -1;
   cg->validate_certs = -1;
@@ -391,8 +378,3 @@ cups_globals_init(void)
   pthread_key_create(&cups_globals_key, (void (*)(void *))cups_globals_free);
 }
 #endif /* HAVE_PTHREAD_H */
-
-
-/*
- * End of "$Id: globals.c 12480 2015-02-03 12:36:34Z msweet $".
- */
diff --git a/cups/hash.c b/cups/hash.c
new file mode 100644 (file)
index 0000000..6b7b6da
--- /dev/null
@@ -0,0 +1,245 @@
+/*
+ * Hashing function for CUPS.
+ *
+ * Copyright 2015 by Apple Inc.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "cups-private.h"
+#ifdef __APPLE__
+#  include <CommonCrypto/CommonDigest.h>
+#elif defined(HAVE_GNUTLS)
+#  include <gnutls/crypto.h>
+#endif /* __APPLE__ */
+
+
+/*
+ * 'cupsHashData()' - Perform a hash function on the given data.
+ *
+ * The "algorithm" argument can be any of the registered, non-deprecated IPP
+ * hash algorithms for the "job-password-encryption" attribute, including
+ * "sha" for SHA-1, "sha-256" for SHA2-256, etc.
+ *
+ * The "hash" argument points to a buffer of "hashsize" bytes and should be at
+ * least 64 bytes in length for all of the supported algorithms.
+ *
+ * The returned hash is binary data.
+ *
+ * @since CUPS 2.2/macOS 10.12@
+ */
+
+ssize_t                                        /* O - Size of hash or -1 on error */
+cupsHashData(const char    *algorithm, /* I - Algorithm name */
+             const void    *data,      /* I - Data to hash */
+             size_t        datalen,    /* I - Length of data to hash */
+             unsigned char *hash,      /* I - Hash buffer */
+             size_t        hashsize)   /* I - Size of hash buffer */
+{
+  if (!algorithm || !data || datalen == 0 || !hash || hashsize == 0)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad arguments to function"), 1);
+    return (-1);
+  }
+
+#ifdef __APPLE__
+  if (strcmp(algorithm, "sha"))
+  {
+   /*
+    * SHA-1...
+    */
+
+    CC_SHA1_CTX        ctx;                    /* SHA-1 context */
+
+    if (hashsize < CC_SHA1_DIGEST_LENGTH)
+      goto too_small;
+
+    CC_SHA1_Init(&ctx);
+    CC_SHA1_Update(&ctx, data, (CC_LONG)datalen);
+    CC_SHA1_Final(hash, &ctx);
+
+    return (CC_SHA1_DIGEST_LENGTH);
+  }
+  else if (strcmp(algorithm, "sha2-224"))
+  {
+    CC_SHA256_CTX      ctx;            /* SHA-224 context */
+
+    if (hashsize < CC_SHA224_DIGEST_LENGTH)
+      goto too_small;
+
+    CC_SHA224_Init(&ctx);
+    CC_SHA224_Update(&ctx, data, (CC_LONG)datalen);
+    CC_SHA224_Final(hash, &ctx);
+
+    return (CC_SHA224_DIGEST_LENGTH);
+  }
+  else if (strcmp(algorithm, "sha2-256"))
+  {
+    CC_SHA256_CTX      ctx;            /* SHA-256 context */
+
+    if (hashsize < CC_SHA256_DIGEST_LENGTH)
+      goto too_small;
+
+    CC_SHA256_Init(&ctx);
+    CC_SHA256_Update(&ctx, data, (CC_LONG)datalen);
+    CC_SHA256_Final(hash, &ctx);
+
+    return (CC_SHA256_DIGEST_LENGTH);
+  }
+  else if (strcmp(algorithm, "sha2-384"))
+  {
+    CC_SHA512_CTX      ctx;            /* SHA-384 context */
+
+    if (hashsize < CC_SHA384_DIGEST_LENGTH)
+      goto too_small;
+
+    CC_SHA384_Init(&ctx);
+    CC_SHA384_Update(&ctx, data, (CC_LONG)datalen);
+    CC_SHA384_Final(hash, &ctx);
+
+    return (CC_SHA384_DIGEST_LENGTH);
+  }
+  else if (strcmp(algorithm, "sha2-512"))
+  {
+    CC_SHA512_CTX      ctx;            /* SHA-512 context */
+
+    if (hashsize < CC_SHA512_DIGEST_LENGTH)
+      goto too_small;
+
+    CC_SHA512_Init(&ctx);
+    CC_SHA512_Update(&ctx, data, (CC_LONG)datalen);
+    CC_SHA512_Final(hash, &ctx);
+
+    return (CC_SHA512_DIGEST_LENGTH);
+  }
+  else if (strcmp(algorithm, "sha2-512_224"))
+  {
+    CC_SHA512_CTX      ctx;            /* SHA-512 context */
+    unsigned char      temp[CC_SHA512_DIGEST_LENGTH];
+                                        /* SHA-512 hash */
+
+   /*
+    * SHA2-512 truncated to 224 bits (28 bytes)...
+    */
+
+    if (hashsize < CC_SHA224_DIGEST_LENGTH)
+      goto too_small;
+
+    CC_SHA512_Init(&ctx);
+    CC_SHA512_Update(&ctx, data, (CC_LONG)datalen);
+    CC_SHA512_Final(temp, &ctx);
+
+    memcpy(hash, temp, CC_SHA224_DIGEST_LENGTH);
+
+    return (CC_SHA224_DIGEST_LENGTH);
+  }
+  else if (strcmp(algorithm, "sha2-512_256"))
+  {
+    CC_SHA512_CTX      ctx;            /* SHA-512 context */
+    unsigned char      temp[CC_SHA512_DIGEST_LENGTH];
+                                        /* SHA-512 hash */
+
+   /*
+    * SHA2-512 truncated to 256 bits (32 bytes)...
+    */
+
+    if (hashsize < CC_SHA256_DIGEST_LENGTH)
+      goto too_small;
+
+    CC_SHA512_Init(&ctx);
+    CC_SHA512_Update(&ctx, data, (CC_LONG)datalen);
+    CC_SHA512_Final(temp, &ctx);
+
+    memcpy(hash, temp, CC_SHA256_DIGEST_LENGTH);
+
+    return (CC_SHA256_DIGEST_LENGTH);
+  }
+
+#elif defined(HAVE_GNUTLS)
+  gnutls_digest_algorithm_t alg = GNUTLS_DIG_UNKNOWN;
+                                       /* Algorithm */
+  unsigned char        temp[64];               /* Temporary hash buffer */
+  size_t       tempsize = 0;           /* Truncate to this size? */
+
+  if (strcmp(algorithm, "sha"))
+    alg = GNUTLS_DIG_SHA1;
+  else if (strcmp(algorithm, "sha2-224"))
+    alg = GNUTLS_DIG_SHA224;
+  else if (strcmp(algorithm, "sha2-256"))
+    alg = GNUTLS_DIG_SHA256;
+  else if (strcmp(algorithm, "sha2-384"))
+    alg = GNUTLS_DIG_SHA384;
+  else if (strcmp(algorithm, "sha2-512"))
+    alg = GNUTLS_DIG_SHA512;
+  else if (strcmp(algorithm, "sha2-512_224"))
+  {
+    alg      = GNUTLS_DIG_SHA512;
+    tempsize = 28;
+  }
+  else if (strcmp(algorithm, "sha2-512_256"))
+  {
+    alg      = GNUTLS_DIG_SHA512;
+    tempsize = 32;
+  }
+
+  if (alg != GNUTLS_DIG_UNKNOWN)
+  {
+    if (tempsize > 0)
+    {
+     /*
+      * Truncate result to tempsize bytes...
+      */
+
+      if (hashsize < tempsize)
+        goto too_small;
+
+      gnutls_hash_fast(alg, data, datalen, temp);
+      memcpy(hash, temp, tempsize);
+
+      return ((ssize_t)tempsize);
+    }
+
+    if (hashsize < gnutls_hash_get_len(alg))
+      goto too_small;
+
+    gnutls_hash_fast(alg, data, datalen, hash);
+
+    return (gnutls_hash_get_len(alg));
+  }
+
+#else
+ /*
+  * No hash support without CommonCrypto or GNU TLS...
+  */
+
+  if (hashsize < 64)
+    goto too_small;
+#endif /* __APPLE__ */
+
+ /*
+  * Unknown hash algorithm...
+  */
+
+  _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unknown hash algorithm."), 1);
+
+  return (-1);
+
+ /*
+  * We get here if the buffer is too small.
+  */
+
+  too_small:
+
+  _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Hash buffer too small."), 1);
+  return (-1);
+}
index 3f68d0d..dd61d4a 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: http-addr.c 12129 2014-08-28 19:26:31Z msweet $"
- *
  * HTTP address routines for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -33,7 +31,7 @@
 /*
  * 'httpAddrAny()' - Check for the "any" address.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 1 if "any", 0 otherwise */
@@ -90,7 +88,7 @@ httpAddrClose(http_addr_t *addr,              /* I - Listen address or @code NULL@ */
 /*
  * 'httpAddrEqual()' - Compare two addresses.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                            /* O - 1 if equal, 0 if not */
@@ -123,7 +121,7 @@ httpAddrEqual(const http_addr_t *addr1,             /* I - First address */
 /*
  * 'httpAddrLength()' - Return the length of the address in bytes.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - Length in bytes */
@@ -154,7 +152,7 @@ httpAddrLength(const http_addr_t *addr)     /* I - Address */
  * 'httpAddrListen()' - Create a listening socket bound to the specified
  *                      address and port.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - Socket or -1 on error */
@@ -280,7 +278,7 @@ httpAddrListen(http_addr_t *addr,   /* I - Address to bind to */
 /*
  * 'httpAddrLocalhost()' - Check for the local loopback address.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 1 if local host, 0 otherwise */
@@ -312,7 +310,7 @@ httpAddrLocalhost(
 /*
  * 'httpAddrLookup()' - Lookup the hostname associated with the address.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 char *                                 /* O - Host name */
@@ -325,8 +323,7 @@ httpAddrLookup(
                                        /* Global data */
 
 
-  DEBUG_printf(("httpAddrLookup(addr=%p, name=%p, namelen=%d)", addr, name,
-               namelen));
+  DEBUG_printf(("httpAddrLookup(addr=%p, name=%p, namelen=%d)", (void *)addr, (void *)name, namelen));
 
  /*
   * Range check input...
@@ -452,7 +449,7 @@ httpAddrFamily(http_addr_t *addr)   /* I - Address */
 /*
  * 'httpAddrPort()' - Get the port number associated with an address.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - Port number */
@@ -495,7 +492,7 @@ _httpAddrSetPort(http_addr_t *addr, /* I - Address */
 /*
  * 'httpAddrString()' - Convert an address to a numeric string.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 char *                                 /* O - Numeric address string */
@@ -503,7 +500,7 @@ httpAddrString(const http_addr_t *addr,     /* I - Address to convert */
                char              *s,   /* I - String buffer */
               int               slen)  /* I - Length of string */
 {
-  DEBUG_printf(("httpAddrString(addr=%p, s=%p, slen=%d)", addr, s, slen));
+  DEBUG_printf(("httpAddrString(addr=%p, s=%p, slen=%d)", (void *)addr, (void *)s, slen));
 
  /*
   * Range check input...
@@ -784,7 +781,7 @@ httpGetHostByName(const char *name) /* I - Hostname or IP address */
  * Otherwise, return the FQDN for the local system using both gethostname()
  * and gethostbyname() to get the local hostname with domain.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 const char *                           /* O - FQDN for connection or system */
@@ -921,8 +918,3 @@ httpResolveHostname(http_t *http,   /* I - HTTP connection */
   else
     return (http->hostname);
 }
-
-
-/*
- * End of "$Id: http-addr.c 12129 2014-08-28 19:26:31Z msweet $".
- */
index b832148..6e2ad81 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: http-addrlist.c 11627 2014-02-20 16:15:09Z msweet $"
- *
  * HTTP address list routines for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -34,7 +32,7 @@
 /*
  * 'httpAddrConnect()' - Connect to any of the addresses in the list.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 http_addrlist_t *                      /* O - Connected address or NULL on failure */
@@ -42,7 +40,7 @@ httpAddrConnect(
     http_addrlist_t *addrlist,         /* I - List of potential addresses */
     int             *sock)             /* O - Socket */
 {
-  DEBUG_printf(("httpAddrConnect(addrlist=%p, sock=%p)", addrlist, sock));
+  DEBUG_printf(("httpAddrConnect(addrlist=%p, sock=%p)", (void *)addrlist, (void *)sock));
 
   return (httpAddrConnect2(addrlist, sock, 30000, NULL));
 }
@@ -52,7 +50,7 @@ httpAddrConnect(
  * 'httpAddrConnect2()' - Connect to any of the addresses in the list with a
  *                        timeout and optional cancel.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 http_addrlist_t *                      /* O - Connected address or NULL on failure */
@@ -63,27 +61,36 @@ httpAddrConnect2(
     int             *cancel)           /* I - Pointer to "cancel" variable */
 {
   int                  val;            /* Socket option value */
+#ifndef WIN32
+  int                  flags;          /* Socket flags */
+#endif /* !WIN32 */
+  int                  remaining;      /* Remaining timeout */
+  int                  i,              /* Looping var */
+                       nfds,           /* Number of file descriptors */
+                       fds[100],       /* Socket file descriptors */
+                       result;         /* Result from select() or poll() */
+  http_addrlist_t      *addrs[100];    /* Addresses */
+#ifndef HAVE_POLL
+  int                  max_fd = -1;    /* Highest file descriptor */
+#endif /* !HAVE_POLL */
 #ifdef O_NONBLOCK
-  socklen_t            len;            /* Length of value */
-  http_addr_t          peer;           /* Peer address */
-  int                  flags,          /* Socket flags */
-                       remaining;      /* Remaining timeout */
 #  ifdef HAVE_POLL
-  struct pollfd                pfd;            /* Polled file descriptor */
+  struct pollfd                pfds[100];      /* Polled file descriptors */
 #  else
   fd_set               input_set,      /* select() input set */
-                       output_set;     /* select() output set */
+                       output_set,     /* select() output set */
+                       error_set;      /* select() error set */
   struct timeval       timeout;        /* Timeout */
 #  endif /* HAVE_POLL */
-  int                  nfds;           /* Result from select()/poll() */
 #endif /* O_NONBLOCK */
 #ifdef DEBUG
+  socklen_t            len;            /* Length of value */
+  http_addr_t          peer;           /* Peer address */
   char                 temp[256];      /* Temporary address string */
 #endif /* DEBUG */
 
 
-  DEBUG_printf(("httpAddrConnect2(addrlist=%p, sock=%p, msec=%d, cancel=%p)",
-                addrlist, sock, msec, cancel));
+  DEBUG_printf(("httpAddrConnect2(addrlist=%p, sock=%p, msec=%d, cancel=%p)", (void *)addrlist, (void *)sock, msec, (void *)cancel));
 
   if (!sock)
   {
@@ -95,218 +102,260 @@ httpAddrConnect2(
   if (cancel && *cancel)
     return (NULL);
 
-  if (msec <= 0 || getenv("CUPS_DISABLE_ASYNC_CONNECT"))
+  if (msec <= 0)
     msec = INT_MAX;
 
  /*
   * Loop through each address until we connect or run out of addresses...
   */
 
-  while (addrlist)
+  nfds      = 0;
+  remaining = msec;
+
+  while (remaining > 0)
   {
     if (cancel && *cancel)
-      return (NULL);
-
-   /*
-    * Create the socket...
-    */
+    {
+      while (nfds > 0)
+      {
+        nfds --;
+       httpAddrClose(NULL, fds[nfds]);
+      }
 
-    DEBUG_printf(("2httpAddrConnect2: Trying %s:%d...",
-                 httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
-                 httpAddrPort(&(addrlist->addr))));
+      return (NULL);
+    }
 
-    if ((*sock = (int)socket(httpAddrFamily(&(addrlist->addr)), SOCK_STREAM,
-                             0)) < 0)
+    if (addrlist && nfds < (int)(sizeof(fds) / sizeof(fds[0])))
     {
      /*
-      * Don't abort yet, as this could just be an issue with the local
-      * system not being configured with IPv4/IPv6/domain socket enabled...
+      * Create the socket...
       */
 
-      addrlist = addrlist->next;
-      continue;
-    }
+      DEBUG_printf(("2httpAddrConnect2: Trying %s:%d...", httpAddrString(&(addrlist->addr), temp, sizeof(temp)), httpAddrPort(&(addrlist->addr))));
 
-   /*
-    * Set options...
-    */
+      if ((fds[nfds] = (int)socket(httpAddrFamily(&(addrlist->addr)), SOCK_STREAM, 0)) < 0)
+      {
+       /*
+       * Don't abort yet, as this could just be an issue with the local
+       * system not being configured with IPv4/IPv6/domain socket enabled.
+       *
+       * Just skip this address...
+       */
+
+        addrlist = addrlist->next;
+       continue;
+      }
+
+     /*
+      * Set options...
+      */
 
-    val = 1;
-    setsockopt(*sock, SOL_SOCKET, SO_REUSEADDR, CUPS_SOCAST &val, sizeof(val));
+      val = 1;
+      setsockopt(fds[nfds], SOL_SOCKET, SO_REUSEADDR, CUPS_SOCAST &val, sizeof(val));
 
 #ifdef SO_REUSEPORT
-    val = 1;
-    setsockopt(*sock, SOL_SOCKET, SO_REUSEPORT, CUPS_SOCAST &val, sizeof(val));
+      val = 1;
+      setsockopt(fds[nfds], SOL_SOCKET, SO_REUSEPORT, CUPS_SOCAST &val, sizeof(val));
 #endif /* SO_REUSEPORT */
 
 #ifdef SO_NOSIGPIPE
-    val = 1;
-    setsockopt(*sock, SOL_SOCKET, SO_NOSIGPIPE, CUPS_SOCAST &val, sizeof(val));
+      val = 1;
+      setsockopt(fds[nfds], SOL_SOCKET, SO_NOSIGPIPE, CUPS_SOCAST &val, sizeof(val));
 #endif /* SO_NOSIGPIPE */
 
-   /*
-    * Using TCP_NODELAY improves responsiveness, especially on systems
-    * with a slow loopback interface...
-    */
+     /*
+      * Using TCP_NODELAY improves responsiveness, especially on systems
+      * with a slow loopback interface...
+      */
 
-    val = 1;
-    setsockopt(*sock, IPPROTO_TCP, TCP_NODELAY, CUPS_SOCAST &val, sizeof(val));
+      val = 1;
+      setsockopt(fds[nfds], IPPROTO_TCP, TCP_NODELAY, CUPS_SOCAST &val, sizeof(val));
 
 #ifdef FD_CLOEXEC
-   /*
-    * Close this socket when starting another process...
-    */
+     /*
+      * Close this socket when starting another process...
+      */
 
-    fcntl(*sock, F_SETFD, FD_CLOEXEC);
+      fcntl(fds[nfds], F_SETFD, FD_CLOEXEC);
 #endif /* FD_CLOEXEC */
 
 #ifdef O_NONBLOCK
-   /*
-    * Do an asynchronous connect by setting the socket non-blocking...
-    */
-
-    DEBUG_printf(("httpAddrConnect2: Setting non-blocking connect()"));
+     /*
+      * Do an asynchronous connect by setting the socket non-blocking...
+      */
 
-    flags = fcntl(*sock, F_GETFL, 0);
-    if (msec != INT_MAX)
-    {
-      DEBUG_puts("httpAddrConnect2: Setting non-blocking connect()");
+      DEBUG_printf(("httpAddrConnect2: Setting non-blocking connect()"));
 
-      fcntl(*sock, F_SETFL, flags | O_NONBLOCK);
-    }
+      flags = fcntl(fds[nfds], F_GETFL, 0);
+      fcntl(fds[nfds], F_SETFL, flags | O_NONBLOCK);
 #endif /* O_NONBLOCK */
 
-   /*
-    * Then connect...
-    */
+     /*
+      * Then connect...
+      */
 
-    if (!connect(*sock, &(addrlist->addr.addr), (socklen_t)httpAddrLength(&(addrlist->addr))))
-    {
-      DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
-                   httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
-                   httpAddrPort(&(addrlist->addr))));
+      if (!connect(fds[nfds], &(addrlist->addr.addr), (socklen_t)httpAddrLength(&(addrlist->addr))))
+      {
+       DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...", httpAddrString(&(addrlist->addr), temp, sizeof(temp)), httpAddrPort(&(addrlist->addr))));
 
 #ifdef O_NONBLOCK
-      fcntl(*sock, F_SETFL, flags);
+       fcntl(fds[nfds], F_SETFL, flags);
 #endif /* O_NONBLOCK */
 
-      return (addrlist);
+       *sock = fds[nfds];
+
+       while (nfds > 0)
+       {
+         nfds --;
+         httpAddrClose(NULL, fds[nfds]);
+       }
+
+       return (addrlist);
+      }
+
+#ifdef WIN32
+      if (WSAGetLastError() != WSAEINPROGRESS && WSAGetLastError() != WSAEWOULDBLOCK)
+#else
+      if (errno != EINPROGRESS && errno != EWOULDBLOCK)
+#endif /* WIN32 */
+      {
+       DEBUG_printf(("1httpAddrConnect2: Unable to connect to %s:%d: %s", httpAddrString(&(addrlist->addr), temp, sizeof(temp)), httpAddrPort(&(addrlist->addr)), strerror(errno)));
+       httpAddrClose(NULL, fds[nfds]);
+       addrlist = addrlist->next;
+       continue;
+      }
+
+#ifndef WIN32
+      fcntl(fds[nfds], F_SETFL, flags);
+#endif /* !WIN32 */
+
+#ifndef HAVE_POLL
+      if (fds[nfds] > max_fd)
+       max_fd = fds[nfds];
+#endif /* !HAVE_POLL */
+
+      addrs[nfds] = addrlist;
+      nfds ++;
+      addrlist = addrlist->next;
     }
 
-#ifdef O_NONBLOCK
-#  ifdef WIN32
-    if (WSAGetLastError() == WSAEINPROGRESS ||
-        WSAGetLastError() == WSAEWOULDBLOCK)
-#  else
-    if (errno == EINPROGRESS || errno == EWOULDBLOCK)
-#  endif /* WIN32 */
-    {
-      DEBUG_puts("1httpAddrConnect2: Finishing async connect()");
+    if (!addrlist && nfds == 0)
+      break;
 
-      fcntl(*sock, F_SETFL, flags);
+   /*
+    * See if we can connect to any of the addresses so far...
+    */
+
+#ifdef O_NONBLOCK
+    DEBUG_puts("1httpAddrConnect2: Finishing async connect()");
 
-      for (remaining = msec; remaining > 0; remaining -= 250)
+    do
+    {
+      if (cancel && *cancel)
       {
-       do
-        {
-          if (cancel && *cancel)
-          {
-          /*
-           * Close this socket and return...
-           */
+       /*
+       * Close this socket and return...
+       */
 
-            DEBUG_puts("1httpAddrConnect2: Canceled connect()");
+       DEBUG_puts("1httpAddrConnect2: Canceled connect()");
 
-            httpAddrClose(NULL, *sock);
+       while (nfds > 0)
+       {
+         nfds --;
+         httpAddrClose(NULL, fds[nfds]);
+       }
 
-           *sock = -1;
+       *sock = -1;
 
-           return (NULL);
-          }
+       return (NULL);
+      }
 
 #  ifdef HAVE_POLL
-         pfd.fd     = *sock;
-         pfd.events = POLLIN | POLLOUT;
+      for (i = 0; i < nfds; i ++)
+      {
+       pfds[i].fd     = fds[i];
+       pfds[i].events = POLLIN | POLLOUT;
+      }
 
-          nfds = poll(&pfd, 1, remaining > 250 ? 250 : remaining);
+      result = poll(pfds, (nfds_t)nfds, addrlist ? 100 : remaining > 250 ? 250 : remaining);
 
-         DEBUG_printf(("1httpAddrConnect2: poll() returned %d (%d)", nfds,
-                       errno));
+      DEBUG_printf(("1httpAddrConnect2: poll() returned %d (%d)", result, errno));
 
 #  else
-         FD_ZERO(&input_set);
-         FD_SET(*sock, &input_set);
-         output_set = input_set;
+      FD_ZERO(&input_set);
+      for (i = 0; i < nfds; i ++)
+       FD_SET(fds[i], &input_set);
+      output_set = input_set;
+      error_set  = input_set;
 
-         timeout.tv_sec  = 0;
-         timeout.tv_usec = (remaining > 250 ? 250 : remaining) * 1000;
+      timeout.tv_sec  = 0;
+      timeout.tv_usec = (addrlist ? 100 : remaining > 250 ? 250 : remaining) * 1000;
 
-         nfds = select(*sock + 1, &input_set, &output_set, NULL, &timeout);
+      result = select(max_fd + 1, &input_set, &output_set, &error_set, &timeout);
 
-         DEBUG_printf(("1httpAddrConnect2: select() returned %d (%d)", nfds,
-                       errno));
+      DEBUG_printf(("1httpAddrConnect2: select() returned %d (%d)", result, errno));
 #  endif /* HAVE_POLL */
-       }
+    }
 #  ifdef WIN32
-       while (nfds < 0 && (WSAGetLastError() == WSAEINTR ||
-                           WSAGetLastError() == WSAEWOULDBLOCK));
+    while (result < 0 && (WSAGetLastError() == WSAEINTR || WSAGetLastError() == WSAEWOULDBLOCK));
 #  else
-       while (nfds < 0 && (errno == EINTR || errno == EAGAIN));
+    while (result < 0 && (errno == EINTR || errno == EAGAIN));
 #  endif /* WIN32 */
 
-        if (nfds > 0)
-        {
-          len = sizeof(peer);
-          if (!getpeername(*sock, (struct sockaddr *)&peer, &len))
-          {
-           DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...",
-                         httpAddrString(&peer, temp, sizeof(temp)),
-                         httpAddrPort(&peer)));
-
-           return (addrlist);
-         }
-
-          break;
-        }
+    if (result > 0)
+    {
+      for (i = 0; i < nfds; i ++)
+      {
+#  ifdef HAVE_POLL
+       DEBUG_printf(("pfds[%d].revents=%x\n", i, pfds[i].revents));
+       if (pfds[i].revents && !(pfds[i].revents & (POLLERR | POLLHUP)))
+#  else
+       if (FD_ISSET(fds[i], &input) && !FD_ISSET(fds[i], &error))
+#  endif /* HAVE_POLL */
+       {
+         *sock    = fds[i];
+         addrlist = addrs[i];
+
+#  ifdef DEBUG
+         len   = sizeof(peer);
+         if (!getpeername(fds[i], (struct sockaddr *)&peer, &len))
+           DEBUG_printf(("1httpAddrConnect2: Connected to %s:%d...", httpAddrString(&peer, temp, sizeof(temp)), httpAddrPort(&peer)));
+#  endif /* DEBUG */
+       }
+       else
+         httpAddrClose(NULL, fds[i]);
       }
+
+      return (addrlist);
     }
 #endif /* O_NONBLOCK */
 
-    DEBUG_printf(("1httpAddrConnect2: Unable to connect to %s:%d: %s",
-                 httpAddrString(&(addrlist->addr), temp, sizeof(temp)),
-                 httpAddrPort(&(addrlist->addr)), strerror(errno)));
-
-#ifndef WIN32
-    if (errno == EINPROGRESS)
-      errno = ETIMEDOUT;
-#endif /* !WIN32 */
-
-   /*
-    * Close this socket and move to the next address...
-    */
-
-    httpAddrClose(NULL, *sock);
+    if (addrlist)
+      remaining -= 100;
+    else
+      remaining -= 250;
+  }
 
-    *sock    = -1;
-    addrlist = addrlist->next;
+  while (nfds > 0)
+  {
+    nfds --;
+    httpAddrClose(NULL, fds[nfds]);
   }
 
-  if (!addrlist)
 #ifdef WIN32
-    _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, "Connection failed", 0);
+  _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, "Connection failed", 0);
 #else
-    _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, strerror(errno), 0);
+  _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, strerror(errno), 0);
 #endif /* WIN32 */
 
-  return (addrlist);
+  return (NULL);
 }
 
 
-
 /*
  * 'httpAddrCopyList()' - Copy an address list.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 http_addrlist_t        *                       /* O - New address list or @code NULL@ on error */
@@ -355,7 +404,7 @@ httpAddrCopyList(
 /*
  * 'httpAddrFreeList()' - Free an address list.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
@@ -383,7 +432,7 @@ httpAddrFreeList(
 /*
  * 'httpAddrGetList()' - Get a list of addresses for a hostname.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 http_addrlist_t        *                       /* O - List of addresses or NULL */
@@ -865,8 +914,3 @@ httpAddrGetList(const char *hostname,       /* I - Hostname, IP address, or NULL for p
 
   return (first);
 }
-
-
-/*
- * End of "$Id: http-addrlist.c 11627 2014-02-20 16:15:09Z msweet $".
- */
index 3393e87..ec29707 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: http-private.h 12645 2015-05-20 01:20:52Z msweet $"
- *
  * Private HTTP definitions for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -62,7 +60,7 @@
 
 #  if defined(__APPLE__) && !defined(_SOCKLEN_T)
 /*
- * MacOS X 10.2.x does not define socklen_t, and in fact uses an int instead of
+ * macOS 10.2.x does not define socklen_t, and in fact uses an int instead of
  * unsigned type for length values...
  */
 
@@ -99,9 +97,28 @@ typedef int socklen_t;
 #      ifdef __cplusplus
 extern "C" {
 #      endif /* __cplusplus */
+#      ifndef _SECURITY_VERSION_GREATER_THAN_57610_
+typedef CF_OPTIONS(uint32_t, SecKeyUsage) {
+    kSecKeyUsageAll              = 0x7FFFFFFF
+};
+#       endif /* !_SECURITY_VERSION_GREATER_THAN_57610_ */
+extern const void * kSecCSRChallengePassword;
+extern const void * kSecSubjectAltName;
+extern const void * kSecCertificateKeyUsage;
+extern const void * kSecCSRBasicContraintsPathLen;
+extern const void * kSecCertificateExtensions;
+extern const void * kSecCertificateExtensionsEncoded;
+extern const void * kSecOidCommonName;
+extern const void * kSecOidCountryName;
+extern const void * kSecOidStateProvinceName;
+extern const void * kSecOidLocalityName;
+extern const void * kSecOidOrganization;
+extern const void * kSecOidOrganizationalUnit;
 extern SecCertificateRef SecCertificateCreateWithBytes(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length);
 extern bool SecCertificateIsValid(SecCertificateRef certificate, CFAbsoluteTime verifyTime);
 extern CFAbsoluteTime SecCertificateNotValidAfter(SecCertificateRef certificate);
+extern SecCertificateRef SecGenerateSelfSignedCertificate(CFArrayRef subject, CFDictionaryRef parameters, SecKeyRef publicKey, SecKeyRef privateKey);
+extern SecIdentityRef SecIdentityCreate(CFAllocatorRef allocator, SecCertificateRef certificate, SecKeyRef privateKey);
 #      ifdef __cplusplus
 }
 #      endif /* __cplusplus */
@@ -440,7 +457,3 @@ extern int          _httpWait(http_t *http, int msec, int usessl);
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_HTTP_PRIVATE_H_ */
-
-/*
- * End of "$Id: http-private.h 12645 2015-05-20 01:20:52Z msweet $".
- */
index 1670b02..21776d7 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: http-support.c 12970 2015-11-13 20:02:51Z msweet $"
- *
  * HTTP support routines for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -152,7 +150,7 @@ static void http_resolve_cb(AvahiServiceResolver *resolver,
  * place of traditional string functions whenever you need to create a
  * URI string.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 http_uri_status_t                      /* O - URI status */
@@ -432,7 +430,7 @@ httpAssembleURI(
  * this function in place of traditional string functions whenever
  * you need to create a URI string.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 http_uri_status_t                      /* O - URI status */
@@ -492,7 +490,7 @@ httpAssembleURIf(
  *
  * The buffer needs to be at least 46 bytes in size.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 char *                                 /* I - UUID string */
@@ -568,7 +566,7 @@ httpDecode64(char       *out,               /* I - String to write to */
 /*
  * 'httpDecode64_2()' - Base64-decode a string.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  */
 
 char *                                 /* O  - Decoded string */
@@ -687,7 +685,7 @@ httpEncode64(char       *out,               /* I - String to write to */
 /*
  * 'httpEncode64_2()' - Base64-encode a string.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  */
 
 char *                                 /* O - Encoded string */
@@ -796,7 +794,7 @@ httpGetDateString(time_t t)         /* I - UNIX time */
 /*
  * 'httpGetDateString2()' - Get a formatted date/time string from a time value.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 const char *                           /* O - Date/time string */
@@ -913,7 +911,7 @@ httpSeparate(const char *uri,               /* I - Universal Resource Identifier */
  *
  * This function is deprecated; use the httpSeparateURI() function instead.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  * @deprecated@
  */
 
@@ -938,7 +936,7 @@ httpSeparate2(const char *uri,              /* I - Universal Resource Identifier */
  * 'httpSeparateURI()' - Separate a Universal Resource Identifier into its
  *                       components.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 http_uri_status_t                      /* O - Result of separation */
@@ -1580,9 +1578,7 @@ _httpResolveURI(
 #endif /* DEBUG */
 
 
-  DEBUG_printf(("4_httpResolveURI(uri=\"%s\", resolved_uri=%p, "
-                "resolved_size=" CUPS_LLFMT ")", uri, resolved_uri,
-               CUPS_LLCAST resolved_size));
+  DEBUG_printf(("_httpResolveURI(uri=\"%s\", resolved_uri=%p, resolved_size=" CUPS_LLFMT ", options=0x%x, cb=%p, context=%p)", uri, (void *)resolved_uri, CUPS_LLCAST resolved_size, options, (void *)cb, context));
 
  /*
   * Get the device URI...
@@ -1603,8 +1599,8 @@ _httpResolveURI(
     if (options & _HTTP_RESOLVE_STDERR)
       _cupsLangPrintFilter(stderr, "ERROR", _("Bad device-uri \"%s\"."), uri);
 
-    DEBUG_printf(("6_httpResolveURI: httpSeparateURI returned %d!", status));
-    DEBUG_puts("5_httpResolveURI: Returning NULL");
+    DEBUG_printf(("2_httpResolveURI: httpSeparateURI returned %d!", status));
+    DEBUG_puts("2_httpResolveURI: Returning NULL");
     return (NULL);
   }
 
@@ -1664,7 +1660,7 @@ _httpResolveURI(
 
     if (regtype <= hostname)
     {
-      DEBUG_puts("5_httpResolveURI: Bad hostname, returning NULL");
+      DEBUG_puts("2_httpResolveURI: Bad hostname, returning NULL");
       return (NULL);
     }
 
@@ -1693,7 +1689,7 @@ _httpResolveURI(
     uribuf.resource = resource;
     uribuf.uuid     = uuid;
 
-    DEBUG_printf(("6_httpResolveURI: Resolving hostname=\"%s\", regtype=\"%s\", "
+    DEBUG_printf(("2_httpResolveURI: Resolving hostname=\"%s\", regtype=\"%s\", "
                   "domain=\"%s\"\n", hostname, regtype, domain));
     if (options & _HTTP_RESOLVE_STDERR)
     {
@@ -1728,11 +1724,11 @@ _httpResolveURI(
        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))
          {
-           DEBUG_puts("5_httpResolveURI: callback returned 0 (stop)");
+           DEBUG_puts("2_httpResolveURI: callback returned 0 (stop)");
            break;
          }
 
@@ -1768,7 +1764,7 @@ _httpResolveURI(
          {
            if (errno != EINTR && errno != EAGAIN)
            {
-             DEBUG_printf(("5_httpResolveURI: poll error: %s", strerror(errno)));
+             DEBUG_printf(("2_httpResolveURI: poll error: %s", strerror(errno)));
              break;
            }
          }
@@ -1964,7 +1960,7 @@ _httpResolveURI(
     uri = resolved_uri;
   }
 
-  DEBUG_printf(("5_httpResolveURI: Returning \"%s\"", uri));
+  DEBUG_printf(("2_httpResolveURI: Returning \"%s\"", uri));
 
   return (uri);
 }
@@ -2151,11 +2147,7 @@ http_resolve_cb(
   uint8_t              valueLen;       /* Length of value */
 
 
-  DEBUG_printf(("7http_resolve_cb(sdRef=%p, flags=%x, interfaceIndex=%u, "
-               "errorCode=%d, fullName=\"%s\", hostTarget=\"%s\", port=%u, "
-               "txtLen=%u, txtRecord=%p, context=%p)", sdRef, flags,
-               interfaceIndex, errorCode, fullName, hostTarget, port, txtLen,
-               txtRecord, context));
+  DEBUG_printf(("4http_resolve_cb(sdRef=%p, flags=%x, interfaceIndex=%u, errorCode=%d, fullName=\"%s\", hostTarget=\"%s\", port=%u, txtLen=%u, txtRecord=%p, context=%p)", (void *)sdRef, flags, interfaceIndex, errorCode, fullName, hostTarget, port, txtLen, (void *)txtRecord, context));
 
  /*
   * If we have a UUID, compare it...
@@ -2176,7 +2168,7 @@ http_resolve_cb(
        fprintf(stderr, "DEBUG: Found UUID %s, looking for %s.", uuid,
                uribuf->uuid);
 
-      DEBUG_printf(("7http_resolve_cb: Found UUID %s, looking for %s.", uuid,
+      DEBUG_printf(("5http_resolve_cb: Found UUID %s, looking for %s.", uuid,
                     uribuf->uuid));
       return;
     }
@@ -2266,7 +2258,7 @@ http_resolve_cb(
     http_addrlist_t    *addrlist,      /* List of addresses */
                        *addr;          /* Current address */
 
-    DEBUG_printf(("8http_resolve_cb: Looking up \"%s\".", hostTarget));
+    DEBUG_printf(("5http_resolve_cb: Looking up \"%s\".", hostTarget));
 
     snprintf(fqdn, sizeof(fqdn), "%d", ntohs(port));
     if ((addrlist = httpAddrGetList(hostTarget, AF_UNSPEC, fqdn)) != NULL)
@@ -2277,7 +2269,7 @@ http_resolve_cb(
 
         if (!error)
        {
-         DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn));
+         DEBUG_printf(("5http_resolve_cb: Found \"%s\".", fqdn));
 
          if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn ||
              _cups_strcasecmp(hostptr, ".local"))
@@ -2288,7 +2280,7 @@ http_resolve_cb(
        }
 #ifdef DEBUG
        else
-         DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d",
+         DEBUG_printf(("5http_resolve_cb: \"%s\" did not resolve: %d",
                        httpAddrString(&(addr->addr), fqdn, sizeof(fqdn)),
                        error));
 #endif /* DEBUG */
@@ -2308,7 +2300,7 @@ http_resolve_cb(
   else
     httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, (int)uribuf->bufsize, scheme, NULL, hostTarget, ntohs(port), resource);
 
-  DEBUG_printf(("8http_resolve_cb: Resolved URI is \"%s\"...", uribuf->buffer));
+  DEBUG_printf(("5http_resolve_cb: Resolved URI is \"%s\"...", uribuf->buffer));
 }
 
 #elif defined(HAVE_AVAHI)
@@ -2367,7 +2359,7 @@ http_resolve_cb(
   size_t               valueLen = 0;   /* Length of "rp" key */
 
 
-  DEBUG_printf(("7http_resolve_cb(resolver=%p, "
+  DEBUG_printf(("4http_resolve_cb(resolver=%p, "
                "interface=%d, protocol=%d, event=%d, name=\"%s\", "
                "type=\"%s\", domain=\"%s\", hostTarget=\"%s\", address=%p, "
                "port=%d, txt=%p, flags=%d, context=%p)",
@@ -2400,7 +2392,7 @@ http_resolve_cb(
        fprintf(stderr, "DEBUG: Found UUID %s, looking for %s.", uuid,
                uribuf->uuid);
 
-      DEBUG_printf(("7http_resolve_cb: Found UUID %s, looking for %s.", uuid,
+      DEBUG_printf(("5http_resolve_cb: Found UUID %s, looking for %s.", uuid,
                     uribuf->uuid));
       return;
     }
@@ -2504,7 +2496,7 @@ http_resolve_cb(
     http_addrlist_t    *addrlist,      /* List of addresses */
                        *addr;          /* Current address */
 
-    DEBUG_printf(("8http_resolve_cb: Looking up \"%s\".", hostTarget));
+    DEBUG_printf(("5http_resolve_cb: Looking up \"%s\".", hostTarget));
 
     snprintf(fqdn, sizeof(fqdn), "%d", ntohs(port));
     if ((addrlist = httpAddrGetList(hostTarget, AF_UNSPEC, fqdn)) != NULL)
@@ -2515,7 +2507,7 @@ http_resolve_cb(
 
         if (!error)
        {
-         DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn));
+         DEBUG_printf(("5http_resolve_cb: Found \"%s\".", fqdn));
 
          if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn ||
              _cups_strcasecmp(hostptr, ".local"))
@@ -2526,7 +2518,7 @@ http_resolve_cb(
        }
 #ifdef DEBUG
        else
-         DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d",
+         DEBUG_printf(("5http_resolve_cb: \"%s\" did not resolve: %d",
                        httpAddrString(&(addr->addr), fqdn, sizeof(fqdn)),
                        error));
 #endif /* DEBUG */
@@ -2540,15 +2532,10 @@ http_resolve_cb(
   * Assemble the final device URI using the resolved hostname...
   */
 
-  httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize, scheme,
+  httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, (int)uribuf->bufsize, scheme,
                   NULL, hostTarget, port, resource);
-  DEBUG_printf(("8http_resolve_cb: Resolved URI is \"%s\".", uribuf->buffer));
+  DEBUG_printf(("5http_resolve_cb: Resolved URI is \"%s\".", uribuf->buffer));
 
   avahi_simple_poll_quit(uribuf->poll);
 }
 #endif /* HAVE_DNSSD */
-
-
-/*
- * End of "$Id: http-support.c 12970 2015-11-13 20:02:51Z msweet $".
- */
index e5e7be5..b3abbe7 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: http.c 12970 2015-11-13 20:02:51Z msweet $"
- *
  * HTTP 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.
  *
  * This file contains Kerberos support code, copyright 2006 by
@@ -115,7 +113,7 @@ static const char * const http_fields[] =
  * 'httpAcceptConnection()' - Accept a new HTTP client connection from the
  *                            specified listening socket.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 http_t *                               /* O - HTTP connection or @code NULL@ */
@@ -205,7 +203,7 @@ httpAcceptConnection(int fd,                /* I - Listen socket file descriptor */
  *
  * Use @code cupsArrayNew(NULL, NULL)@ to create a credentials array.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -265,7 +263,7 @@ httpCheck(http_t *http)                     /* I - HTTP connection */
 /*
  * 'httpClearCookie()' - Clear the cookie value(s).
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 void
@@ -289,7 +287,7 @@ httpClearCookie(http_t *http)               /* I - HTTP connection */
 void
 httpClearFields(http_t *http)          /* I - HTTP connection */
 {
-  DEBUG_printf(("httpClearFields(http=%p)", http));
+  DEBUG_printf(("httpClearFields(http=%p)", (void *)http));
 
   if (http)
   {
@@ -344,7 +342,7 @@ httpClose(http_t *http)                     /* I - HTTP connection */
 #endif /* HAVE_GSSAPI */
 
 
-  DEBUG_printf(("httpClose(http=%p)", http));
+  DEBUG_printf(("httpClose(http=%p)", (void *)http));
 
  /*
   * Range check input...
@@ -434,7 +432,7 @@ httpConnect(const char *host,               /* I - Host to connect to */
 /*
  * 'httpConnect2()' - Connect to a HTTP server.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 http_t *                               /* O - New HTTP connection */
@@ -451,9 +449,7 @@ httpConnect2(
   http_t       *http;                  /* New HTTP connection */
 
 
-  DEBUG_printf(("httpConnect2(host=\"%s\", port=%d, addrlist=%p, family=%d, "
-                "encryption=%d, blocking=%d, msec=%d, cancel=%p)", host, port,
-                addrlist, family, encryption, blocking, msec, cancel));
+  DEBUG_printf(("httpConnect2(host=\"%s\", port=%d, addrlist=%p, family=%d, encryption=%d, blocking=%d, msec=%d, cancel=%p)", host, port, (void *)addrlist, family, encryption, blocking, msec, (void *)cancel));
 
  /*
   * Create the HTTP structure...
@@ -541,7 +537,7 @@ int                                 /* O - -1 on error, 0 on success */
 httpEncryption(http_t            *http,        /* I - HTTP connection */
                http_encryption_t e)    /* I - New encryption preference */
 {
-  DEBUG_printf(("httpEncryption(http=%p, e=%d)", http, e));
+  DEBUG_printf(("httpEncryption(http=%p, e=%d)", (void *)http, e));
 
 #ifdef HAVE_SSL
   if (!http)
@@ -624,8 +620,7 @@ httpFlush(http_t *http)                     /* I - HTTP connection */
   http_state_t oldstate;               /* Old state */
 
 
-  DEBUG_printf(("httpFlush(http=%p), state=%s", http,
-                httpStateString(http->state)));
+  DEBUG_printf(("httpFlush(http=%p), state=%s", (void *)http, httpStateString(http->state)));
 
  /*
   * Nothing to do if we are in the "waiting" state...
@@ -686,7 +681,7 @@ httpFlush(http_t *http)                     /* I - HTTP connection */
 /*
  * 'httpFlushWrite()' - Flush data in write buffer.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - Bytes written or -1 on error */
@@ -695,8 +690,7 @@ httpFlushWrite(http_t *http)                /* I - HTTP connection */
   ssize_t      bytes;                  /* Bytes written */
 
 
-  DEBUG_printf(("httpFlushWrite(http=%p) data_encoding=%d", http,
-                http ? http->data_encoding : 100));
+  DEBUG_printf(("httpFlushWrite(http=%p) data_encoding=%d", (void *)http, http ? http->data_encoding : 100));
 
   if (!http || !http->wused)
   {
@@ -777,7 +771,7 @@ httpGetActivity(http_t *http)               /* I - HTTP connection */
  * string to use with httpSetField() for the HTTP_FIELD_AUTHORIZATION
  * value.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 char *                                 /* O - Authorization string */
@@ -793,7 +787,7 @@ httpGetAuthString(http_t *http)             /* I - HTTP connection */
 /*
  * 'httpGetBlocking()' - Get the blocking/non-block state of a connection.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 1 if blocking, 0 if non-blocking */
@@ -812,7 +806,7 @@ httpGetBlocking(http_t *http)               /* I - HTTP connection */
  * client.  The value returned can be use in subsequent requests (for clients)
  * or in the response (for servers) in order to compress the content stream.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 const char *                           /* O - Content-Coding value or
@@ -894,7 +888,7 @@ httpGetContentEncoding(http_t *http)        /* I - HTTP connection */
 /*
  * 'httpGetCookie()' - Get any cookie data from the response.
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 const char *                           /* O - Cookie data or NULL */
@@ -927,7 +921,7 @@ httpGetEncryption(http_t *http)             /* I - HTTP connection */
  * Returns @code HTTP_STATUS_NONE@ if there is no Expect header, otherwise
  * returns the expected HTTP status code, typically @code HTTP_STATUS_CONTINUE@.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 http_status_t                          /* O - Expect: status, if any */
@@ -943,7 +937,7 @@ httpGetExpect(http_t *http)         /* I - HTTP connection */
 /*
  * 'httpGetFd()' - Get the file descriptor associated with a connection.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - File descriptor or -1 if none */
@@ -1040,7 +1034,7 @@ httpGetLength(http_t *http)               /* I - HTTP connection */
  * This function returns the complete content length, even for
  * content larger than 2^31 - 1.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 off_t                                  /* O - Content length */
@@ -1049,8 +1043,7 @@ httpGetLength2(http_t *http)              /* I - HTTP connection */
   off_t                        remaining;      /* Remaining length */
 
 
-  DEBUG_printf(("2httpGetLength2(http=%p), state=%s", http,
-                httpStateString(http->state)));
+  DEBUG_printf(("2httpGetLength2(http=%p), state=%s", (void *)http, httpStateString(http->state)));
 
   if (!http)
     return (-1);
@@ -1170,7 +1163,7 @@ httpGets(char   *line,                    /* I - Line to read into */
   int          eol;                    /* End-of-line? */
 
 
-  DEBUG_printf(("2httpGets(line=%p, length=%d, http=%p)", line, length, http));
+  DEBUG_printf(("2httpGets(line=%p, length=%d, http=%p)", (void *)line, length, (void *)http));
 
   if (!http || !line || length <= 1)
     return (NULL);
@@ -1340,7 +1333,7 @@ httpGetState(http_t *http)                /* I - HTTP connection */
 /*
  * 'httpGetStatus()' - Get the status of the last HTTP request.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 http_status_t                          /* O - HTTP status */
@@ -1369,7 +1362,7 @@ httpGetSubField(http_t       *http,       /* I - HTTP connection */
 /*
  * 'httpGetSubField2()' - Get a sub-field value.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 char *                                 /* O - Value or NULL */
@@ -1384,8 +1377,7 @@ httpGetSubField2(http_t       *http,      /* I - HTTP connection */
                *ptr,                   /* Pointer into string buffer */
                *end;                   /* End of value buffer */
 
-  DEBUG_printf(("2httpGetSubField2(http=%p, field=%d, name=\"%s\", value=%p, "
-                "valuelen=%d)", http, field, name, value, valuelen));
+  DEBUG_printf(("2httpGetSubField2(http=%p, field=%d, name=\"%s\", value=%p, valuelen=%d)", (void *)http, field, name, (void *)value, valuelen));
 
   if (!http || !name || !value || valuelen < 2 ||
       field <= HTTP_FIELD_UNKNOWN || field >= HTTP_FIELD_MAX)
@@ -1517,7 +1509,7 @@ int                                       /* O - Status of call (0 = success) */
 httpHead(http_t     *http,             /* I - HTTP connection */
          const char *uri)              /* I - URI for head */
 {
-  DEBUG_printf(("httpHead(http=%p, uri=\"%s\")", http, uri));
+  DEBUG_printf(("httpHead(http=%p, uri=\"%s\")", (void *)http, uri));
   return (http_send(http, HTTP_STATE_HEAD, uri));
 }
 
@@ -1628,7 +1620,7 @@ httpOptions(http_t     *http,             /* I - HTTP connection */
  *
  * For non-blocking connections the usual timeouts apply.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 ssize_t                                        /* O - Number of bytes copied */
@@ -1640,8 +1632,7 @@ httpPeek(http_t *http,                    /* I - HTTP connection */
   char         len[32];                /* Length string */
 
 
-  DEBUG_printf(("httpPeek(http=%p, buffer=%p, length=" CUPS_LLFMT ")",
-                http, buffer, CUPS_LLCAST length));
+  DEBUG_printf(("httpPeek(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
 
   if (http == NULL || buffer == NULL)
     return (-1);
@@ -1904,7 +1895,7 @@ httpPrintf(http_t     *http,              /* I - HTTP connection */
   va_list      ap;                     /* Variable argument pointer */
 
 
-  DEBUG_printf(("2httpPrintf(http=%p, format=\"%s\", ...)", http, format));
+  DEBUG_printf(("2httpPrintf(http=%p, format=\"%s\", ...)", (void *)http, format));
 
   va_start(ap, format);
   bytes = vsnprintf(buf, sizeof(buf), format, ap);
@@ -1937,7 +1928,7 @@ int                                       /* O - Status of call (0 = success) */
 httpPut(http_t     *http,              /* I - HTTP connection */
         const char *uri)               /* I - URI to put */
 {
-  DEBUG_printf(("httpPut(http=%p, uri=\"%s\")", http, uri));
+  DEBUG_printf(("httpPut(http=%p, uri=\"%s\")", (void *)http, uri));
   return (http_send(http, HTTP_STATE_PUT, uri));
 }
 
@@ -1963,7 +1954,7 @@ httpRead(http_t *http,                    /* I - HTTP connection */
 /*
  * 'httpRead2()' - Read data from a HTTP connection.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ssize_t                                        /* O - Number of bytes read */
@@ -1975,16 +1966,9 @@ httpRead2(http_t *http,                  /* I - HTTP connection */
 
 
 #ifdef HAVE_LIBZ
-  DEBUG_printf(("httpRead2(http=%p, buffer=%p, length=" CUPS_LLFMT
-                ") coding=%d data_encoding=%d data_remaining=" CUPS_LLFMT,
-                http, buffer, CUPS_LLCAST length,
-                http->coding,
-                http->data_encoding, CUPS_LLCAST http->data_remaining));
+  DEBUG_printf(("httpRead2(http=%p, buffer=%p, length=" CUPS_LLFMT ") coding=%d data_encoding=%d data_remaining=" CUPS_LLFMT, (void *)http, (void *)buffer, CUPS_LLCAST length, http->coding, http->data_encoding, CUPS_LLCAST http->data_remaining));
 #else
-  DEBUG_printf(("httpRead2(http=%p, buffer=%p, length=" CUPS_LLFMT
-                ") data_encoding=%d data_remaining=" CUPS_LLFMT,
-                http, buffer, CUPS_LLCAST length,
-                http->data_encoding, CUPS_LLCAST http->data_remaining));
+  DEBUG_printf(("httpRead2(http=%p, buffer=%p, length=" CUPS_LLFMT ") data_encoding=%d data_remaining=" CUPS_LLFMT, (void *)http, (void *)buffer, CUPS_LLCAST length, http->data_encoding, CUPS_LLCAST http->data_remaining));
 #endif /* HAVE_LIBZ */
 
   if (http == NULL || buffer == NULL)
@@ -2177,7 +2161,7 @@ httpRead2(http_t *http,                   /* I - HTTP connection */
 /*
  * 'httpReadRequest()' - Read a HTTP request from a connection.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 http_state_t                           /* O - New state of connection */
@@ -2195,8 +2179,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
   * Range check input...
   */
 
-  DEBUG_printf(("httpReadRequest(http=%p, uri=%p, urilen=" CUPS_LLFMT ")",
-                http, uri, CUPS_LLCAST urilen));
+  DEBUG_printf(("httpReadRequest(http=%p, uri=%p, urilen=" CUPS_LLFMT ")", (void *)http, (void *)uri, CUPS_LLCAST urilen));
 
   if (uri)
     *uri = '\0';
@@ -2349,7 +2332,7 @@ httpReadRequest(http_t *http,             /* I - HTTP connection */
 int                                    /* O - 0 on success, non-zero on failure */
 httpReconnect(http_t *http)            /* I - HTTP connection */
 {
-  DEBUG_printf(("httpReconnect(http=%p)", http));
+  DEBUG_printf(("httpReconnect(http=%p)", (void *)http));
 
   return (httpReconnect2(http, 30000, NULL));
 }
@@ -2372,8 +2355,7 @@ httpReconnect2(http_t *http,              /* I - HTTP connection */
 #endif /* DEBUG */
 
 
-  DEBUG_printf(("httpReconnect2(http=%p, msec=%d, cancel=%p)", http, msec,
-                cancel));
+  DEBUG_printf(("httpReconnect2(http=%p, msec=%d, cancel=%p)", (void *)http, msec, (void *)cancel));
 
   if (!http)
   {
@@ -2428,8 +2410,7 @@ httpReconnect2(http_t *http,              /* I - HTTP connection */
                   httpAddrPort(&(current->addr))));
 #endif /* DEBUG */
 
-  if ((addr = httpAddrConnect2(http->addrlist, &(http->fd), msec,
-                               cancel)) == NULL)
+  if ((addr = httpAddrConnect2(http->addrlist, &(http->fd), msec, cancel)) == NULL)
   {
    /*
     * Unable to connect...
@@ -2490,7 +2471,7 @@ httpReconnect2(http_t *http,              /* I - HTTP connection */
  * HTTP_FIELD_AUTHORIZATION prior to issuing a HTTP request using httpGet(),
  * httpHead(), httpOptions(), httpPost, or httpPut().
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 void
@@ -2547,7 +2528,7 @@ httpSetAuthString(http_t     *http,       /* I - HTTP connection */
  * 'httpSetCredentials()' - Set the credentials associated with an encrypted
  *                         connection.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 int                                            /* O - Status of call (0 = success) */
@@ -2570,7 +2551,7 @@ httpSetCredentials(http_t *http,          /* I - HTTP connection */
 /*
  * 'httpSetCookie()' - Set the cookie value(s).
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 void
@@ -2596,7 +2577,7 @@ httpSetCookie(http_t     *http,           /* I - Connection */
  * Currently only @code HTTP_FIELD_ACCEPT_ENCODING@, @code HTTP_FIELD_SERVER@,
  * and @code HTTP_FIELD_USER_AGENT@ can be set.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 void
@@ -2604,8 +2585,7 @@ httpSetDefaultField(http_t       *http,   /* I - HTTP connection */
                     http_field_t field,        /* I - Field index */
                    const char   *value)/* I - Value */
 {
-  DEBUG_printf(("httpSetDefaultField(http=%p, field=%d(%s), value=\"%s\")",
-                http, field, http_fields[field], value));
+  DEBUG_printf(("httpSetDefaultField(http=%p, field=%d(%s), value=\"%s\")", (void *)http, field, http_fields[field], value));
 
   if (!http)
     return;
@@ -2646,7 +2626,7 @@ httpSetDefaultField(http_t       *http,   /* I - HTTP connection */
  * Currently only @code HTTP_STATUS_CONTINUE@ is supported for the "expect"
  * argument.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
@@ -2654,7 +2634,7 @@ httpSetExpect(http_t        *http,        /* I - HTTP connection */
               http_status_t expect)    /* I - HTTP status to expect
                                               (@code HTTP_STATUS_CONTINUE@) */
 {
-  DEBUG_printf(("httpSetExpect(http=%p, expect=%d)", http, expect));
+  DEBUG_printf(("httpSetExpect(http=%p, expect=%d)", (void *)http, expect));
 
   if (http)
     http->expect = expect;
@@ -2670,8 +2650,7 @@ httpSetField(http_t       *http,  /* I - HTTP connection */
              http_field_t field,       /* I - Field index */
             const char   *value)       /* I - Value */
 {
-  DEBUG_printf(("httpSetField(http=%p, field=%d(%s), value=\"%s\")", http,
-                field, http_fields[field], value));
+  DEBUG_printf(("httpSetField(http=%p, field=%d(%s), value=\"%s\")", (void *)http, field, http_fields[field], value));
 
   if (http == NULL ||
       field < HTTP_FIELD_ACCEPT_LANGUAGE ||
@@ -2800,15 +2779,14 @@ httpSetKeepAlive(
 /*
  * 'httpSetLength()' - Set the content-length and content-encoding.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 void
 httpSetLength(http_t *http,            /* I - HTTP connection */
               size_t length)           /* I - Length (0 for chunked) */
 {
-  DEBUG_printf(("httpSetLength(http=%p, length=" CUPS_LLFMT ")", http,
-                CUPS_LLCAST length));
+  DEBUG_printf(("httpSetLength(http=%p, length=" CUPS_LLFMT ")", (void *)http, CUPS_LLCAST length));
 
   if (!http)
     return;
@@ -2834,7 +2812,7 @@ httpSetLength(http_t *http,               /* I - HTTP connection */
  * The optional timeout callback receives both the HTTP connection and a user
  * data pointer and must return 1 to continue or 0 to error (time) out.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 void
@@ -2913,8 +2891,7 @@ _httpUpdate(http_t        *http,  /* I - HTTP connection */
   int          major, minor;           /* HTTP version numbers */
 
 
-  DEBUG_printf(("_httpUpdate(http=%p, status=%p), state=%s", http, status,
-                httpStateString(http->state)));
+  DEBUG_printf(("_httpUpdate(http=%p, status=%p), state=%s", (void *)http, (void *)status, httpStateString(http->state)));
 
  /*
   * Grab a single line from the connection...
@@ -3083,8 +3060,7 @@ httpUpdate(http_t *http)          /* I - HTTP connection */
   http_status_t        status;                 /* Request status */
 
 
-  DEBUG_printf(("httpUpdate(http=%p), state=%s", http,
-                httpStateString(http->state)));
+  DEBUG_printf(("httpUpdate(http=%p), state=%s", (void *)http, httpStateString(http->state)));
 
  /*
   * Flush pending data, if any...
@@ -3155,7 +3131,7 @@ _httpWait(http_t *http,                   /* I - HTTP connection */
   int                  nfds;           /* Result from select()/poll() */
 
 
-  DEBUG_printf(("4_httpWait(http=%p, msec=%d, usessl=%d)", http, msec, usessl));
+  DEBUG_printf(("4_httpWait(http=%p, msec=%d, usessl=%d)", (void *)http, msec, usessl));
 
   if (http->fd < 0)
   {
@@ -3227,7 +3203,7 @@ _httpWait(http_t *http,                   /* I - HTTP connection */
 /*
  * 'httpWait()' - Wait for data available on a connection.
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 int                                    /* O - 1 if data is available, 0 otherwise */
@@ -3238,7 +3214,7 @@ httpWait(http_t *http,                    /* I - HTTP connection */
   * First see if there is data in the buffer...
   */
 
-  DEBUG_printf(("2httpWait(http=%p, msec=%d)", http, msec));
+  DEBUG_printf(("2httpWait(http=%p, msec=%d)", (void *)http, msec));
 
   if (http == NULL)
     return (0);
@@ -3298,7 +3274,7 @@ httpWrite(http_t     *http,               /* I - HTTP connection */
 /*
  * 'httpWrite2()' - Write data to a HTTP connection.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ssize_t                                        /* O - Number of bytes written */
@@ -3309,8 +3285,7 @@ httpWrite2(http_t     *http,              /* I - HTTP connection */
   ssize_t      bytes;                  /* Bytes written */
 
 
-  DEBUG_printf(("httpWrite2(http=%p, buffer=%p, length=" CUPS_LLFMT ")", http,
-                buffer, CUPS_LLCAST length));
+  DEBUG_printf(("httpWrite2(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
 
  /*
   * Range check input...
@@ -3490,7 +3465,7 @@ httpWrite2(http_t     *http,              /* I - HTTP connection */
 /*
  * 'httpWriteResponse()' - Write a HTTP response to a client connection.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -3505,7 +3480,7 @@ httpWriteResponse(http_t        *http,    /* I - HTTP connection */
   * Range check input...
   */
 
-  DEBUG_printf(("httpWriteResponse(http=%p, status=%d)", http, status));
+  DEBUG_printf(("httpWriteResponse(http=%p, status=%d)", (void *)http, status));
 
   if (!http || status < HTTP_STATUS_CONTINUE)
   {
@@ -3722,7 +3697,7 @@ http_content_coding_finish(
   size_t       bytes;                  /* Number of bytes to write */
 
 
-  DEBUG_printf(("http_content_coding_finish(http=%p)", http));
+  DEBUG_printf(("http_content_coding_finish(http=%p)", (void *)http));
   DEBUG_printf(("1http_content_coding_finishing: http->coding=%d", http->coding));
 
   switch (http->coding)
@@ -3789,8 +3764,7 @@ http_content_coding_start(
   _http_coding_t       coding;         /* Content coding value */
 
 
-  DEBUG_printf(("http_content_coding_start(http=%p, value=\"%s\")", http,
-                value));
+  DEBUG_printf(("http_content_coding_start(http=%p, value=\"%s\")", (void *)http, value));
 
   if (http->coding != _HTTP_CODING_IDENTITY)
   {
@@ -3932,9 +3906,7 @@ http_create(
   http_addrlist_t *myaddrlist = NULL;  /* My address list */
 
 
-  DEBUG_printf(("4http_create(host=\"%s\", port=%d, addrlist=%p, family=%d, "
-                "encryption=%d, blocking=%d, mode=%d)", host, port, addrlist,
-                family, encryption, blocking, mode));
+  DEBUG_printf(("4http_create(host=\"%s\", port=%d, addrlist=%p, family=%d, encryption=%d, blocking=%d, mode=%d)", host, port, (void *)addrlist, family, encryption, blocking, mode));
 
   if (!host && mode == _HTTP_MODE_CLIENT)
     return (NULL);
@@ -4076,8 +4048,7 @@ http_read(http_t *http,                   /* I - HTTP connection */
   ssize_t      bytes;                  /* Bytes read */
 
 
-  DEBUG_printf(("http_read(http=%p, buffer=%p, length=" CUPS_LLFMT ")", http,
-                buffer, CUPS_LLCAST length));
+  DEBUG_printf(("http_read(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
 
   if (!http->blocking)
   {
@@ -4190,9 +4161,7 @@ http_read_buffered(http_t *http,  /* I - HTTP connection */
   ssize_t      bytes;                  /* Bytes read */
 
 
-  DEBUG_printf(("http_read_buffered(http=%p, buffer=%p, length=" CUPS_LLFMT
-                ") used=%d",
-                http, buffer, CUPS_LLCAST length, http->used));
+  DEBUG_printf(("http_read_buffered(http=%p, buffer=%p, length=" CUPS_LLFMT ") used=%d", (void *)http, (void *)buffer, CUPS_LLCAST length, http->used));
 
   if (http->used > 0)
   {
@@ -4229,8 +4198,7 @@ http_read_chunk(http_t *http,             /* I - HTTP connection */
                char   *buffer,         /* I - Buffer */
                size_t length)          /* I - Maximum bytes to read */
 {
-  DEBUG_printf(("http_read_chunk(http=%p, buffer=%p, length=" CUPS_LLFMT ")",
-                http, buffer, CUPS_LLCAST length));
+  DEBUG_printf(("http_read_chunk(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
 
   if (http->data_remaining <= 0)
   {
@@ -4318,8 +4286,7 @@ http_send(http_t       *http,             /* I - HTTP connection */
                };
 
 
-  DEBUG_printf(("4http_send(http=%p, request=HTTP_%s, uri=\"%s\")",
-                http, codes[request], uri));
+  DEBUG_printf(("4http_send(http=%p, request=HTTP_%s, uri=\"%s\")", (void *)http, codes[request], uri));
 
   if (http == NULL || uri == NULL)
     return (-1);
@@ -4483,8 +4450,7 @@ http_set_length(http_t *http)             /* I - Connection */
   off_t        remaining;                      /* Remainder */
 
 
-  DEBUG_printf(("http_set_length(http=%p) mode=%d state=%s", http, http->mode,
-                httpStateString(http->state)));
+  DEBUG_printf(("http_set_length(http=%p) mode=%d state=%s", (void *)http, http->mode, httpStateString(http->state)));
 
   if ((remaining = httpGetLength2(http)) >= 0)
   {
@@ -4583,7 +4549,7 @@ http_tls_upgrade(http_t *http)            /* I - HTTP connection */
   http_t       myhttp;                 /* Local copy of HTTP data */
 
 
-  DEBUG_printf(("7http_tls_upgrade(%p)", http));
+  DEBUG_printf(("7http_tls_upgrade(%p)", (void *)http));
 
  /*
   * Flush the connection to make sure any previous "Upgrade" message
@@ -4671,8 +4637,7 @@ http_write(http_t     *http,              /* I - HTTP connection */
                bytes;                  /* Bytes sent */
 
 
-  DEBUG_printf(("2http_write(http=%p, buffer=%p, length=" CUPS_LLFMT ")", http,
-                buffer, CUPS_LLCAST length));
+  DEBUG_printf(("2http_write(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
   http->error = 0;
   tbytes      = 0;
 
@@ -4819,8 +4784,7 @@ http_write_chunk(http_t     *http,        /* I - HTTP connection */
   ssize_t      bytes;                  /* Bytes written */
 
 
-  DEBUG_printf(("7http_write_chunk(http=%p, buffer=%p, length=" CUPS_LLFMT ")",
-                http, buffer, CUPS_LLCAST length));
+  DEBUG_printf(("7http_write_chunk(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
 
  /*
   * Write the chunk header, data, and trailer.
@@ -4847,8 +4811,3 @@ http_write_chunk(http_t     *http,        /* I - HTTP connection */
 
   return (bytes);
 }
-
-
-/*
- * End of "$Id: http.c 12970 2015-11-13 20:02:51Z msweet $".
- */
index a451a2c..00039ee 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: http.h 12848 2015-08-26 18:51:57Z msweet $"
- *
  * Hyper-Text Transport Protocol definitions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -119,7 +117,7 @@ typedef enum http_auth_e            /**** HTTP authentication types ****/
   HTTP_AUTH_MD5_SESS,                  /* MD5-session authentication in use */
   HTTP_AUTH_MD5_INT,                   /* Digest authentication in use for body */
   HTTP_AUTH_MD5_SESS_INT,              /* MD5-session authentication in use for body */
-  HTTP_AUTH_NEGOTIATE                  /* GSSAPI authentication in use @since CUPS 1.3/OS X 10.5@ */
+  HTTP_AUTH_NEGOTIATE                  /* GSSAPI authentication in use @since CUPS 1.3/macOS 10.5@ */
 } http_auth_t;
 
 typedef enum http_encoding_e           /**** HTTP transfer encoding values ****/
@@ -180,9 +178,9 @@ typedef enum http_field_e           /**** HTTP field names ****/
   HTTP_FIELD_UPGRADE,                  /* Upgrade field */
   HTTP_FIELD_USER_AGENT,               /* User-Agent field */
   HTTP_FIELD_WWW_AUTHENTICATE,         /* WWW-Authenticate field */
-  HTTP_FIELD_ACCEPT_ENCODING,          /* Accepting-Encoding field @since CUPS 1.7/OS X 10.9@ */
-  HTTP_FIELD_ALLOW,                    /* Allow field @since CUPS 1.7/OS X 10.9@ */
-  HTTP_FIELD_SERVER,                   /* Server field @since CUPS 1.7/OS X 10.9@ */
+  HTTP_FIELD_ACCEPT_ENCODING,          /* Accepting-Encoding field @since CUPS 1.7/macOS 10.9@ */
+  HTTP_FIELD_ALLOW,                    /* Allow field @since CUPS 1.7/macOS 10.9@ */
+  HTTP_FIELD_SERVER,                   /* Server field @since CUPS 1.7/macOS 10.9@ */
   HTTP_FIELD_MAX                       /* Maximum field index */
 } http_field_t;
 
@@ -211,8 +209,8 @@ typedef enum http_state_e           /**** HTTP state values; states
   HTTP_STATE_TRACE,                    /* TRACE command, waiting for blank line */
   HTTP_STATE_CONNECT,                  /* CONNECT command, waiting for blank line */
   HTTP_STATE_STATUS,                   /* Command complete, sending status */
-  HTTP_STATE_UNKNOWN_METHOD,           /* Unknown request method, waiting for blank line @since CUPS 1.7/OS X 10.9@ */
-  HTTP_STATE_UNKNOWN_VERSION           /* Unknown request method, waiting for blank line @since CUPS 1.7/OS X 10.9@ */
+  HTTP_STATE_UNKNOWN_METHOD,           /* Unknown request method, waiting for blank line @since CUPS 1.7/macOS 10.9@ */
+  HTTP_STATE_UNKNOWN_VERSION           /* Unknown request method, waiting for blank line @since CUPS 1.7/macOS 10.9@ */
 
 #  ifndef _CUPS_NO_DEPRECATED
 #    define HTTP_WAITING       HTTP_STATE_WAITING
@@ -235,7 +233,7 @@ typedef enum http_state_e           /**** HTTP state values; states
 typedef enum http_status_e             /**** HTTP status codes ****/
 {
   HTTP_STATUS_ERROR = -1,              /* An error response from httpXxxx() */
-  HTTP_STATUS_NONE = 0,                        /* No Expect value @since CUPS 1.7/OS X 10.9@ */
+  HTTP_STATUS_NONE = 0,                        /* No Expect value @since CUPS 1.7/macOS 10.9@ */
 
   HTTP_STATUS_CONTINUE = 100,          /* Everything OK, keep going... */
   HTTP_STATUS_SWITCHING_PROTOCOLS,     /* HTTP upgrade to TLS/SSL */
@@ -284,7 +282,7 @@ typedef enum http_status_e          /**** HTTP status codes ****/
 
   HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED = 1000,
                                        /* User canceled authorization @since CUPS 1.4@ */
-  HTTP_STATUS_CUPS_PKI_ERROR,          /* Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
+  HTTP_STATUS_CUPS_PKI_ERROR,          /* Error negotiating a secure connection @since CUPS 1.5/macOS 10.7@ */
   HTTP_STATUS_CUPS_WEBIF_DISABLED      /* Web interface is disabled @private@ */
 
 #  ifndef _CUPS_NO_DEPRECATED
@@ -411,7 +409,7 @@ typedef enum http_version_e         /**** HTTP version numbers ****/
 typedef union _http_addr_u             /**** Socket address union, which
                                         **** makes using IPv6 and other
                                         **** address types easier and
-                                        **** more portable. @since CUPS 1.2/OS X 10.5@
+                                        **** more portable. @since CUPS 1.2/macOS 10.5@
                                         ****/
 {
   struct sockaddr      addr;           /* Base structure for family value */
@@ -428,7 +426,7 @@ typedef union _http_addr_u          /**** Socket address union, which
 typedef struct http_addrlist_s         /**** Socket address list, which is
                                         **** used to enumerate all of the
                                         **** addresses that are associated
-                                        **** with a hostname. @since CUPS 1.2/OS X 10.5@
+                                        **** with a hostname. @since CUPS 1.2/macOS 10.5@
                                         ****/
 {
   struct http_addrlist_s *next;                /* Pointer to next address in list */
@@ -437,14 +435,14 @@ typedef struct http_addrlist_s            /**** Socket address list, which is
 
 typedef struct _http_s http_t;         /**** HTTP connection type ****/
 
-typedef struct http_credential_s       /**** HTTP credential data @since CUPS 1.5/OS X 10.7@ ****/
+typedef struct http_credential_s       /**** HTTP credential data @since CUPS 1.5/macOS 10.7@ ****/
 {
   void         *data;                  /* Pointer to credential data */
   size_t       datalen;                /* Credential length */
 } http_credential_t;
 
 typedef int (*http_timeout_cb_t)(http_t *http, void *user_data);
-                                       /**** HTTP timeout callback @since CUPS 1.5/OS X 10.7@ ****/
+                                       /**** HTTP timeout callback @since CUPS 1.5/macOS 10.7@ ****/
 
 
 
@@ -516,7 +514,7 @@ extern void         httpSeparate2(const char *uri,
                                      char *host, int hostlen, int *port,
                                      char *resource, int resourcelen) _CUPS_DEPRECATED_MSG("Use httpSeparateURI instead.");
 
-/**** New in CUPS 1.2/OS X 10.5 ****/
+/**** New in CUPS 1.2/macOS 10.5 ****/
 extern int             httpAddrAny(const http_addr_t *addr) _CUPS_API_1_2;
 extern http_addrlist_t *httpAddrConnect(http_addrlist_t *addrlist, int *sock) _CUPS_API_1_2;
 extern int             httpAddrEqual(const http_addr_t *addr1,
@@ -564,12 +562,12 @@ extern void               httpSetLength(http_t *http, size_t length) _CUPS_API_1_2;
 extern ssize_t         httpWrite2(http_t *http, const char *buffer,
                                   size_t length) _CUPS_API_1_2;
 
-/**** New in CUPS 1.3/OS X 10.5 ****/
+/**** New in CUPS 1.3/macOS 10.5 ****/
 extern char            *httpGetAuthString(http_t *http) _CUPS_API_1_3;
 extern void            httpSetAuthString(http_t *http, const char *scheme,
                                          const char *data) _CUPS_API_1_3;
 
-/**** New in CUPS 1.5/OS X 10.7 ****/
+/**** New in CUPS 1.5/macOS 10.7 ****/
 extern int             httpAddCredential(cups_array_t *credentials,
                                          const void *data, size_t datalen)
                                          _CUPS_API_1_5;
@@ -583,7 +581,7 @@ extern void         httpSetTimeout(http_t *http, double timeout,
                                       http_timeout_cb_t cb, void *user_data)
                                       _CUPS_API_1_5;
 
-/**** New in CUPS 1.6/OS X 10.8 ****/
+/**** New in CUPS 1.6/macOS 10.8 ****/
 extern http_addrlist_t *httpAddrConnect2(http_addrlist_t *addrlist, int *sock,
                                          int msec, int *cancel)
                                          _CUPS_API_1_6;
@@ -593,7 +591,7 @@ extern int          httpReconnect2(http_t *http, int msec, int *cancel)
                                       _CUPS_API_1_6;
 
 
-/**** New in CUPS 1.7/OS X 10.9 ****/
+/**** New in CUPS 1.7/macOS 10.9 ****/
 extern http_t          *httpAcceptConnection(int fd, int blocking)
                                              _CUPS_API_1_7;
 extern http_addrlist_t *httpAddrCopyList(http_addrlist_t *src) _CUPS_API_1_7;
@@ -620,7 +618,7 @@ extern void         httpSetDefaultField(http_t *http, http_field_t field,
 extern http_state_t    httpWriteResponse(http_t *http,
                                          http_status_t status) _CUPS_API_1_7;
 
-/* New in CUPS 2.0/OS X 10.10 */
+/* New in CUPS 2.0/macOS 10.10 */
 extern int             httpAddrClose(http_addr_t *addr, int fd) _CUPS_API_2_0;
 extern int             httpAddrFamily(http_addr_t *addr) _CUPS_API_2_0;
 extern int             httpCompareCredentials(cups_array_t *cred1, cups_array_t *cred2) _CUPS_API_2_0;
@@ -654,7 +652,3 @@ extern const char   *httpURIStatusString(http_uri_status_t status) _CUPS_API_2_0;
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_HTTP_H_ */
-
-/*
- * End of "$Id: http.h 12848 2015-08-26 18:51:57Z msweet $".
- */
index 262baf7..0dbd97e 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ipp-private.h 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Private IPP definitions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -75,7 +73,3 @@ extern _ipp_option_t  *_ippFindOption(const char *name);
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_IPP_H_ */
-
-/*
- * End of "$Id: ipp-private.h 11558 2014-02-06 18:33:34Z msweet $".
- */
index 6a5d940..fc53573 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ipp-support.c 12666 2015-05-25 19:38:09Z msweet $"
- *
  * Internet Printing Protocol support functions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -78,7 +76,8 @@ static const char * const ipp_status_oks[] =  /* "OK" status codes */
                  "client-error-account-info-needed",
                  "client-error-account-closed",
                  "client-error-account-limit-reached",
-                 "client-error-account-authorization-failed"
+                 "client-error-account-authorization-failed",
+                 "client-error-not-fetchable"
                },
                * const ipp_status_480s[] =     /* Vendor client errors */
                {
@@ -210,7 +209,7 @@ static const char * const ipp_std_ops[] =
                  "Close-Job",
                  "Identify-Printer",
                  "Validate-Document",
-                 "Send-Hardcopy-Document",
+                 "Add-Document-Images",
                  "Acknowledge-Document",
 
                  /* 0x0040 - 0x004a */
@@ -246,7 +245,8 @@ static const char * const ipp_std_ops[] =
                },
                * const ipp_cups_ops2[] =
                {
-                 "CUPS-Get-Document"
+                 "CUPS-Get-Document",
+                 "CUPS-Create-Local-Printer"
                },
                * const ipp_tag_names[] =
                {                       /* Value/group tag names */
@@ -608,7 +608,7 @@ static size_t       ipp_col_string(ipp_t *col, char *buffer, size_t bufsize);
  * trailing nul. The buffer pointer can be NULL to get the required length,
  * just like (v)snprintf.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 size_t                                 /* O - Number of bytes less nul */
@@ -839,7 +839,7 @@ ippAttributeString(
  * "attribute-name")@ will return a non-NULL pointer.  The array must be freed
  * using the @code cupsArrayDelete@ function.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 cups_array_t *                         /* O - CUPS array or @code NULL@ if all */
@@ -1563,6 +1563,7 @@ ippCreateRequestedArray(ipp_t *request)   /* I - IPP request */
     "printer-input-tray",              /* IPP JPS3 */
     "printer-is-accepting-jobs",
     "printer-is-shared",               /* CUPS extension */
+    "printer-is-temporary",            /* CUPS extension */
     "printer-kind",                    /* IPP Paid Printing */
     "printer-location",
     "printer-make-and-model",
@@ -1577,6 +1578,7 @@ ippCreateRequestedArray(ipp_t *request)   /* I - IPP request */
     "printer-organization",
     "printer-organizational-unit",
     "printer-output-tray",             /* IPP JPS3 */
+    "printer-queue-id",                        /* CUPS extension */
     "printer-settable-attributes-supported",
     "printer-state",
     "printer-state-change-date-time",
@@ -1986,7 +1988,7 @@ ippErrorString(ipp_status_t error)        /* I - Error status */
 /*
  * 'ippErrorValue()' - Return a status code for the given name.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ipp_status_t                           /* O - IPP status code */
@@ -2028,7 +2030,7 @@ ippErrorValue(const char *name)           /* I - Name */
 /*
  * 'ippOpString()' - Return a name for the given operation id.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 const char *                           /* O - Name */
@@ -2047,8 +2049,8 @@ ippOpString(ipp_op_t op)          /* I - Operation ID */
     return ("windows-ext");
   else if (op >= IPP_OP_CUPS_GET_DEFAULT && op <= IPP_OP_CUPS_GET_PPD)
     return (ipp_cups_ops[op - IPP_OP_CUPS_GET_DEFAULT]);
-  else if (op == IPP_OP_CUPS_GET_DOCUMENT)
-    return (ipp_cups_ops2[0]);
+  else if (op >= IPP_OP_CUPS_GET_DOCUMENT && op <= IPP_OP_CUPS_CREATE_LOCAL_PRINTER)
+    return (ipp_cups_ops2[op - IPP_OP_CUPS_GET_DOCUMENT]);
 
  /*
   * No, build an "0xxxxx" operation string...
@@ -2063,7 +2065,7 @@ ippOpString(ipp_op_t op)          /* I - Operation ID */
 /*
  * 'ippOpValue()' - Return an operation id for the given name.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ipp_op_t                               /* O - Operation ID */
@@ -2161,7 +2163,7 @@ ippStateString(ipp_state_t state) /* I - State value */
  *
  * The returned names are defined in RFC 2911 and 3382.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 const char *                           /* O - Tag name */
@@ -2181,7 +2183,7 @@ ippTagString(ipp_tag_t tag)               /* I - Tag value */
  *
  * The tag names are defined in RFC 2911 and 3382.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 ipp_tag_t                              /* O - Tag value */
@@ -2282,8 +2284,3 @@ ipp_col_string(ipp_t  *col,               /* I - Collection attribute */
 
   return ((size_t)(bufptr - buffer));
 }
-
-
-/*
- * End of "$Id: ipp-support.c 12666 2015-05-25 19:38:09Z msweet $".
- */
index 5e7b730..1964962 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ipp.c 12468 2015-02-01 04:50:43Z msweet $"
- *
  * Internet Printing Protocol functions for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -127,8 +125,7 @@ ippAddBoolean(ipp_t      *ipp,              /* I - IPP message */
   ipp_attribute_t      *attr;          /* New attribute */
 
 
-  DEBUG_printf(("ippAddBoolean(ipp=%p, group=%02x(%s), name=\"%s\", value=%d)",
-                ipp, group, ippTagString(group), name, value));
+  DEBUG_printf(("ippAddBoolean(ipp=%p, group=%02x(%s), name=\"%s\", value=%d)", (void *)ipp, group, ippTagString(group), name, value));
 
  /*
   * Range check input...
@@ -176,9 +173,7 @@ ippAddBooleans(ipp_t      *ipp,             /* I - IPP message */
   _ipp_value_t         *value;         /* Current value */
 
 
-  DEBUG_printf(("ippAddBooleans(ipp=%p, group=%02x(%s), name=\"%s\", "
-                "num_values=%d, values=%p)", ipp, group, ippTagString(group),
-                name, num_values, values));
+  DEBUG_printf(("ippAddBooleans(ipp=%p, group=%02x(%s), name=\"%s\", num_values=%d, values=%p)", (void *)ipp, group, ippTagString(group), name, num_values, (void *)values));
 
  /*
   * Range check input...
@@ -220,7 +215,7 @@ ippAddBooleans(ipp_t      *ipp,             /* I - IPP message */
  * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
  * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 ipp_attribute_t *                      /* O - New attribute */
@@ -232,8 +227,7 @@ ippAddCollection(ipp_t      *ipp,   /* I - IPP message */
   ipp_attribute_t      *attr;          /* New attribute */
 
 
-  DEBUG_printf(("ippAddCollection(ipp=%p, group=%02x(%s), name=\"%s\", "
-                "value=%p)", ipp, group, ippTagString(group), name, value));
+  DEBUG_printf(("ippAddCollection(ipp=%p, group=%02x(%s), name=\"%s\", value=%p)", (void *)ipp, group, ippTagString(group), name, (void *)value));
 
  /*
   * Range check input...
@@ -271,7 +265,7 @@ ippAddCollection(ipp_t      *ipp,   /* I - IPP message */
  * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
  * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 ipp_attribute_t *                      /* O - New attribute */
@@ -287,9 +281,7 @@ ippAddCollections(
   _ipp_value_t         *value;         /* Current value */
 
 
-  DEBUG_printf(("ippAddCollections(ipp=%p, group=%02x(%s), name=\"%s\", "
-                "num_values=%d, values=%p)", ipp, group, ippTagString(group),
-                name, num_values, values));
+  DEBUG_printf(("ippAddCollections(ipp=%p, group=%02x(%s), name=\"%s\", num_values=%d, values=%p)", (void *)ipp, group, ippTagString(group), name, num_values, (void *)values));
 
  /*
   * Range check input...
@@ -345,8 +337,7 @@ ippAddDate(ipp_t             *ipp,  /* I - IPP message */
   ipp_attribute_t      *attr;          /* New attribute */
 
 
-  DEBUG_printf(("ippAddDate(ipp=%p, group=%02x(%s), name=\"%s\", value=%p)",
-                ipp, group, ippTagString(group), name, value));
+  DEBUG_printf(("ippAddDate(ipp=%p, group=%02x(%s), name=\"%s\", value=%p)", (void *)ipp, group, ippTagString(group), name, (void *)value));
 
  /*
   * Range check input...
@@ -395,9 +386,7 @@ ippAddInteger(ipp_t      *ipp,              /* I - IPP message */
   ipp_attribute_t      *attr;          /* New attribute */
 
 
-  DEBUG_printf(("ippAddInteger(ipp=%p, group=%02x(%s), type=%02x(%s), "
-                "name=\"%s\", value=%d)", ipp, group, ippTagString(group),
-               value_tag, ippTagString(value_tag), name, value));
+  DEBUG_printf(("ippAddInteger(ipp=%p, group=%02x(%s), type=%02x(%s), name=\"%s\", value=%d)", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, value));
 
   value_tag &= IPP_TAG_CUPS_MASK;
 
@@ -466,10 +455,7 @@ ippAddIntegers(ipp_t      *ipp,            /* I - IPP message */
   _ipp_value_t         *value;         /* Current value */
 
 
-  DEBUG_printf(("ippAddIntegers(ipp=%p, group=%02x(%s), type=%02x(%s), "
-                "name=\"%s\", num_values=%d, values=%p)", ipp,
-               group, ippTagString(group), value_tag, ippTagString(value_tag), name,
-               num_values, values));
+  DEBUG_printf(("ippAddIntegers(ipp=%p, group=%02x(%s), type=%02x(%s), name=\"%s\", num_values=%d, values=%p)", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, num_values, (void *)values));
 
   value_tag &= IPP_TAG_CUPS_MASK;
 
@@ -521,7 +507,7 @@ ippAddIntegers(ipp_t      *ipp,             /* I - IPP message */
  * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
  * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ipp_attribute_t        *                       /* O - New attribute */
@@ -585,7 +571,7 @@ ippAddOctetString(ipp_t      *ipp,  /* I - IPP message */
  * (@code IPP_TAG_NOTSETTABLE@), delete-attribute (@code IPP_TAG_DELETEATTR@), and
  * admin-define (@code IPP_TAG_ADMINDEFINE@).
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_attribute_t        *                       /* O - New attribute */
@@ -594,9 +580,7 @@ ippAddOutOfBand(ipp_t      *ipp,    /* I - IPP message */
                 ipp_tag_t  value_tag,  /* I - Type of attribute */
                const char *name)       /* I - Name of attribute */
 {
-  DEBUG_printf(("ippAddOutOfBand(ipp=%p, group=%02x(%s), value_tag=%02x(%s), "
-                "name=\"%s\")", ipp, group, ippTagString(group), value_tag,
-                ippTagString(value_tag), name));
+  DEBUG_printf(("ippAddOutOfBand(ipp=%p, group=%02x(%s), value_tag=%02x(%s), name=\"%s\")", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name));
 
   value_tag &= IPP_TAG_CUPS_MASK;
 
@@ -648,9 +632,7 @@ ippAddRange(ipp_t      *ipp,                /* I - IPP message */
   ipp_attribute_t      *attr;          /* New attribute */
 
 
-  DEBUG_printf(("ippAddRange(ipp=%p, group=%02x(%s), name=\"%s\", lower=%d, "
-                "upper=%d)", ipp, group, ippTagString(group), name, lower,
-               upper));
+  DEBUG_printf(("ippAddRange(ipp=%p, group=%02x(%s), name=\"%s\", lower=%d, upper=%d)", (void *)ipp, group, ippTagString(group), name, lower, upper));
 
  /*
   * Range check input...
@@ -700,9 +682,7 @@ ippAddRanges(ipp_t      *ipp,               /* I - IPP message */
   _ipp_value_t         *value;         /* Current value */
 
 
-  DEBUG_printf(("ippAddRanges(ipp=%p, group=%02x(%s), name=\"%s\", "
-                "num_values=%d, lower=%p, upper=%p)", ipp, group,
-               ippTagString(group), name, num_values, lower, upper));
+  DEBUG_printf(("ippAddRanges(ipp=%p, group=%02x(%s), name=\"%s\", num_values=%d, lower=%p, upper=%p)", (void *)ipp, group, ippTagString(group), name, num_values, (void *)lower, (void *)upper));
 
  /*
   * Range check input...
@@ -759,8 +739,7 @@ ippAddResolution(ipp_t      *ipp,   /* I - IPP message */
   ipp_attribute_t      *attr;          /* New attribute */
 
 
-  DEBUG_printf(("ippAddResolution(ipp=%p, group=%02x(%s), name=\"%s\", "
-                "units=%d, xres=%d, yres=%d)", ipp, group,
+  DEBUG_printf(("ippAddResolution(ipp=%p, group=%02x(%s), name=\"%s\", units=%d, xres=%d, yres=%d)", (void *)ipp, group,
                ippTagString(group), name, units, xres, yres));
 
  /*
@@ -815,9 +794,7 @@ ippAddResolutions(ipp_t      *ipp,  /* I - IPP message */
   _ipp_value_t         *value;         /* Current value */
 
 
-  DEBUG_printf(("ippAddResolutions(ipp=%p, group=%02x(%s), name=\"%s\", "
-                "num_value=%d, units=%d, xres=%p, yres=%p)", ipp, group,
-               ippTagString(group), name, num_values, units, xres, yres));
+  DEBUG_printf(("ippAddResolutions(ipp=%p, group=%02x(%s), name=\"%s\", num_value=%d, units=%d, xres=%p, yres=%p)", (void *)ipp, group, ippTagString(group), name, num_values, units, (void *)xres, (void *)yres));
 
  /*
   * Range check input...
@@ -862,7 +839,7 @@ ippAddResolutions(ipp_t      *ipp,  /* I - IPP message */
 ipp_attribute_t *                      /* O - New attribute */
 ippAddSeparator(ipp_t *ipp)            /* I - IPP message */
 {
-  DEBUG_printf(("ippAddSeparator(ipp=%p)", ipp));
+  DEBUG_printf(("ippAddSeparator(ipp=%p)", (void *)ipp));
 
  /*
   * Range check input...
@@ -916,10 +893,7 @@ ippAddString(ipp_t      *ipp,              /* I - IPP message */
                                        /* Charset/language code buffer */
 
 
-  DEBUG_printf(("ippAddString(ipp=%p, group=%02x(%s), value_tag=%02x(%s), "
-                "name=\"%s\", language=\"%s\", value=\"%s\")", ipp,
-               group, ippTagString(group), value_tag, ippTagString(value_tag), name,
-               language, value));
+  DEBUG_printf(("ippAddString(ipp=%p, group=%02x(%s), value_tag=%02x(%s), name=\"%s\", language=\"%s\", value=\"%s\")", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, language, value));
 
  /*
   * Range check input...
@@ -1025,7 +999,7 @@ ippAddString(ipp_t      *ipp,              /* I - IPP message */
  * needed.  The formatted string is truncated as needed to the maximum length of
  * the corresponding value type.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 ipp_attribute_t *                      /* O - New attribute */
@@ -1078,7 +1052,7 @@ ippAddStringf(ipp_t      *ipp,            /* I - IPP message */
  * stdarg pointer @code ap@.  The formatted string is truncated as needed to the
  * maximum length of the corresponding value type.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 ipp_attribute_t *                      /* O - New attribute */
@@ -1251,10 +1225,7 @@ ippAddStrings(
   char                 code[32];       /* Language/charset value buffer */
 
 
-  DEBUG_printf(("ippAddStrings(ipp=%p, group=%02x(%s), value_tag=%02x(%s), "
-                "name=\"%s\", num_values=%d, language=\"%s\", values=%p)", ipp,
-               group, ippTagString(group), value_tag, ippTagString(value_tag), name,
-               num_values, language, values));
+  DEBUG_printf(("ippAddStrings(ipp=%p, group=%02x(%s), value_tag=%02x(%s), name=\"%s\", num_values=%d, language=\"%s\", values=%p)", (void *)ipp, group, ippTagString(group), value_tag, ippTagString(value_tag), name, num_values, language, (void *)values));
 
  /*
   * Range check input...
@@ -1360,7 +1331,7 @@ ippAddStrings(
  * enum value, or the value falls within one of the rangeOfInteger values for
  * the attribute.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 1 on a match, 0 on no match */
@@ -1411,7 +1382,7 @@ ippContainsInteger(
  * Returns non-zero when the attribute contains a matching charset, keyword,
  * language, mimeMediaType, name, text, URI, or URI scheme value.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 1 on a match, 0 on no match */
@@ -1423,7 +1394,7 @@ ippContainsString(
   _ipp_value_t *avalue;                /* Current attribute value */
 
 
-  DEBUG_printf(("ippContainsString(attr=%p, value=\"%s\")", attr, value));
+  DEBUG_printf(("ippContainsString(attr=%p, value=\"%s\")", (void *)attr, value));
 
  /*
   * Range check input...
@@ -1487,7 +1458,7 @@ ippContainsString(
  * created - this should only be done as long as the original source IPP message will
  * not be freed for the life of the destination.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 
@@ -1503,8 +1474,7 @@ ippCopyAttribute(
                        *dstval;        /* Destination value */
 
 
-  DEBUG_printf(("ippCopyAttribute(dst=%p, srcattr=%p, quickcopy=%d)", dst, srcattr,
-                quickcopy));
+  DEBUG_printf(("ippCopyAttribute(dst=%p, srcattr=%p, quickcopy=%d)", (void *)dst, (void *)srcattr, quickcopy));
 
  /*
   * Range check input...
@@ -1738,7 +1708,7 @@ ippCopyAttribute(
  * 0 to skip it. The function may also choose to do a partial copy of the source attribute
  * itself.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on success, 0 on error */
@@ -1752,8 +1722,7 @@ ippCopyAttributes(
   ipp_attribute_t      *srcattr;       /* Source attribute */
 
 
-  DEBUG_printf(("ippCopyAttributes(dst=%p, src=%p, quickcopy=%d, cb=%p, context=%p)",
-                dst, src, quickcopy, cb, context));
+  DEBUG_printf(("ippCopyAttributes(dst=%p, src=%p, quickcopy=%d, cb=%p, context=%p)", (void *)dst, (void *)src, quickcopy, (void *)cb, context));
 
  /*
   * Range check input...
@@ -1838,7 +1807,7 @@ ippDelete(ipp_t *ipp)                     /* I - IPP message */
                        *next;          /* Next attribute */
 
 
-  DEBUG_printf(("ippDelete(ipp=%p)", ipp));
+  DEBUG_printf(("ippDelete(ipp=%p)", (void *)ipp));
 
   if (!ipp)
     return;
@@ -1866,7 +1835,7 @@ ippDelete(ipp_t *ipp)                     /* I - IPP message */
 /*
  * 'ippDeleteAttribute()' - Delete a single attribute in an IPP message.
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 void
@@ -1878,8 +1847,7 @@ ippDeleteAttribute(
                        *prev;          /* Previous attribute */
 
 
-  DEBUG_printf(("ippDeleteAttribute(ipp=%p, attr=%p(%s))", ipp, attr,
-                attr ? attr->name : "(null)"));
+  DEBUG_printf(("ippDeleteAttribute(ipp=%p, attr=%p(%s))", (void *)ipp, (void *)attr, attr ? attr->name : "(null)"));
 
  /*
   * Range check input...
@@ -1941,7 +1909,7 @@ ippDeleteAttribute(
  *
  * Deleting all values in an attribute deletes the attribute.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -1994,8 +1962,7 @@ ippFindAttribute(ipp_t      *ipp, /* I - IPP message */
                  const char *name,     /* I - Name of attribute */
                 ipp_tag_t  type)       /* I - Type of attribute */
 {
-  DEBUG_printf(("2ippFindAttribute(ipp=%p, name=\"%s\", type=%02x(%s))", ipp,
-                name, type, ippTagString(type)));
+  DEBUG_printf(("2ippFindAttribute(ipp=%p, name=\"%s\", type=%02x(%s))", (void *)ipp, name, type, ippTagString(type)));
 
   if (!ipp || !name)
     return (NULL);
@@ -2035,8 +2002,7 @@ ippFindNextAttribute(ipp_t      *ipp,     /* I - IPP message */
                        *child = NULL;  /* Child attribute name */
 
 
-  DEBUG_printf(("2ippFindNextAttribute(ipp=%p, name=\"%s\", type=%02x(%s))",
-                ipp, name, type, ippTagString(type)));
+  DEBUG_printf(("2ippFindNextAttribute(ipp=%p, name=\"%s\", type=%02x(%s))", (void *)ipp, name, type, ippTagString(type)));
 
   if (!ipp || !name)
     return (NULL);
@@ -2107,8 +2073,7 @@ ippFindNextAttribute(ipp_t      *ipp,     /* I - IPP message */
 
   for (; attr != NULL; ipp->prev = attr, attr = attr->next)
   {
-    DEBUG_printf(("4ippFindAttribute: attr=%p, name=\"%s\"", attr,
-                  attr->name));
+    DEBUG_printf(("4ippFindAttribute: attr=%p, name=\"%s\"", (void *)attr, attr->name));
 
     value_tag = (ipp_tag_t)(attr->value_tag & IPP_TAG_CUPS_MASK);
 
@@ -2148,7 +2113,7 @@ ippFindNextAttribute(ipp_t      *ipp,     /* I - IPP message */
 /*
  * 'ippFirstAttribute()' - Return the first attribute in the message.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_attribute_t        *                       /* O - First attribute or @code NULL@ if none */
@@ -2175,7 +2140,7 @@ ippFirstAttribute(ipp_t *ipp)             /* I - IPP message */
  * The @code element@ parameter specifies which value to get from 0 to
  * @link ippGetCount(attr)@ - 1.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - Boolean value or 0 on error */
@@ -2204,7 +2169,7 @@ ippGetBoolean(ipp_attribute_t *attr,      /* I - IPP attribute */
  * The @code element@ parameter specifies which value to get from 0 to
  * @link ippGetCount(attr)@ - 1.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_t *                                        /* O - Collection value or @code NULL@ on error */
@@ -2231,7 +2196,7 @@ ippGetCollection(
 /*
  * 'ippGetCount()' - Get the number of values in an attribute.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - Number of values or 0 on error */
@@ -2258,7 +2223,7 @@ ippGetCount(ipp_attribute_t *attr)        /* I - IPP attribute */
  * The @code element@ parameter specifies which value to get from 0 to
  * @link ippGetCount(attr)@ - 1.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 const ipp_uchar_t *                    /* O - Date value or @code NULL@ */
@@ -2284,7 +2249,7 @@ ippGetDate(ipp_attribute_t *attr, /* I - IPP attribute */
 /*
  * 'ippGetGroupTag()' - Get the group associated with an attribute.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_tag_t                              /* O - Group tag or @code IPP_TAG_ZERO@ on error */
@@ -2311,7 +2276,7 @@ ippGetGroupTag(ipp_attribute_t *attr)     /* I - IPP attribute */
  * The @code element@ parameter specifies which value to get from 0 to
  * @link ippGetCount(attr)@ - 1.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - Value or 0 on error */
@@ -2337,7 +2302,7 @@ ippGetInteger(ipp_attribute_t *attr,      /* I - IPP attribute */
 /*
  * 'ippGetName()' - Get the attribute name.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 const char *                           /* O - Attribute name or @code NULL@ for separators */
@@ -2364,7 +2329,7 @@ ippGetName(ipp_attribute_t *attr) /* I - IPP attribute */
  * The @code element@ parameter specifies which value to get from 0 to
  * @link ippGetCount(attr)@ - 1.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 void *                                 /* O - Pointer to octetString data */
@@ -2400,7 +2365,7 @@ ippGetOctetString(
 /*
  * 'ippGetOperation()' - Get the operation ID in an IPP message.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_op_t                               /* O - Operation ID or 0 on error */
@@ -2427,7 +2392,7 @@ ippGetOperation(ipp_t *ipp)               /* I - IPP request message */
  * The @code element@ parameter specifies which value to get from 0 to
  * @link ippGetCount(attr)@ - 1.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - Lower value of range or 0 */
@@ -2462,7 +2427,7 @@ ippGetRange(ipp_attribute_t *attr,        /* I - IPP attribute */
 /*
  * 'ippGetRequestId()' - Get the request ID from an IPP message.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - Request ID or 0 on error */
@@ -2489,7 +2454,7 @@ ippGetRequestId(ipp_t *ipp)               /* I - IPP message */
  * The @code element@ parameter specifies which value to get from 0 to
  * @link ippGetCount(attr)@ - 1.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - Horizontal/cross feed resolution or 0 */
@@ -2532,7 +2497,7 @@ ippGetResolution(
 /*
  * 'ippGetState()' - Get the IPP message state.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_state_t                            /* O - IPP message state value */
@@ -2556,7 +2521,7 @@ ippGetState(ipp_t *ipp)                   /* I - IPP message */
 /*
  * 'ippGetStatusCode()' - Get the status code from an IPP response or event message.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_status_t                           /* O - Status code in IPP message */
@@ -2583,7 +2548,7 @@ ippGetStatusCode(ipp_t *ipp)              /* I - IPP response or event message */
  * The @code element@ parameter specifies which value to get from 0 to
  * @link ippGetCount(attr)@ - 1.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 const char *
@@ -2614,7 +2579,7 @@ ippGetString(ipp_attribute_t *attr,       /* I - IPP attribute */
 /*
  * 'ippGetValueTag()' - Get the value tag for an attribute.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_tag_t                              /* O - Value tag or @code IPP_TAG_ZERO@ on error */
@@ -2638,7 +2603,7 @@ ippGetValueTag(ipp_attribute_t *attr)     /* I - IPP attribute */
 /*
  * 'ippGetVersion()' - Get the major and minor version number from an IPP message.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - Major version number or 0 on error */
@@ -2682,7 +2647,7 @@ ippLength(ipp_t *ipp)                     /* I - IPP message */
 /*
  * 'ippNextAttribute()' - Return the next attribute in the message.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 ipp_attribute_t *                      /* O - Next attribute or @code NULL@ if none */
@@ -2731,7 +2696,7 @@ ippNew(void)
     temp->use                    = 1;
   }
 
-  DEBUG_printf(("1ippNew: Returning %p", temp));
+  DEBUG_printf(("1ippNew: Returning %p", (void *)temp));
 
   return (temp);
 }
@@ -2744,7 +2709,7 @@ ippNew(void)
  * attributes-natural-language attributes added. The
  * attributes-natural-language value is derived from the current locale.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ipp_t *                                        /* O - IPP request message */
@@ -2811,7 +2776,7 @@ ippNewRequest(ipp_op_t op)                /* I - Operation code */
  * "utf-8" and a value derived from the current locale are substituted,
  * respectively.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 ipp_t *                                        /* O - IPP response message */
@@ -2917,14 +2882,12 @@ ipp_state_t                             /* O - Current state */
 ippRead(http_t *http,                  /* I - HTTP connection */
         ipp_t  *ipp)                   /* I - IPP data */
 {
-  DEBUG_printf(("ippRead(http=%p, ipp=%p), data_remaining=" CUPS_LLFMT,
-                http, ipp, CUPS_LLCAST (http ? http->data_remaining : -1)));
+  DEBUG_printf(("ippRead(http=%p, ipp=%p), data_remaining=" CUPS_LLFMT, (void *)http, (void *)ipp, CUPS_LLCAST (http ? http->data_remaining : -1)));
 
   if (!http)
     return (IPP_STATE_ERROR);
 
-  DEBUG_printf(("2ippRead: http->state=%d, http->used=%d", http->state,
-                http->used));
+  DEBUG_printf(("2ippRead: http->state=%d, http->used=%d", http->state, http->used));
 
   return (ippReadIO(http, (ipp_iocb_t)ipp_read_http, http->blocking, NULL,
                     ipp));
@@ -2934,14 +2897,14 @@ ippRead(http_t *http,                   /* I - HTTP connection */
 /*
  * 'ippReadFile()' - Read data for an IPP message from a file.
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 ipp_state_t                            /* O - Current state */
 ippReadFile(int   fd,                  /* I - HTTP data */
             ipp_t *ipp)                        /* I - IPP data */
 {
-  DEBUG_printf(("ippReadFile(fd=%d, ipp=%p)", fd, ipp));
+  DEBUG_printf(("ippReadFile(fd=%d, ipp=%p)", fd, (void *)ipp));
 
   return (ippReadIO(&fd, (ipp_iocb_t)ipp_read_file, 1, NULL, ipp));
 }
@@ -2950,7 +2913,7 @@ ippReadFile(int   fd,                     /* I - HTTP data */
 /*
  * 'ippReadIO()' - Read data for an IPP message.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ipp_state_t                            /* O - Current state */
@@ -2971,8 +2934,7 @@ ippReadIO(void       *src,                /* I - Data source */
   _ipp_value_t         *value;         /* Current value */
 
 
-  DEBUG_printf(("ippReadIO(src=%p, cb=%p, blocking=%d, parent=%p, ipp=%p)",
-                src, cb, blocking, parent, ipp));
+  DEBUG_printf(("ippReadIO(src=%p, cb=%p, blocking=%d, parent=%p, ipp=%p)", (void *)src, (void *)cb, blocking, (void *)parent, (void *)ipp));
   DEBUG_printf(("2ippReadIO: ipp->state=%d", ipp ? ipp->state : IPP_STATE_ERROR));
 
   if (!src || !ipp)
@@ -3042,8 +3004,7 @@ ippReadIO(void       *src,                /* I - Data source */
            return (IPP_STATE_ERROR);
          }
 
-         DEBUG_printf(("2ippReadIO: ipp->current=%p, ipp->prev=%p",
-                       ipp->current, ipp->prev));
+         DEBUG_printf(("2ippReadIO: ipp->current=%p, ipp->prev=%p", (void *)ipp->current, (void *)ipp->prev));
 
         /*
          * Read this attribute...
@@ -3103,8 +3064,7 @@ ippReadIO(void       *src,                /* I - Data source */
 
            ipp->curtag  = tag;
            ipp->current = NULL;
-           DEBUG_printf(("2ippReadIO: group tag=%x(%s), ipp->prev=%p", tag,
-                         ippTagString(tag), ipp->prev));
+           DEBUG_printf(("2ippReadIO: group tag=%x(%s), ipp->prev=%p", tag, ippTagString(tag), (void *)ipp->prev));
            continue;
          }
 
@@ -3275,8 +3235,7 @@ ippReadIO(void       *src,                /* I - Data source */
              return (IPP_STATE_ERROR);
            }
 
-           DEBUG_printf(("2ippReadIO: membername, ipp->current=%p, ipp->prev=%p",
-                         ipp->current, ipp->prev));
+           DEBUG_printf(("2ippReadIO: membername, ipp->current=%p, ipp->prev=%p", (void *)ipp->current, (void *)ipp->prev));
 
            value = attr->values;
          }
@@ -3307,8 +3266,7 @@ ippReadIO(void       *src,                /* I - Data source */
              return (IPP_STATE_ERROR);
            }
 
-           DEBUG_printf(("2ippReadIO: name=\"%s\", ipp->current=%p, "
-                         "ipp->prev=%p", buffer, ipp->current, ipp->prev));
+           DEBUG_printf(("2ippReadIO: name=\"%s\", ipp->current=%p, ipp->prev=%p", buffer, (void *)ipp->current, (void *)ipp->prev));
 
            value = attr->values;
          }
@@ -3733,7 +3691,7 @@ ippReadIO(void       *src,                /* I - Data source */
  * The @code element@ parameter specifies which value to set from 0 to
  * @link ippGetCount(attr)@.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -3775,7 +3733,7 @@ ippSetBoolean(ipp_t           *ipp,       /* I  - IPP message */
  * The @code element@ parameter specifies which value to set from 0 to
  * @link ippGetCount(attr)@.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -3824,7 +3782,7 @@ ippSetCollection(
  * The @code element@ parameter specifies which value to set from 0 to
  * @link ippGetCount(attr)@.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -3869,7 +3827,7 @@ ippSetDate(ipp_t             *ipp,        /* I  - IPP message */
  * (@code IPP_TAG_OPERATION@), printer (@code IPP_TAG_PRINTER@), subscription
  * (@code IPP_TAG_SUBSCRIPTION@), or unsupported (@code IPP_TAG_UNSUPPORTED_GROUP@).
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -3908,7 +3866,7 @@ ippSetGroupTag(
  * The @code element@ parameter specifies which value to set from 0 to
  * @link ippGetCount(attr)@.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -3948,7 +3906,7 @@ ippSetInteger(ipp_t           *ipp,       /* I  - IPP message */
  *
  * The @code attr@ parameter may be modified as a result of setting the value.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -3993,7 +3951,7 @@ ippSetName(ipp_t           *ipp,  /* I  - IPP message */
  * The @code element@ parameter specifies which value to set from 0 to
  * @link ippGetCount(attr)@.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -4076,7 +4034,7 @@ ippSetOctetString(
  * The @code ipp@ parameter refers to an IPP message previously created using
  * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -4111,7 +4069,7 @@ ippSetOperation(ipp_t    *ipp,            /* I - IPP request message */
  * The @code element@ parameter specifies which value to set from 0 to
  * @link ippGetCount(attr)@.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -4154,7 +4112,7 @@ ippSetRange(ipp_t           *ipp, /* I  - IPP message */
  *
  * The @code request_id@ parameter must be greater than 0.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -4191,7 +4149,7 @@ ippSetRequestId(ipp_t *ipp,               /* I - IPP message */
  * The @code element@ parameter specifies which value to set from 0 to
  * @link ippGetCount(attr)@.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -4233,7 +4191,7 @@ ippSetResolution(
 /*
  * 'ippSetState()' - Set the current state of the IPP message.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -4264,7 +4222,7 @@ ippSetState(ipp_t       *ipp,             /* I - IPP message */
  * The @code ipp@ parameter refers to an IPP message previously created using
  * the @link ippNew@, @link ippNewRequest@, or  @link ippNewResponse@ functions.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -4299,7 +4257,7 @@ ippSetStatusCode(ipp_t        *ipp,       /* I - IPP response or event message */
  * The @code element@ parameter specifies which value to set from 0 to
  * @link ippGetCount(attr)@.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -4366,7 +4324,7 @@ ippSetString(ipp_t           *ipp,        /* I  - IPP message */
  * needed.  The formatted string is truncated as needed to the maximum length of
  * the corresponding value type.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -4404,7 +4362,7 @@ ippSetStringf(ipp_t           *ipp,       /* I  - IPP message */
  * needed.  The formatted string is truncated as needed to the maximum length of
  * the corresponding value type.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -4556,7 +4514,7 @@ ippSetStringfv(ipp_t           *ipp,      /* I  - IPP message */
  * code in the "attributes-natural-language" attribute or, if not present, the language
  * code for the current locale.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -4713,7 +4671,7 @@ ippSetValueTag(
  *
  * The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.
  *
- * @since CUPS 1.6/OS X 10.8@
+ * @since CUPS 1.6/macOS 10.8@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -4794,7 +4752,7 @@ ippTimeToDate(time_t t)                   /* I - UNIX time value */
  * value tag.  1 is returned if the attribute is valid, 0 otherwise.  On
  * failure, cupsLastErrorString() is set to a human-readable message.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 1 if valid, 0 otherwise */
@@ -5433,7 +5391,7 @@ ippValidateAttribute(
  * attribute.  Like @link ippValidateAttribute@, cupsLastErrorString() is set
  * to a human-readable message on failure.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 1 if valid, 0 otherwise */
@@ -5461,7 +5419,7 @@ ipp_state_t                               /* O - Current state */
 ippWrite(http_t *http,                 /* I - HTTP connection */
          ipp_t  *ipp)                  /* I - IPP data */
 {
-  DEBUG_printf(("ippWrite(http=%p, ipp=%p)", http, ipp));
+  DEBUG_printf(("ippWrite(http=%p, ipp=%p)", (void *)http, (void *)ipp));
 
   if (!http)
     return (IPP_STATE_ERROR);
@@ -5473,14 +5431,14 @@ ippWrite(http_t *http,                  /* I - HTTP connection */
 /*
  * 'ippWriteFile()' - Write data for an IPP message to a file.
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 ipp_state_t                            /* O - Current state */
 ippWriteFile(int   fd,                 /* I - HTTP data */
              ipp_t *ipp)               /* I - IPP data */
 {
-  DEBUG_printf(("ippWriteFile(fd=%d, ipp=%p)", fd, ipp));
+  DEBUG_printf(("ippWriteFile(fd=%d, ipp=%p)", fd, (void *)ipp));
 
   ipp->state = IPP_STATE_IDLE;
 
@@ -5491,7 +5449,7 @@ ippWriteFile(int   fd,                    /* I - HTTP data */
 /*
  * 'ippWriteIO()' - Write data for an IPP message.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ipp_state_t                            /* O - Current state */
@@ -5509,8 +5467,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
   _ipp_value_t         *value;         /* Current value */
 
 
-  DEBUG_printf(("ippWriteIO(dst=%p, cb=%p, blocking=%d, parent=%p, ipp=%p)",
-                dst, cb, blocking, parent, ipp));
+  DEBUG_printf(("ippWriteIO(dst=%p, cb=%p, blocking=%d, parent=%p, ipp=%p)", (void *)dst, (void *)cb, blocking, (void *)parent, (void *)ipp));
 
   if (!dst || !ipp)
     return (IPP_STATE_ERROR);
@@ -5572,7 +5529,7 @@ ippWriteIO(void       *dst,               /* I - Destination */
        ipp->current = ipp->attrs;
        ipp->curtag  = IPP_TAG_ZERO;
 
-       DEBUG_printf(("1ippWriteIO: ipp->current=%p", ipp->current));
+       DEBUG_printf(("1ippWriteIO: ipp->current=%p", (void *)ipp->current));
 
        /*
         * If blocking is disabled, stop here...
@@ -6401,8 +6358,7 @@ ipp_add_attr(ipp_t      *ipp,             /* I - IPP message */
   ipp_attribute_t      *attr;          /* New attribute */
 
 
-  DEBUG_printf(("4ipp_add_attr(ipp=%p, name=\"%s\", group_tag=0x%x, value_tag=0x%x, "
-                "num_values=%d)", ipp, name, group_tag, value_tag, num_values));
+  DEBUG_printf(("4ipp_add_attr(ipp=%p, name=\"%s\", group_tag=0x%x, value_tag=0x%x, num_values=%d)", (void *)ipp, name, group_tag, value_tag, num_values));
 
  /*
   * Range check input...
@@ -6449,7 +6405,7 @@ ipp_add_attr(ipp_t      *ipp,             /* I - IPP message */
     ipp->last = ipp->current = attr;
   }
 
-  DEBUG_printf(("5ipp_add_attr: Returning %p", attr));
+  DEBUG_printf(("5ipp_add_attr: Returning %p", (void *)attr));
 
   return (attr);
 }
@@ -6468,8 +6424,7 @@ ipp_free_values(ipp_attribute_t *attr,    /* I - Attribute to free values from */
   _ipp_value_t *value;                 /* Current value */
 
 
-  DEBUG_printf(("4ipp_free_values(attr=%p, element=%d, count=%d)", attr,
-                element, count));
+  DEBUG_printf(("4ipp_free_values(attr=%p, element=%d, count=%d)", (void *)attr, element, count));
 
   if (!(attr->value_tag & IPP_TAG_CUPS_CONST))
   {
@@ -6638,7 +6593,7 @@ ipp_length(ipp_t *ipp,                    /* I - IPP message or collection */
   _ipp_value_t         *value;         /* Current value */
 
 
-  DEBUG_printf(("3ipp_length(ipp=%p, collection=%d)", ipp, collection));
+  DEBUG_printf(("3ipp_length(ipp=%p, collection=%d)", (void *)ipp, collection));
 
   if (!ipp)
   {
@@ -6798,8 +6753,7 @@ ipp_read_http(http_t      *http,  /* I - Client connection */
                bytes;                  /* Bytes read this pass */
 
 
-  DEBUG_printf(("7ipp_read_http(http=%p, buffer=%p, length=%d)",
-                http, buffer, (int)length));
+  DEBUG_printf(("7ipp_read_http(http=%p, buffer=%p, length=%d)", (void *)http, (void *)buffer, (int)length));
 
  /*
   * Loop until all bytes are read...
@@ -7059,8 +7013,3 @@ ipp_write_file(int         *fd,           /* I - File descriptor */
   return (write(*fd, buffer, length));
 #endif /* WIN32 */
 }
-
-
-/*
- * End of "$Id: ipp.c 12468 2015-02-01 04:50:43Z msweet $".
- */
index 9fccd11..84585a2 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ipp.h 12666 2015-05-25 19:38:09Z msweet $"
- *
  * Internet Printing Protocol definitions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -264,13 +262,13 @@ typedef enum ipp_op_e                     /**** IPP operations ****/
   IPP_OP_SET_PRINTER_ATTRIBUTES,       /* Set printer attributes */
   IPP_OP_SET_JOB_ATTRIBUTES,           /* Set job attributes */
   IPP_OP_GET_PRINTER_SUPPORTED_VALUES, /* Get supported attribute values */
-  IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS, /* Create one or more printer subscriptions @since CUPS 1.2/OS X 10.5@ */
-  IPP_OP_CREATE_JOB_SUBSCRIPTIONS,     /* Create one of more job subscriptions @since CUPS 1.2/OS X 10.5@ */
-  IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES,  /* Get subscription attributes @since CUPS 1.2/OS X 10.5@ */
-  IPP_OP_GET_SUBSCRIPTIONS,            /* Get list of subscriptions @since CUPS 1.2/OS X 10.5@ */
-  IPP_OP_RENEW_SUBSCRIPTION,           /* Renew a printer subscription @since CUPS 1.2/OS X 10.5@ */
-  IPP_OP_CANCEL_SUBSCRIPTION,          /* Cancel a subscription @since CUPS 1.2/OS X 10.5@ */
-  IPP_OP_GET_NOTIFICATIONS,            /* Get notification events @since CUPS 1.2/OS X 10.5@ */
+  IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS, /* Create one or more printer subscriptions @since CUPS 1.2/macOS 10.5@ */
+  IPP_OP_CREATE_JOB_SUBSCRIPTIONS,     /* Create one of more job subscriptions @since CUPS 1.2/macOS 10.5@ */
+  IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES,  /* Get subscription attributes @since CUPS 1.2/macOS 10.5@ */
+  IPP_OP_GET_SUBSCRIPTIONS,            /* Get list of subscriptions @since CUPS 1.2/macOS 10.5@ */
+  IPP_OP_RENEW_SUBSCRIPTION,           /* Renew a printer subscription @since CUPS 1.2/macOS 10.5@ */
+  IPP_OP_CANCEL_SUBSCRIPTION,          /* Cancel a subscription @since CUPS 1.2/macOS 10.5@ */
+  IPP_OP_GET_NOTIFICATIONS,            /* Get notification events @since CUPS 1.2/macOS 10.5@ */
   IPP_OP_SEND_NOTIFICATIONS,           /* Send notification events @private@ */
   IPP_OP_GET_RESOURCE_ATTRIBUTES,      /* Get resource attributes @private@ */
   IPP_OP_GET_RESOURCE_DATA,            /* Get resource data @private@ */
@@ -304,7 +302,7 @@ typedef enum ipp_op_e                       /**** IPP operations ****/
   IPP_OP_CLOSE_JOB,                    /* Close-Job */
   IPP_OP_IDENTIFY_PRINTER,             /* Identify-Printer */
   IPP_OP_VALIDATE_DOCUMENT,            /* Validate-Document */
-  IPP_OP_SEND_HARDCOPY_DOCUMENT,       /* Send-Hardcopy-Document */
+  IPP_OP_ADD_DOCUMENT_IMAGES,          /* Add-Document-Images */
   IPP_OP_ACKNOWLEDGE_DOCUMENT,         /* Acknowledge-Document */
   IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER, /* Acknowledge-Identify-Printer */
   IPP_OP_ACKNOWLEDGE_JOB,              /* Acknowledge-Job */
@@ -330,12 +328,13 @@ typedef enum ipp_op_e                     /**** IPP operations ****/
   IPP_OP_CUPS_ACCEPT_JOBS,             /* Accept new jobs on a printer */
   IPP_OP_CUPS_REJECT_JOBS,             /* Reject new jobs on a printer */
   IPP_OP_CUPS_SET_DEFAULT,             /* Set the default printer */
-  IPP_OP_CUPS_GET_DEVICES,             /* Get a list of supported devices */
-  IPP_OP_CUPS_GET_PPDS,                        /* Get a list of supported drivers */
+  IPP_OP_CUPS_GET_DEVICES,             /* Get a list of supported devices @deprecated@ */
+  IPP_OP_CUPS_GET_PPDS,                        /* Get a list of supported drivers @deprecated@ */
   IPP_OP_CUPS_MOVE_JOB,                        /* Move a job to a different printer */
-  IPP_OP_CUPS_AUTHENTICATE_JOB,                /* Authenticate a job @since CUPS 1.2/OS X 10.5@ */
-  IPP_OP_CUPS_GET_PPD,                 /* Get a PPD file @since CUPS 1.3/OS X 10.5@ */
-  IPP_OP_CUPS_GET_DOCUMENT = 0x4027    /* Get a document file @since CUPS 1.4/OS X 10.6@ */
+  IPP_OP_CUPS_AUTHENTICATE_JOB,                /* Authenticate a job @since CUPS 1.2/macOS 10.5@ */
+  IPP_OP_CUPS_GET_PPD,                 /* Get a PPD file @deprecated@ */
+  IPP_OP_CUPS_GET_DOCUMENT = 0x4027,   /* Get a document file @since CUPS 1.4/macOS 10.6@ */
+  IPP_OP_CUPS_CREATE_LOCAL_PRINTER     /* Create a local (temporary) printer @since CUPS 2.2 */
 
 #  ifndef _CUPS_NO_DEPRECATED
 #    define IPP_PRINT_JOB                      IPP_OP_PRINT_JOB
@@ -398,6 +397,7 @@ typedef enum ipp_op_e                       /**** IPP operations ****/
 #    define IPP_CLOSE_JOB                      IPP_OP_CLOSE_JOB
 #    define IPP_IDENTIFY_PRINTER               IPP_OP_IDENTIFY_PRINTER
 #    define IPP_VALIDATE_DOCUMENT              IPP_OP_VALIDATE_DOCUMENT
+#    define IPP_OP_SEND_HARDCOPY_DOCUMENT      IPP_OP_ADD_DOCUMENT_IMAGES
 #    define IPP_PRIVATE                                IPP_OP_PRIVATE
 #    define CUPS_GET_DEFAULT                   IPP_OP_CUPS_GET_DEFAULT
 #    define CUPS_GET_PRINTERS                  IPP_OP_CUPS_GET_PRINTERS
@@ -536,6 +536,7 @@ typedef enum ipp_status_e           /**** IPP status codes ****/
                                        /* client-error-account-limit-reached */
   IPP_STATUS_ERROR_ACCOUNT_AUTHORIZATION_FAILED,
                                        /* client-error-account-authorization-failed */
+  IPP_STATUS_ERROR_NOT_FETCHABLE,      /* client-error-not-fetchable */
 
   /* Legacy status codes for paid printing */
   IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED = 0x049C,
@@ -566,8 +567,8 @@ typedef enum ipp_status_e           /**** IPP status codes ****/
 
   /* These are internal and never sent over the wire... */
   IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED = 0x1000,
-                                       /* cups-authentication-canceled - Authentication canceled by user @since CUPS 1.5/OS X 10.7@ */
-  IPP_STATUS_ERROR_CUPS_PKI,           /* cups-pki-error - Error negotiating a secure connection @since CUPS 1.5/OS X 10.7@ */
+                                       /* cups-authentication-canceled - Authentication canceled by user @since CUPS 1.5/macOS 10.7@ */
+  IPP_STATUS_ERROR_CUPS_PKI,           /* cups-pki-error - Error negotiating a secure connection @since CUPS 1.5/macOS 10.7@ */
   IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED/* cups-upgrade-required - TLS upgrade required */
 
 #  ifndef _CUPS_NO_DEPRECATED
@@ -687,21 +688,21 @@ typedef struct _ipp_s ipp_t;              /**** IPP request/response data ****/
 typedef struct _ipp_attribute_s ipp_attribute_t;
                                        /**** IPP attribute ****/
 
-/**** New in CUPS 1.2/OS X 10.5 ****/
+/**** New in CUPS 1.2/macOS 10.5 ****/
 typedef ssize_t        (*ipp_iocb_t)(void *context, ipp_uchar_t *buffer, size_t bytes);
-                                       /**** IPP IO Callback Function @since CUPS 1.2/OS X 10.5@ ****/
+                                       /**** IPP IO Callback Function @since CUPS 1.2/macOS 10.5@ ****/
 
-/**** New in CUPS 1.6/OS X 10.8 ****/
+/**** New in CUPS 1.6/macOS 10.8 ****/
 typedef int (*ipp_copycb_t)(void *context, ipp_t *dst, ipp_attribute_t *attr);
 
 
 /*
- * The following structures are PRIVATE starting with CUPS 1.6/OS X 10.8.
+ * The following structures are PRIVATE starting with CUPS 1.6/macOS 10.8.
  * Please use the new accessor functions available in CUPS 1.6 and later, as
  * these definitions will be moved to a private header file in a future release.
  *
  * Define _IPP_PRIVATE_STRUCTURES to 1 to cause the private IPP structures to be
- * exposed in CUPS 1.6.  This happens automatically on OS X when compiling for
+ * exposed in CUPS 1.6.  This happens automatically on macOS when compiling for
  * a deployment target of 10.7 or earlier.
  *
  * Define _IPP_PRIVATE_STRUCTURES to 0 to prevent the private IPP structures
@@ -751,7 +752,7 @@ typedef union _ipp_request_u                /**** Request Header ****/
   }            status;
 
   /**** New in CUPS 1.1.19 ****/
-  struct                               /* Event Header @since CUPS 1.1.19/OS X 10.3@ */
+  struct                               /* Event Header @since CUPS 1.1.19/macOS 10.3@ */
   {
     ipp_uchar_t        version[2];             /* Protocol version number */
     ipp_status_t status_code;          /* Status code */
@@ -795,7 +796,7 @@ typedef union _ipp_value_u          /**** Attribute Value ****/
   }            unknown;                /* Unknown attribute type */
 
 /**** New in CUPS 1.1.19 ****/
-  ipp_t                *collection;            /* Collection value @since CUPS 1.1.19/OS X 10.3@ */
+  ipp_t                *collection;            /* Collection value @since CUPS 1.1.19/macOS 10.3@ */
 } _ipp_value_t;
 typedef _ipp_value_t ipp_value_t;      /**** Convenience typedef that will be removed @private@ ****/
 
@@ -819,10 +820,10 @@ struct _ipp_s                             /**** IPP Request/Response/Notification ****/
   ipp_tag_t            curtag;         /* Current attribute group tag */
 
 /**** New in CUPS 1.2 ****/
-  ipp_attribute_t      *prev;          /* Previous attribute (for read) @since CUPS 1.2/OS X 10.5@ */
+  ipp_attribute_t      *prev;          /* Previous attribute (for read) @since CUPS 1.2/macOS 10.5@ */
 
 /**** New in CUPS 1.4.4 ****/
-  int                  use;            /* Use count @since CUPS 1.4.4/OS X 10.6.?@ */
+  int                  use;            /* Use count @since CUPS 1.4.4/macOS 10.6.?@ */
 /**** New in CUPS 2.0 ****/
   int                  atend,          /* At end of list? */
                        curindex;       /* Current attribute index for hierarchical search */
@@ -892,7 +893,7 @@ extern void         ippDeleteAttribute(ipp_t *ipp, ipp_attribute_t *attr) _CUPS_API_1_1
 extern ipp_state_t     ippReadFile(int fd, ipp_t *ipp) _CUPS_API_1_1_19;
 extern ipp_state_t     ippWriteFile(int fd, ipp_t *ipp) _CUPS_API_1_1_19;
 
-/**** New in CUPS 1.2/OS X 10.5 ****/
+/**** New in CUPS 1.2/macOS 10.5 ****/
 extern ipp_attribute_t *ippAddOctetString(ipp_t *ipp, ipp_tag_t group,
                                           const char *name,
                                           const void *data, int datalen) _CUPS_API_1_2;
@@ -905,11 +906,11 @@ extern ipp_state_t        ippReadIO(void *src, ipp_iocb_t cb, int blocking,
 extern ipp_state_t     ippWriteIO(void *dst, ipp_iocb_t cb, int blocking,
                                   ipp_t *parent, ipp_t *ipp) _CUPS_API_1_2;
 
-/**** New in CUPS 1.4/OS X 10.6 ****/
+/**** New in CUPS 1.4/macOS 10.6 ****/
 extern const char      *ippTagString(ipp_tag_t tag) _CUPS_API_1_4;
 extern ipp_tag_t       ippTagValue(const char *name) _CUPS_API_1_4;
 
-/**** New in CUPS 1.6/OS X 10.8 ****/
+/**** New in CUPS 1.6/macOS 10.8 ****/
 extern ipp_attribute_t *ippAddOutOfBand(ipp_t *ipp, ipp_tag_t group,
                                         ipp_tag_t value_tag, const char *name)
                                         _CUPS_API_1_6;
@@ -1032,7 +1033,3 @@ extern const char *ippStateString(ipp_state_t state) _CUPS_API_2_0;
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_IPP_H_ */
-
-/*
- * End of "$Id: ipp.h 12666 2015-05-25 19:38:09Z msweet $".
- */
index 420ca7e..40a6688 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: langprintf.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Localized printf/puts functions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -334,8 +332,3 @@ _cupsSetLocale(char *argv[])                /* IO - Command-line arguments */
     }
   }
 }
-
-
-/*
- * End of "$Id: langprintf.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 93cdf08..a597cd3 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: language-private.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Private localization support for CUPS.
  *
- *   Private localization support for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_LANGUAGE_PRIVATE_H_
@@ -80,7 +78,3 @@ extern void           _cupsSetLocale(char *argv[]);
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_LANGUAGE_PRIVATE_H_ */
-
-/*
- * End of "$Id: language-private.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 8579787..f1afecc 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: language.c 12841 2015-08-10 17:07:30Z msweet $"
- *
  * I18N/language support for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -1337,6 +1335,18 @@ appleMessageLoad(const char *locale)     /* I - Locale ID */
     snprintf(filename, sizeof(filename), CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings", locale);
   }
 
+  if (access(filename, 0))
+  {
+   /*
+    * <rdar://problem/25292403>
+    *
+    * Try with just the language code...
+    */
+
+    strlcpy(baselang, locale, sizeof(baselang));
+    snprintf(filename, sizeof(filename), CUPS_BUNDLEDIR "/Resources/%s.lproj/cups.strings", baselang);
+  }
+
   DEBUG_printf(("1appleMessageLoad: filename=\"%s\"", filename));
 
   if (access(filename, 0))
@@ -1347,7 +1357,9 @@ appleMessageLoad(const char *locale)      /* I - Locale ID */
 
     if (!strncmp(locale, "en", 2))
       locale = "English";
-    else if (!strncmp(locale, "nb", 2) || !strncmp(locale, "nl", 2))
+    else if (!strncmp(locale, "nb", 2))
+      locale = "no";
+    else if (!strncmp(locale, "nl", 2))
       locale = "Dutch";
     else if (!strncmp(locale, "fr", 2))
       locale = "French";
@@ -1476,7 +1488,7 @@ cups_cache_lookup(
   for (lang = lang_cache; lang != NULL; lang = lang->next)
   {
     DEBUG_printf(("9cups_cache_lookup: lang=%p, language=\"%s\", "
-                 "encoding=%d(%s)", lang, lang->language, lang->encoding,
+                 "encoding=%d(%s)", (void *)lang, lang->language, lang->encoding,
                  lang_encodings[lang->encoding]));
 
     if (!strcmp(lang->language, name) &&
@@ -1621,8 +1633,3 @@ cups_unquote(char       *d,               /* O - Unquoted string */
 
   *d = '\0';
 }
-
-
-/*
- * End of "$Id: language.c 12841 2015-08-10 17:07:30Z msweet $".
- */
index 4fcf9e8..c378e98 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: language.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Multi-language support for CUPS.
  *
- *   Multi-language support for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_LANGUAGE_H_
@@ -109,7 +107,3 @@ extern cups_lang_t  *cupsLangGet(const char *language);
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_LANGUAGE_H_ */
-
-/*
- * End of "$Id: language.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 66ab4ad..51be135 100644 (file)
@@ -1,12 +1,17 @@
 LIBRARY libcups2
-VERSION 2.11
+VERSION 2.12
 EXPORTS
 _cupsArrayAddStrings
 _cupsArrayNewStrings
 _cupsBufferGet
 _cupsBufferRelease
 _cupsCharmapFlush
+_cupsCondBroadcast
+_cupsCondInit
+_cupsCondWait
 _cupsConnect
+_cupsConvertOptions
+_cupsCreateDest
 _cupsEncodingName
 _cupsGet1284Values
 _cupsGetDestResource
@@ -58,8 +63,11 @@ _cupsStrFree
 _cupsStrRetain
 _cupsStrScand
 _cupsStrStatistics
+_cupsThreadCancel
 _cupsThreadCreate
+_cupsThreadWait
 _cupsUserDefault
+_cups_safe_vsnprintf
 _cups_strcasecmp
 _cups_strcpy
 _cups_strcpy
@@ -77,6 +85,7 @@ _httpStatus
 _httpTLSInitialize
 _httpTLSPending
 _httpTLSRead
+_httpTLSSetOptions
 _httpTLSStart
 _httpTLSStop
 _httpTLSWrite
@@ -98,9 +107,11 @@ _ppdCacheGetSize
 _ppdCacheGetSource
 _ppdCacheGetType
 _ppdCacheWriteFile
+_ppdCreateFromIPP
 _ppdFreeLanguages
 _ppdGetEncoding
 _ppdGetLanguages
+_ppdGlobals
 _ppdHashName
 _ppdLocalizedAttr
 _ppdNormalizeMakeAndModel
@@ -110,10 +121,6 @@ _ppdParseOptions
 _pwgGenerateSize
 _pwgInitSize
 _pwgInputSlotForSource
-_pwgMediaForLegacy
-_pwgMediaForPPD
-_pwgMediaForPWG
-_pwgMediaForSize
 _pwgMediaNearSize
 _pwgMediaTable
 _pwgMediaTypeForType
@@ -234,6 +241,7 @@ cupsGetPassword2
 cupsGetPrinters
 cupsGetResponse
 cupsGetServerPPD
+cupsHashData
 cupsLangDefault
 cupsLangEncoding
 cupsLangFlush
index 7b94642..8b9bf12 100644 (file)
@@ -1,31 +1,29 @@
 /*
- * "$Id: md5-private.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Private MD5 definitions for CUPS.
  *
- *   Private MD5 definitions for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 2005 by Easy Software Products
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 2005 by Easy Software Products
+ * Copyright (C) 1999 Aladdin Enterprises.  All rights reserved.
  *
- *   Copyright (C) 1999 Aladdin Enterprises.  All rights reserved.
+ * This software is provided 'as-is', without any express or implied
+ * warranty.  In no event will the authors be held liable for any damages
+ * arising from the use of this software.
  *
- *   This software is provided 'as-is', without any express or implied
- *   warranty.  In no event will the authors be held liable for any damages
- *   arising from the use of this software.
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
  *
- *   Permission is granted to anyone to use this software for any purpose,
- *   including commercial applications, and to alter it and redistribute it
- *   freely, subject to the following restrictions:
+ * 1. The origin of this software must not be misrepresented; you must not
+ *    claim that you wrote the original software. If you use this software
+ *    in a product, an acknowledgment in the product documentation would be
+ *    appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
  *
- *   1. The origin of this software must not be misrepresented; you must not
- *      claim that you wrote the original software. If you use this software
- *      in a product, an acknowledgment in the product documentation would be
- *      appreciated but is not required.
- *   2. Altered source versions must be plainly marked as such, and must not be
- *      misrepresented as being the original software.
- *   3. This notice may not be removed or altered from any source distribution.
- *
- *   L. Peter Deutsch
- *   ghost@aladdin.com
+ * L. Peter Deutsch
+ * ghost@aladdin.com
  */
 
 /*
@@ -73,7 +71,3 @@ void _cupsMD5Finish(_cups_md5_state_t *pms, unsigned char digest[16]);
 }  /* end extern "C" */
 #  endif /* __cplusplus */
 #endif /* !_CUPS_MD5_PRIVATE_H_ */
-
-/*
- * End of "$Id: md5-private.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 8c87ac7..c0f5dd7 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: md5.c 12124 2014-08-28 15:37:22Z msweet $"
- *
  * Private MD5 implementation for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -339,8 +337,3 @@ _cupsMD5Finish(_cups_md5_state_t *pms, unsigned char digest[16])
     for (i = 0; i < 16; ++i)
        digest[i] = (unsigned char)(pms->abcd[i >> 2] >> ((i & 3) << 3));
 }
-
-
-/*
- * End of "$Id: md5.c 12124 2014-08-28 15:37:22Z msweet $".
- */
index 135282c..9714aaa 100644 (file)
@@ -1,25 +1,16 @@
 /*
- * "$Id: md5passwd.c 10996 2013-05-29 11:51:34Z msweet $"
+ * MD5 password support for CUPS.
  *
- *   MD5 password support for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   httpMD5()       - Compute the MD5 sum of the username:group:password.
- *   httpMD5Nonce()  - Combine the MD5 sum of the username, group, and password
- *                     with the server-supplied nonce value.
- *   httpMD5String() - Convert an MD5 sum to a character string.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -135,8 +126,3 @@ httpMD5String(const unsigned char *sum,     /* I - MD5 sum data */
 
   return (md5);
 }
-
-
-/*
- * End of "$Id: md5passwd.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 7e5cebb..5f6e7fd 100644 (file)
@@ -1,24 +1,16 @@
 /*
- * "$Id: notify.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Notification routines for CUPS.
  *
- *   Notification routines for CUPS.
+ * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2005-2006 by Easy Software Products.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 2005-2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   cupsNotifySubject() - Return the subject for the given notification
- *                         message.
- *   cupsNotifyText()    - Return the text for the given notification message.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -33,7 +25,7 @@
  *
  * The returned string must be freed by the caller using @code free@.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 char *                                 /* O - Subject string or @code NULL@ */
@@ -164,7 +156,7 @@ cupsNotifySubject(cups_lang_t *lang,        /* I - Language data */
  *
  * The returned string must be freed by the caller using @code free@.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 char *                                 /* O - Message text or @code NULL@ */
@@ -195,8 +187,3 @@ cupsNotifyText(cups_lang_t *lang,   /* I - Language data */
 
   return (strdup(notify_text->values[0].string.text));
 }
-
-
-/*
- * End of "$Id: notify.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 49b16f1..a3f57cf 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: options.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Option routines for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -49,8 +47,7 @@ cupsAddOption(const char    *name,    /* I  - Name of option */
                diff;                   /* Result of search */
 
 
-  DEBUG_printf(("2cupsAddOption(name=\"%s\", value=\"%s\", num_options=%d, "
-                "options=%p)", name, value, num_options, options));
+  DEBUG_printf(("2cupsAddOption(name=\"%s\", value=\"%s\", num_options=%d, options=%p)", name, value, num_options, (void *)options));
 
   if (!name || !name[0] || !value || !options || num_options < 0)
   {
@@ -142,8 +139,7 @@ cupsFreeOptions(
   int  i;                              /* Looping var */
 
 
-  DEBUG_printf(("cupsFreeOptions(num_options=%d, options=%p)", num_options,
-                options));
+  DEBUG_printf(("cupsFreeOptions(num_options=%d, options=%p)", num_options, (void *)options));
 
   if (num_options <= 0 || !options)
     return;
@@ -171,8 +167,7 @@ cupsGetOption(const char    *name,  /* I - Name of option */
        match;                          /* Matching index */
 
 
-  DEBUG_printf(("2cupsGetOption(name=\"%s\", num_options=%d, options=%p)",
-                name, num_options, options));
+  DEBUG_printf(("2cupsGetOption(name=\"%s\", num_options=%d, options=%p)", name, num_options, (void *)options));
 
   if (!name || num_options <= 0 || !options)
   {
@@ -217,8 +212,7 @@ cupsParseOptions(
        quote;                          /* Quote character */
 
 
-  DEBUG_printf(("cupsParseOptions(arg=\"%s\", num_options=%d, options=%p)",
-                arg, num_options, options));
+  DEBUG_printf(("cupsParseOptions(arg=\"%s\", num_options=%d, options=%p)", arg, num_options, (void *)options));
 
  /*
   * Range check input...
@@ -425,7 +419,7 @@ cupsParseOptions(
 /*
  * 'cupsRemoveOption()' - Remove an option from an option array.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O  - New number of options */
@@ -438,8 +432,7 @@ cupsRemoveOption(
   cups_option_t        *option;                /* Current option */
 
 
-  DEBUG_printf(("2cupsRemoveOption(name=\"%s\", num_options=%d, options=%p)",
-                name, num_options, options));
+  DEBUG_printf(("2cupsRemoveOption(name=\"%s\", num_options=%d, options=%p)", name, num_options, (void *)options));
 
  /*
   * Range check input...
@@ -600,9 +593,7 @@ cups_find_option(
   cups_option_t        key;                    /* Search key */
 
 
-  DEBUG_printf(("7cups_find_option(name=\"%s\", num_options=%d, options=%p, "
-               "prev=%d, rdiff=%p)", name, num_options, options, prev,
-               rdiff));
+  DEBUG_printf(("7cups_find_option(name=\"%s\", num_options=%d, options=%p, prev=%d, rdiff=%p)", name, num_options, (void *)options, prev, (void *)rdiff));
 
 #ifdef DEBUG
   for (left = 0; left < num_options; left ++)
@@ -691,8 +682,3 @@ cups_find_option(
 
   return (current);
 }
-
-
-/*
- * End of "$Id: options.c 11558 2014-02-06 18:33:34Z msweet $".
- */
similarity index 97%
rename from cups/attr.c
rename to cups/ppd-attr.c
index 1f3d2e5..6324e6e 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: attr.c 12867 2015-09-13 23:49:19Z msweet $"
- *
  * PPD model-specific attribute routines for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -24,7 +22,7 @@
 /*
  * 'ppdFindAttr()' - Find the first matching attribute.
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 ppd_attr_t *                           /* O - Attribute or @code NULL@ if not found */
@@ -81,7 +79,7 @@ ppdFindAttr(ppd_file_t *ppd,          /* I - PPD file data */
 /*
  * 'ppdFindNextAttr()' - Find the next matching attribute.
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 ppd_attr_t *                           /* O - Attribute or @code NULL@ if not found */
@@ -314,8 +312,3 @@ _ppdNormalizeMakeAndModel(
 
   return (buffer[0] ? buffer : NULL);
 }
-
-
-/*
- * End of "$Id: attr.c 12867 2015-09-13 23:49:19Z msweet $".
- */
index 49589f2..9ce5cfc 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: ppd-cache.c 12980 2015-11-17 21:23:32Z msweet $"
- *
  * PPD cache implementation for CUPS.
  *
- * Copyright 2010-2015 by Apple Inc.
+ * Copyright 2010-2016 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -19,6 +17,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd-private.h"
 #include <math.h>
 
 
@@ -67,7 +66,8 @@ _cupsConvertOptions(ipp_t           *request, /* I - IPP request */
                    cups_option_t *options)     /* I - Options */
 {
   int          i;                      /* Looping var */
-  const char   *keyword;               /* PWG keyword */
+  const char   *keyword,               /* PWG keyword */
+               *password;              /* Password string */
   pwg_size_t   *size;                  /* PWG media size */
   ipp_t                *media_col,             /* media-col value */
                *media_size;            /* media-size value */
@@ -85,14 +85,36 @@ _cupsConvertOptions(ipp_t           *request,       /* I - IPP request */
   * Send standard IPP attributes...
   */
 
-  if (pc->password && (keyword = cupsGetOption("job-password", num_options, options)) != NULL && ippGetOperation(request) != IPP_OP_VALIDATE_JOB)
+  if (pc->password && (password = cupsGetOption("job-password", num_options, options)) != NULL && ippGetOperation(request) != IPP_OP_VALIDATE_JOB)
   {
-    ippAddOctetString(request, IPP_TAG_OPERATION, "job-password", keyword, (int)strlen(keyword));
+    ipp_attribute_t    *attr = NULL;   /* job-password attribute */
 
     if ((keyword = cupsGetOption("job-password-encryption", num_options, options)) == NULL)
       keyword = "none";
 
-    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "job-password-encryption", NULL, keyword);
+    if (!strcmp(keyword, "none"))
+    {
+     /*
+      * Add plain-text job-password...
+      */
+
+      attr = ippAddOctetString(request, IPP_TAG_OPERATION, "job-password", password, (int)strlen(password));
+    }
+    else
+    {
+     /*
+      * Add hashed job-password...
+      */
+
+      unsigned char    hash[64];       /* Hash of password */
+      ssize_t          hashlen;        /* Length of hash */
+
+      if ((hashlen = cupsHashData(keyword, password, strlen(password), hash, sizeof(hash))) > 0)
+        attr = ippAddOctetString(request, IPP_TAG_OPERATION, "job-password", hash, (int)hashlen);
+    }
+
+    if (attr)
+      ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "job-password-encryption", NULL, keyword);
   }
 
   if (pc->account_id)
@@ -2925,8 +2947,73 @@ _ppdCreateFromIPP(char   *buffer,        /* I - Filename buffer */
                        top;            /* Largest top margin */
   pwg_media_t          *pwg;           /* PWG media size */
   int                  xres, yres;     /* Resolution values */
+  cups_lang_t          *lang = cupsLangDefault();
+                                       /* Localization info */
   struct lconv         *loc = localeconv();
                                        /* Locale data */
+  static const char * const finishings[][2] =
+  {                                    /* Finishings strings */
+    { "bale", _("Bale") },
+    { "bind", _("Bind") },
+    { "bind-bottom", _("Bind (Reverse Landscape)") },
+    { "bind-left", _("Bind (Portrait)") },
+    { "bind-right", _("Bind (Reverse Portrait)") },
+    { "bind-top", _("Bind (Landscape)") },
+    { "booklet-maker", _("Booklet Maker") },
+    { "coat", _("Coat") },
+    { "cover", _("Cover") },
+    { "edge-stitch", _("Staple Edge") },
+    { "edge-stitch-bottom", _("Staple Edge (Reverse Landscape)") },
+    { "edge-stitch-left", _("Staple Edge (Portrait)") },
+    { "edge-stitch-right", _("Staple Edge (Reverse Portrait)") },
+    { "edge-stitch-top", _("Staple Edge (Landscape)") },
+    { "fold", _("Fold") },
+    { "fold-accordian", _("Accordian Fold") },
+    { "fold-double-gate", _("Double Gate Fold") },
+    { "fold-gate", _("Gate Fold") },
+    { "fold-half", _("Half Fold") },
+    { "fold-half-z", _("Half Z Fold") },
+    { "fold-left-gate", _("Left Gate Fold") },
+    { "fold-letter", _("Letter Fold") },
+    { "fold-parallel", _("Parallel Fold") },
+    { "fold-poster", _("Poster Fold") },
+    { "fold-right-gate", _("Right Gate Fold") },
+    { "fold-z", _("Z Fold") },
+    { "jog-offset", _("Jog") },
+    { "laminate", _("Laminate") },
+    { "punch", _("Punch") },
+    { "punch-bottom-left", _("Single Punch (Reverse Landscape)") },
+    { "punch-bottom-right", _("Single Punch (Reverse Portrait)") },
+    { "punch-double-bottom", _("2-Hole Punch (Reverse Portrait)") },
+    { "punch-double-left", _("2-Hole Punch (Reverse Landscape)") },
+    { "punch-double-right", _("2-Hole Punch (Landscape)") },
+    { "punch-double-top", _("2-Hole Punch (Portrait)") },
+    { "punch-quad-bottom", _("4-Hole Punch (Reverse Landscape)") },
+    { "punch-quad-left", _("4-Hole Punch (Portrait)") },
+    { "punch-quad-right", _("4-Hole Punch (Reverse Portrait)") },
+    { "punch-quad-top", _("4-Hole Punch (Landscape)") },
+    { "punch-top-left", _("Single Punch (Portrait)") },
+    { "punch-top-right", _("Single Punch (Landscape)") },
+    { "punch-triple-bottom", _("3-Hole Punch (Reverse Landscape)") },
+    { "punch-triple-left", _("3-Hole Punch (Portrait)") },
+    { "punch-triple-right", _("3-Hole Punch (Reverse Portrait)") },
+    { "punch-triple-top", _("3-Hole Punch (Landscape)") },
+    { "saddle-stitch", _("Saddle Stitch") },
+    { "staple", _("Staple") },
+    { "staple-bottom-left", _("Single Staple (Reverse Landscape)") },
+    { "staple-bottom-right", _("Single Staple (Reverse Portrait)") },
+    { "staple-dual-bottom", _("Double Staple (Reverse Landscape)") },
+    { "staple-dual-left", _("Double Staple (Portrait)") },
+    { "staple-dual-right", _("Double Staple (Reverse Portrait)") },
+    { "staple-dual-top", _("Double Staple (Landscape)") },
+    { "staple-top-left", _("Single Staple (Portrait)") },
+    { "staple-top-right", _("Single Staple (Landscape)") },
+    { "staple-triple-bottom", _("Triple Staple (Reverse Landscape)") },
+    { "staple-triple-left", _("Triple Staple (Portrait)") },
+    { "staple-triple-right", _("Triple Staple (Reverse Portrait)") },
+    { "staple-triple-top", _("Triple Staple (Landscape)") },
+    { "trim", _("Cut Media") }
+  };
 
 
  /*
@@ -3165,57 +3252,57 @@ _ppdCreateFromIPP(char   *buffer,       /* I - Filename buffer */
   if ((attr = ippFindAttribute(response, "media-source-supported", IPP_TAG_KEYWORD)) != NULL && (count = ippGetCount(attr)) > 1)
   {
     static const char * const sources[][2] =
-    {
-      { "Auto", "Automatic" },
-      { "Main", "Main" },
-      { "Alternate", "Alternate" },
-      { "LargeCapacity", "Large Capacity" },
-      { "Manual", "Manual" },
-      { "Envelope", "Envelope" },
-      { "Disc", "Disc" },
-      { "Photo", "Photo" },
-      { "Hagaki", "Hagaki" },
-      { "MainRoll", "Main Roll" },
-      { "AlternateRoll", "Alternate Roll" },
-      { "Top", "Top" },
-      { "Middle", "Middle" },
-      { "Bottom", "Bottom" },
-      { "Side", "Side" },
-      { "Left", "Left" },
-      { "Right", "Right" },
-      { "Center", "Center" },
-      { "Rear", "Rear" },
-      { "ByPassTray", "Multipurpose" },
-      { "Tray1", "Tray 1" },
-      { "Tray2", "Tray 2" },
-      { "Tray3", "Tray 3" },
-      { "Tray4", "Tray 4" },
-      { "Tray5", "Tray 5" },
-      { "Tray6", "Tray 6" },
-      { "Tray7", "Tray 7" },
-      { "Tray8", "Tray 8" },
-      { "Tray9", "Tray 9" },
-      { "Tray10", "Tray 10" },
-      { "Tray11", "Tray 11" },
-      { "Tray12", "Tray 12" },
-      { "Tray13", "Tray 13" },
-      { "Tray14", "Tray 14" },
-      { "Tray15", "Tray 15" },
-      { "Tray16", "Tray 16" },
-      { "Tray17", "Tray 17" },
-      { "Tray18", "Tray 18" },
-      { "Tray19", "Tray 19" },
-      { "Tray20", "Tray 20" },
-      { "Roll1", "Roll 1" },
-      { "Roll2", "Roll 2" },
-      { "Roll3", "Roll 3" },
-      { "Roll4", "Roll 4" },
-      { "Roll5", "Roll 5" },
-      { "Roll6", "Roll 6" },
-      { "Roll7", "Roll 7" },
-      { "Roll8", "Roll 8" },
-      { "Roll9", "Roll 9" },
-      { "Roll10", "Roll 10" }
+    {                                  /* "media-source" strings */
+      { "Auto", _("Automatic") },
+      { "Main", _("Main") },
+      { "Alternate", _("Alternate") },
+      { "LargeCapacity", _("Large Capacity") },
+      { "Manual", _("Manual") },
+      { "Envelope", _("Envelope") },
+      { "Disc", _("Disc") },
+      { "Photo", _("Photo") },
+      { "Hagaki", _("Hagaki") },
+      { "MainRoll", _("Main Roll") },
+      { "AlternateRoll", _("Alternate Roll") },
+      { "Top", _("Top") },
+      { "Middle", _("Middle") },
+      { "Bottom", _("Bottom") },
+      { "Side", _("Side") },
+      { "Left", _("Left") },
+      { "Right", _("Right") },
+      { "Center", _("Center") },
+      { "Rear", _("Rear") },
+      { "ByPassTray", _("Multipurpose") },
+      { "Tray1", _("Tray 1") },
+      { "Tray2", _("Tray 2") },
+      { "Tray3", _("Tray 3") },
+      { "Tray4", _("Tray 4") },
+      { "Tray5", _("Tray 5") },
+      { "Tray6", _("Tray 6") },
+      { "Tray7", _("Tray 7") },
+      { "Tray8", _("Tray 8") },
+      { "Tray9", _("Tray 9") },
+      { "Tray10", _("Tray 10") },
+      { "Tray11", _("Tray 11") },
+      { "Tray12", _("Tray 12") },
+      { "Tray13", _("Tray 13") },
+      { "Tray14", _("Tray 14") },
+      { "Tray15", _("Tray 15") },
+      { "Tray16", _("Tray 16") },
+      { "Tray17", _("Tray 17") },
+      { "Tray18", _("Tray 18") },
+      { "Tray19", _("Tray 19") },
+      { "Tray20", _("Tray 20") },
+      { "Roll1", _("Roll 1") },
+      { "Roll2", _("Roll 2") },
+      { "Roll3", _("Roll 3") },
+      { "Roll4", _("Roll 4") },
+      { "Roll5", _("Roll 5") },
+      { "Roll6", _("Roll 6") },
+      { "Roll7", _("Roll 7") },
+      { "Roll8", _("Roll 8") },
+      { "Roll9", _("Roll 9") },
+      { "Roll10", _("Roll 10") }
     };
 
     cupsFilePrintf(fp, "*OpenUI *InputSlot: PickOne\n"
@@ -3228,7 +3315,7 @@ _ppdCreateFromIPP(char   *buffer, /* I - Filename buffer */
       for (j = 0; j < (int)(sizeof(sources) / sizeof(sources[0])); j ++)
         if (!strcmp(sources[j][0], ppdname))
        {
-         cupsFilePrintf(fp, "*InputSlot %s/%s: \"<</MediaPosition %d>>setpagedevice\"\n", ppdname, sources[j][1], j);
+         cupsFilePrintf(fp, "*InputSlot %s/%s: \"<</MediaPosition %d>>setpagedevice\"\n", ppdname, _cupsLangString(lang, sources[j][1]), j);
          break;
        }
     }
@@ -3246,42 +3333,143 @@ _ppdCreateFromIPP(char   *buffer,      /* I - Filename buffer */
 
   if ((attr = ippFindAttribute(response, "media-type-supported", IPP_TAG_KEYWORD)) != NULL && (count = ippGetCount(attr)) > 1)
   {
-    static const char * const types[][2] =
-    {                                  /* Media type strings (far from complete) */
-      { "Auto", "Automatic" },
-      { "Cardstock", "Cardstock" },
-      { "Disc", "CD/DVD/Bluray" },
-      { "Envelope", "Envelope" },
-      { "Labels", "Label" },
-      { "Other", "Other" },
-      { "Photographic", "Photo" },
-      { "PhotographicGlossy", "Glossy Photo" },
-      { "PhotographicHighGloss", "High-Gloss Photo" },
-      { "PhotographicMatte", "Matte Photo" },
-      { "PhotographicSatin", "Satin Photo" },
-      { "PhotographicSemiGloss", "Semi-Gloss Photo" },
-      { "Stationery", "Plain Paper" },
-      { "StationeryLetterhead", "Letterhead" },
-      { "Transparency", "Transparency" }
+    static const char * const media_types[][2] =
+    {                                  /* "media-type" strings */
+      { "aluminum", _("Aluminum") },
+      { "auto", _("Automatic") },
+      { "back-print-film", _("Back Print Film") },
+      { "cardboard", _("Cardboard") },
+      { "cardstock", _("Cardstock") },
+      { "cd", _("CD") },
+      { "continuous", _("Continuous") },
+      { "continuous-long", _("Continuous Long") },
+      { "continuous-short", _("Continuous Short") },
+      { "disc", _("Optical Disc") },
+      { "disc-glossy", _("Glossy Optical Disc") },
+      { "disc-high-gloss", _("High Gloss Optical Disc") },
+      { "disc-matte", _("Matte Optical Disc") },
+      { "disc-satin", _("Satin Optical Disc") },
+      { "disc-semi-gloss", _("Semi-Gloss Optical Disc") },
+      { "double-wall", _("Double Wall Cardboard") },
+      { "dry-film", _("Dry Film") },
+      { "dvd", _("DVD") },
+      { "embossing-foil", _("Embossing Foil") },
+      { "end-board", _("End Board") },
+      { "envelope", _("Envelope") },
+      { "envelope-archival", _("Archival Envelope") },
+      { "envelope-bond", _("Bond Envelope") },
+      { "envelope-coated", _("Coated Envelope") },
+      { "envelope-cotton", _("Cotton Envelope") },
+      { "envelope-fine", _("Fine Envelope") },
+      { "envelope-heavyweight", _("Heavyweight Envelope") },
+      { "envelope-inkjet", _("Inkjet Envelope") },
+      { "envelope-lightweight", _("Lightweight Envelope") },
+      { "envelope-plain", _("Plain Envelope") },
+      { "envelope-preprinted", _("Preprinted Envelope") },
+      { "envelope-window", _("Windowed Envelope") },
+      { "fabric", _("Fabric") },
+      { "fabric-archival", _("Archival Fabric") },
+      { "fabric-glossy", _("Glossy Fabric") },
+      { "fabric-high-gloss", _("High Gloss Fabric") },
+      { "fabric-matte", _("Matte Fabric") },
+      { "fabric-semi-gloss", _("Semi-Gloss Fabric") },
+      { "fabric-waterproof", _("Waterproof Fabric") },
+      { "film", _("Film") },
+      { "flexo-base", _("Flexo Base") },
+      { "flexo-photo-polymer", _("Flexo Photo Polymer") },
+      { "flute", _("Flute") },
+      { "foil", _("Foil") },
+      { "full-cut-tabs", _("Full Cut Tabs") },
+      { "glass", _("Glass") },
+      { "glass-colored", _("Glass Colored") },
+      { "glass-opaque", _("Glass Opaque") },
+      { "glass-surfaced", _("Glass Surfaced") },
+      { "glass-textured", _("Glass Textured") },
+      { "gravure-cylinder", _("Gravure Cylinder") },
+      { "image-setter-paper", _("Image Setter Paper") },
+      { "imaging-cylinder", _("Imaging Cylinder") },
+      { "labels", _("Labels") },
+      { "labels-colored", _("Colored Labels") },
+      { "labels-glossy", _("Glossy Labels") },
+      { "labels-high-gloss", _("High Gloss Labels") },
+      { "labels-inkjet", _("Inkjet Labels") },
+      { "labels-matte", _("Matte Labels") },
+      { "labels-permanent", _("Permanent Labels") },
+      { "labels-satin", _("Satin Labels") },
+      { "labels-security", _("Security Labels") },
+      { "labels-semi-gloss", _("Semi-Gloss Labels") },
+      { "laminating-foil", _("Laminating Foil") },
+      { "letterhead", _("Letterhead") },
+      { "metal", _("Metal") },
+      { "metal-glossy", _("Metal Glossy") },
+      { "metal-high-gloss", _("Metal High Gloss") },
+      { "metal-matte", _("Metal Matte") },
+      { "metal-satin", _("Metal Satin") },
+      { "metal-semi-gloss", _("Metal Semi Gloss") },
+      { "mounting-tape", _("Mounting Tape") },
+      { "multi-layer", _("Multi Layer") },
+      { "multi-part-form", _("Multi Part Form") },
+      { "other", _("Other") },
+      { "paper", _("Paper") },
+      { "photographic", _("Photo Paper") },
+      { "photographic-archival", _("Photographic Archival") },
+      { "photographic-film", _("Photo Film") },
+      { "photographic-glossy", _("Glossy Photo Paper") },
+      { "photographic-high-gloss", _("High Gloss Photo Paper") },
+      { "photographic-matte", _("Matte Photo Paper") },
+      { "photographic-satin", _("Satin Photo Paper") },
+      { "photographic-semi-gloss", _("Semi-Gloss Photo Paper") },
+      { "plastic", _("Plastic") },
+      { "plastic-archival", _("Plastic Archival") },
+      { "plastic-colored", _("Plastic Colored") },
+      { "plastic-glossy", _("Plastic Glossy") },
+      { "plastic-high-gloss", _("Plastic High Gloss") },
+      { "plastic-matte", _("Plastic Matte") },
+      { "plastic-satin", _("Plastic Satin") },
+      { "plastic-semi-gloss", _("Plastic Semi Gloss") },
+      { "plate", _("Plate") },
+      { "polyester", _("Polyester") },
+      { "pre-cut-tabs", _("Pre Cut Tabs") },
+      { "roll", _("Roll") },
+      { "screen", _("Screen") },
+      { "screen-paged", _("Screen Paged") },
+      { "self-adhesive", _("Self Adhesive") },
+      { "self-adhesive-film", _("Self Adhesive Film") },
+      { "shrink-foil", _("Shrink Foil") },
+      { "single-face", _("Single Face") },
+      { "single-wall", _("Single Wall Cardboard") },
+      { "sleeve", _("Sleeve") },
+      { "stationery", _("Stationery") },
+      { "stationery-archival", _("Stationery Archival") },
+      { "stationery-coated", _("Coated Paper") },
+      { "stationery-cotton", _("Stationery Cotton") },
+      { "stationery-fine", _("Vellum Paper") },
+      { "stationery-heavyweight", _("Heavyweight Paper") },
+      { "stationery-heavyweight-coated", _("Stationery Heavyweight Coated") },
+      { "stationery-inkjet", _("Stationery Inkjet Paper") },
+      { "stationery-letterhead", _("Letterhead") },
+      { "stationery-lightweight", _("Lightweight Paper") },
+      { "stationery-preprinted", _("Preprinted Paper") },
+      { "stationery-prepunched", _("Punched Paper") },
+      { "tab-stock", _("Tab Stock") },
+      { "tractor", _("Tractor") },
+      { "transfer", _("Transfer") },
+      { "transparency", _("Transparency") },
+      { "triple-wall", _("Triple Wall Cardboard") },
+      { "wet-film", _("Wet Film") }
     };
 
     cupsFilePrintf(fp, "*OpenUI *MediaType: PickOne\n"
                        "*OrderDependency: 10 AnySetup *MediaType\n"
                        "*DefaultMediaType: %s\n", ppdname);
-    for (i = 0, count = ippGetCount(attr); i < count; i ++)
+    for (i = 0; i < (int)(sizeof(media_types) / sizeof(media_types[0])); i ++)
     {
-      pwg_ppdize_name(ippGetString(attr, i, NULL), ppdname, sizeof(ppdname));
-
-      for (j = 0; j < (int)(sizeof(types) / sizeof(types[0])); j ++)
-        if (!strcmp(types[j][0], ppdname))
-       {
-         cupsFilePrintf(fp, "*MediaType %s/%s: \"<</MediaType(%s)>>setpagedevice\"\n", ppdname, types[j][1], ppdname);
-         break;
-       }
+      if (!ippContainsString(attr, media_types[i][0]))
+        continue;
 
-      if (j >= (int)(sizeof(types) / sizeof(types[0])))
-       cupsFilePrintf(fp, "*MediaType %s: \"<</MediaType(%s)>>setpagedevice\"\n", ppdname, ppdname);
+      pwg_ppdize_name(media_types[i][0], ppdname, sizeof(ppdname));
 
+      cupsFilePrintf(fp, "*MediaType %s/%s: \"<</MediaType(%s)>>setpagedevice\"\n", ppdname, _cupsLangString(lang, media_types[i][1]), ppdname);
     }
     cupsFilePuts(fp, "*CloseUI: *MediaType\n");
   }
@@ -3305,10 +3493,10 @@ _ppdCreateFromIPP(char   *buffer,       /* I - Filename buffer */
       if (!strcmp(keyword, "black_1") || !strcmp(keyword, "bi-level") || !strcmp(keyword, "process-bi-level"))
       {
         if (!default_color)
-         cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
-                          "*OrderDependency: 10 AnySetup *ColorModel\n");
+         cupsFilePrintf(fp, "*OpenUI *ColorModel/%s: PickOne\n"
+                            "*OrderDependency: 10 AnySetup *ColorModel\n", _cupsLangString(lang, _("Color Mode")));
 
-        cupsFilePuts(fp, "*ColorModel FastGray/Fast Grayscale: \"<</cupsColorSpace 3/cupsBitsPerColor 1/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n");
+        cupsFilePrintf(fp, "*ColorModel FastGray/%s: \"<</cupsColorSpace 3/cupsBitsPerColor 1/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n", _cupsLangString(lang, _("Fast Grayscale")));
 
         if (!default_color)
          default_color = "FastGray";
@@ -3316,10 +3504,10 @@ _ppdCreateFromIPP(char   *buffer,       /* I - Filename buffer */
       else if (!strcmp(keyword, "sgray_8") || !strcmp(keyword, "monochrome") || !strcmp(keyword, "process-monochrome"))
       {
         if (!default_color)
-         cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
-                          "*OrderDependency: 10 AnySetup *ColorModel\n");
+         cupsFilePrintf(fp, "*OpenUI *ColorModel/%s: PickOne\n"
+                            "*OrderDependency: 10 AnySetup *ColorModel\n", _cupsLangString(lang, _("Color Mode")));
 
-        cupsFilePuts(fp, "*ColorModel Gray/Grayscale: \"<</cupsColorSpace 18/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n");
+        cupsFilePrintf(fp, "*ColorModel Gray/%s: \"<</cupsColorSpace 18/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n", _cupsLangString(lang, _("Grayscale")));
 
         if (!default_color || !strcmp(default_color, "FastGray"))
          default_color = "Gray";
@@ -3327,10 +3515,10 @@ _ppdCreateFromIPP(char   *buffer,       /* I - Filename buffer */
       else if (!strcmp(keyword, "srgb_8") || !strcmp(keyword, "color"))
       {
         if (!default_color)
-         cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
-                          "*OrderDependency: 10 AnySetup *ColorModel\n");
+         cupsFilePrintf(fp, "*OpenUI *ColorModel/%s: PickOne\n"
+                            "*OrderDependency: 10 AnySetup *ColorModel\n", _cupsLangString(lang, _("Color Mode")));
 
-        cupsFilePuts(fp, "*ColorModel RGB/Color: \"<</cupsColorSpace 19/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n");
+        cupsFilePrintf(fp, "*ColorModel RGB/%s: \"<</cupsColorSpace 19/cupsBitsPerColor 8/cupsColorOrder 0/cupsCompression 0>>setpagedevice\"\n", _cupsLangString(lang, _("Color")));
 
        default_color = "RGB";
       }
@@ -3349,13 +3537,13 @@ _ppdCreateFromIPP(char   *buffer,       /* I - Filename buffer */
 
   if ((attr = ippFindAttribute(response, "sides-supported", IPP_TAG_KEYWORD)) != NULL && ippContainsString(attr, "two-sided-long-edge"))
   {
-    cupsFilePuts(fp, "*OpenUI *Duplex/2-Sided Printing: PickOne\n"
-                     "*OrderDependency: 10 AnySetup *Duplex\n"
-                     "*DefaultDuplex: None\n"
-                     "*Duplex None/Off (1-Sided): \"<</Duplex false>>setpagedevice\"\n"
-                     "*Duplex DuplexNoTumble/Long-Edge (Portrait): \"<</Duplex true/Tumble false>>setpagedevice\"\n"
-                     "*Duplex DuplexTumble/Short-Edge (Landscape): \"<</Duplex true/Tumble true>>setpagedevice\"\n"
-                     "*CloseUI: *Duplex\n");
+    cupsFilePrintf(fp, "*OpenUI *Duplex/%s: PickOne\n"
+                      "*OrderDependency: 10 AnySetup *Duplex\n"
+                      "*DefaultDuplex: None\n"
+                      "*Duplex None/%s: \"<</Duplex false>>setpagedevice\"\n"
+                      "*Duplex DuplexNoTumble/%s: \"<</Duplex true/Tumble false>>setpagedevice\"\n"
+                      "*Duplex DuplexTumble/%s: \"<</Duplex true/Tumble true>>setpagedevice\"\n"
+                      "*CloseUI: *Duplex\n", _cupsLangString(lang, _("2-Sided Printing")), _cupsLangString(lang, _("Off (1-Sided)")), _cupsLangString(lang, _("Long-Edge (Portrait)")), _cupsLangString(lang, _("Short-Edge (Landscape)")));
 
     if ((attr = ippFindAttribute(response, "pwg-raster-document-sheet-back", IPP_TAG_KEYWORD)) != NULL)
     {
@@ -3403,6 +3591,92 @@ _ppdCreateFromIPP(char   *buffer,        /* I - Filename buffer */
   }
 
  /*
+  * Finishing options...
+  */
+
+  if ((attr = ippFindAttribute(response, "finishings-col-database", IPP_TAG_BEGIN_COLLECTION)) != NULL)
+  {
+    ipp_t              *col;           /* Collection value */
+    ipp_attribute_t    *template;      /* "finishing-template" member */
+    const char         *name;          /* String name */
+    int                        value;          /* Enum value, if any */
+    cups_array_t       *names;         /* Names we've added */
+
+    count = ippGetCount(attr);
+    names = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0, (cups_acopy_func_t)strdup, (cups_afree_func_t)free);
+
+    cupsFilePrintf(fp, "*OpenUI *cupsFinishingTemplate/%s: PickMany\n"
+                      "*OrderDependency: 10 AnySetup *cupsFinishingTemplate\n"
+                      "*DefaultcupsFinishingTemplate: none\n"
+                      "*cupsFinishingTemplate none/%s: \"\"\n"
+                      "*cupsIPPFinishings 3/none: \"*cupsFinishingTemplate none\"\n", _cupsLangString(lang, _("Finishing")), _cupsLangString(lang, _("No Finishing")));
+
+    for (i = 0; i < count; i ++)
+    {
+      col      = ippGetCollection(attr, i);
+      template = ippFindAttribute(col, "finishing-template", IPP_TAG_ZERO);
+
+      if ((name = ippGetString(template, 0, NULL)) == NULL || !strcmp(name, "none"))
+        continue;
+
+      if (cupsArrayFind(names, (char *)name))
+        continue;                      /* Already did this finishing template */
+
+      cupsArrayAdd(names, (char *)name);
+
+      for (j = 0; j < (int)(sizeof(finishings) / sizeof(finishings[0])); j ++)
+      {
+        if (!strcmp(finishings[j][0], name))
+       {
+          cupsFilePrintf(fp, "*cupsFinishingTemplate %s/%s: \"\"\n", name, _cupsLangString(lang, finishings[j][1]));
+
+         value = ippEnumValue("finishings", name);
+
+         if (value)
+           cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*cupsFinishingTemplate %s\"\n", value, name, name);
+          break;
+       }
+      }
+    }
+
+    cupsArrayDelete(names);
+
+    cupsFilePuts(fp, "*CloseUI: *cupsFinishingTemplate\n");
+  }
+  else if ((attr = ippFindAttribute(response, "finishings-supported", IPP_TAG_ENUM)) != NULL && (count = ippGetCount(attr)) > 1 )
+  {
+    const char         *name;          /* String name */
+    int                        value;          /* Enum value, if any */
+
+    count = ippGetCount(attr);
+
+    cupsFilePrintf(fp, "*OpenUI *cupsFinishingTemplate/%s: PickMany\n"
+                      "*OrderDependency: 10 AnySetup *cupsFinishingTemplate\n"
+                      "*DefaultcupsFinishingTemplate: none\n"
+                      "*cupsFinishingTemplate none/%s: \"\"\n"
+                      "*cupsIPPFinishings 3/none: \"*cupsFinishingTemplate none\"\n", _cupsLangString(lang, _("Finishing")), _cupsLangString(lang, _("No Finishing")));
+
+    for (i = 0; i < count; i ++)
+    {
+      if ((value = ippGetInteger(attr, i)) == 3)
+        continue;
+
+      name = ippEnumString("finishings", value);
+      for (j = 0; j < (int)(sizeof(finishings) / sizeof(finishings[0])); j ++)
+      {
+        if (!strcmp(finishings[j][0], name))
+       {
+          cupsFilePrintf(fp, "*cupsFinishingTemplate %s/%s: \"\"\n", name, _cupsLangString(lang, finishings[j][1]));
+         cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*cupsFinishingTemplate %s\"\n", value, name, name);
+          break;
+       }
+      }
+    }
+
+    cupsFilePuts(fp, "*CloseUI: *cupsFinishingTemplate\n");
+  }
+
+ /*
   * cupsPrintQuality and DefaultResolution...
   */
 
@@ -3413,20 +3687,20 @@ _ppdCreateFromIPP(char   *buffer,       /* I - Filename buffer */
     pwg_ppdize_resolution(attr, count / 2, &xres, &yres, ppdname, sizeof(ppdname));
     cupsFilePrintf(fp, "*DefaultResolution: %s\n", ppdname);
 
-    cupsFilePuts(fp, "*OpenUI *cupsPrintQuality/Print Quality: PickOne\n"
-                     "*OrderDependency: 10 AnySetup *cupsPrintQuality\n"
-                     "*DefaultcupsPrintQuality: Normal\n");
+    cupsFilePrintf(fp, "*OpenUI *cupsPrintQuality/%s: PickOne\n"
+                      "*OrderDependency: 10 AnySetup *cupsPrintQuality\n"
+                      "*DefaultcupsPrintQuality: Normal\n", _cupsLangString(lang, _("Print Quality")));
     if (count > 2)
     {
       pwg_ppdize_resolution(attr, 0, &xres, &yres, NULL, 0);
-      cupsFilePrintf(fp, "*cupsPrintQuality Draft: \"<</HWResolution[%d %d]>>setpagedevice\"\n", xres, yres);
+      cupsFilePrintf(fp, "*cupsPrintQuality Draft/%s: \"<</HWResolution[%d %d]>>setpagedevice\"\n", _cupsLangString(lang, _("Draft")), xres, yres);
     }
     pwg_ppdize_resolution(attr, count / 2, &xres, &yres, NULL, 0);
-    cupsFilePrintf(fp, "*cupsPrintQuality Normal: \"<</HWResolution[%d %d]>>setpagedevice\"\n", xres, yres);
+    cupsFilePrintf(fp, "*cupsPrintQuality Normal/%s: \"<</HWResolution[%d %d]>>setpagedevice\"\n", _cupsLangString(lang, _("Normal")), xres, yres);
     if (count > 1)
     {
       pwg_ppdize_resolution(attr, count - 1, &xres, &yres, NULL, 0);
-      cupsFilePrintf(fp, "*cupsPrintQuality High: \"<</HWResolution[%d %d]>>setpagedevice\"\n", xres, yres);
+      cupsFilePrintf(fp, "*cupsPrintQuality High/%s: \"<</HWResolution[%d %d]>>setpagedevice\"\n", _cupsLangString(lang, _("High")), xres, yres);
     }
 
     cupsFilePuts(fp, "*CloseUI: *cupsPrintQuality\n");
@@ -3467,14 +3741,14 @@ _ppdCreateFromIPP(char   *buffer,       /* I - Filename buffer */
 
       cupsFilePrintf(fp, "*DefaultResolution: %ddpi\n", lowdpi);
 
-      cupsFilePuts(fp, "*OpenUI *cupsPrintQuality/Print Quality: PickOne\n"
-                      "*OrderDependency: 10 AnySetup *cupsPrintQuality\n"
-                      "*DefaultcupsPrintQuality: Normal\n");
+      cupsFilePrintf(fp, "*OpenUI *cupsPrintQuality/%s: PickOne\n"
+                        "*OrderDependency: 10 AnySetup *cupsPrintQuality\n"
+                        "*DefaultcupsPrintQuality: Normal\n", _cupsLangString(lang, _("Print Quality")));
       if ((lowdpi & 1) == 0)
-       cupsFilePrintf(fp, "*cupsPrintQuality Draft: \"<</HWResolution[%d %d]>>setpagedevice\"\n", lowdpi, lowdpi / 2);
-      cupsFilePrintf(fp, "*cupsPrintQuality Normal: \"<</HWResolution[%d %d]>>setpagedevice\"\n", lowdpi, lowdpi);
+       cupsFilePrintf(fp, "*cupsPrintQuality Draft/%s: \"<</HWResolution[%d %d]>>setpagedevice\"\n", _cupsLangString(lang, _("Draft")), lowdpi, lowdpi / 2);
+      cupsFilePrintf(fp, "*cupsPrintQuality Normal/%s: \"<</HWResolution[%d %d]>>setpagedevice\"\n", _cupsLangString(lang, _("Normal")), lowdpi, lowdpi);
       if (hidpi > lowdpi)
-       cupsFilePrintf(fp, "*cupsPrintQuality High: \"<</HWResolution[%d %d]>>setpagedevice\"\n", hidpi, hidpi);
+       cupsFilePrintf(fp, "*cupsPrintQuality High/%s: \"<</HWResolution[%d %d]>>setpagedevice\"\n", _cupsLangString(lang, _("High")), hidpi, hidpi);
       cupsFilePuts(fp, "*CloseUI: *cupsPrintQuality\n");
     }
   }
@@ -3808,8 +4082,3 @@ pwg_unppdize_name(const char *ppd,        /* I - PPD keyword */
 
   *ptr = '\0';
 }
-
-
-/*
- * End of "$Id: ppd-cache.c 12980 2015-11-17 21:23:32Z msweet $".
- */
similarity index 99%
rename from cups/conflicts.c
rename to cups/ppd-conflicts.c
index 23fecde..68e03b4 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: conflicts.c 11558 2014-02-06 18:33:34Z msweet $"
+ * Option conflict management routines for CUPS.
  *
- * Option marking 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
@@ -65,7 +63,7 @@ static cups_array_t   *ppd_test_constraints(ppd_file_t *ppd,
  * the conflicting options.  The returned option array must be freed using
  * @link cupsFreeOptions@.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 int                                    /* O - Number of conflicting options */
@@ -164,7 +162,7 @@ cupsGetConflicts(
  * choice for the conflicting option, then iterating over all possible choices
  * until a non-conflicting option choice is found.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 int                                    /* O  - 1 on success, 0 on failure */
@@ -636,7 +634,7 @@ ppdConflicts(ppd_file_t *ppd)               /* I - PPD to check */
  * This function tests whether a particular option choice is available based
  * on constraints against options in the "InstallableOptions" group.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 int                                    /* O - 1 if conflicting, 0 if not conflicting */
@@ -1193,8 +1191,3 @@ ppd_test_constraints(
 
   return (active);
 }
-
-
-/*
- * End of "$Id: conflicts.c 11558 2014-02-06 18:33:34Z msweet $".
- */
similarity index 52%
rename from cups/custom.c
rename to cups/ppd-custom.c
index 28c1fed..6e4d3bd 100644 (file)
@@ -1,34 +1,25 @@
 /*
- * "$Id: custom.c 10996 2013-05-29 11:51:34Z msweet $"
+ * PPD custom option routines for CUPS.
  *
- *   PPD custom option routines for CUPS.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * PostScript is a trademark of Adobe Systems, Inc.
  *
- *   PostScript is a trademark of Adobe Systems, Inc.
+ * This code and any derivative of it may be used and distributed
+ * freely under the terms of the GNU General Public License when
+ * used with GNU Ghostscript or its derivatives.  Use of the code
+ * (or any derivative of it) with software other than GNU
+ * GhostScript (or its derivatives) is governed by the CUPS license
+ * agreement.
  *
- *   This code and any derivative of it may be used and distributed
- *   freely under the terms of the GNU General Public License when
- *   used with GNU Ghostscript or its derivatives.  Use of the code
- *   (or any derivative of it) with software other than GNU
- *   GhostScript (or its derivatives) is governed by the CUPS license
- *   agreement.
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   ppdFindCustomOption() - Find a custom option.
- *   ppdFindCustomParam()  - Find a parameter for a custom option.
- *   ppdFirstCustomParam() - Return the first parameter for a custom option.
- *   ppdNextCustomParam()  - Return the next parameter for a custom option.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
  */
 
 #include "cups-private.h"
+#include "ppd-private.h"
 
 
 /*
  * 'ppdFindCustomOption()' - Find a custom option.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ppd_coption_t *                                /* O - Custom option or NULL */
@@ -62,7 +54,7 @@ ppdFindCustomOption(ppd_file_t *ppd,  /* I - PPD file */
 /*
  * 'ppdFindCustomParam()' - Find a parameter for a custom option.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ppd_cparam_t *                         /* O - Custom parameter or NULL */
@@ -88,7 +80,7 @@ ppdFindCustomParam(ppd_coption_t *opt,        /* I - Custom option */
 /*
  * 'ppdFirstCustomParam()' - Return the first parameter for a custom option.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ppd_cparam_t *                         /* O - Custom parameter or NULL */
@@ -104,7 +96,7 @@ ppdFirstCustomParam(ppd_coption_t *opt)      /* I - Custom option */
 /*
  * 'ppdNextCustomParam()' - Return the next parameter for a custom option.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ppd_cparam_t *                         /* O - Custom parameter or NULL */
@@ -115,8 +107,3 @@ ppdNextCustomParam(ppd_coption_t *opt)      /* I - Custom option */
 
   return ((ppd_cparam_t *)cupsArrayNext(opt->params));
 }
-
-
-/*
- * End of "$Id: custom.c 10996 2013-05-29 11:51:34Z msweet $".
- */
similarity index 99%
rename from cups/emit.c
rename to cups/ppd-emit.c
index b1ad410..0b4f1c9 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: emit.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * PPD code emission 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
@@ -22,6 +20,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd.h"
 #if defined(WIN32) || defined(__EMX__)
 #  include <io.h>
 #else
@@ -70,7 +69,7 @@ ppdCollect(ppd_file_t    *ppd,                /* I - PPD file data */
  * The choices array should be freed using @code free@ when you are
  * finished with it.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - Number of options marked */
@@ -243,7 +242,7 @@ ppdEmit(ppd_file_t    *ppd,         /* I - PPD file record */
  *
  * When "limit" is zero, this function is identical to ppdEmit().
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on failure */
@@ -537,7 +536,7 @@ ppdEmitJCL(ppd_file_t *ppd,         /* I - PPD file record */
 /*
  * 'ppdEmitJCLEnd()' - Emit JCLEnd code to a file.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on failure */
@@ -596,7 +595,7 @@ ppdEmitJCLEnd(ppd_file_t *ppd,              /* I - PPD file record */
  * The return string is allocated on the heap and should be freed using
  * @code free@ when you are done with it.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 char *                                 /* O - String containing option code or @code NULL@ if there is no option code */
@@ -1199,8 +1198,3 @@ ppd_handle_media(ppd_file_t *ppd) /* I - PPD file */
     }
   }
 }
-
-
-/*
- * End of "$Id: emit.c 11594 2014-02-14 20:09:01Z msweet $".
- */
similarity index 97%
rename from cups/localize.c
rename to cups/ppd-localize.c
index 23faa55..db93170 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: localize.c 12834 2015-08-06 13:56:32Z msweet $"
- *
  * PPD localization routines for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -46,7 +44,7 @@ static cups_lang_t    *ppd_ll_CC(char *ll_CC, size_t ll_CC_size);
  * descriptions, printer presets, and custom option parameters.  Each
  * localized string uses the UTF-8 character encoding.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -231,7 +229,7 @@ ppdLocalizeAttr(ppd_file_t *ppd,    /* I - PPD file */
  *
  * If no value of the requested scheme can be found, NULL is returned.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 const char *                           /* O - Value or NULL if not found */
@@ -484,7 +482,7 @@ ppdLocalizeIPPReason(
  * text from the attribute value. If no localized text for the requested
  * name can be found, @code NULL@ is returned.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 const char *                           /* O - Value or @code NULL@ if not found */
@@ -622,7 +620,7 @@ _ppdGetLanguages(ppd_file_t *ppd)   /* I - PPD file */
 /*
  * '_ppdHashName()' - Generate a hash value for a device or profile name.
  *
- * This function is primarily used on OS X, but is generally accessible
+ * This function is primarily used on macOS, but is generally accessible
  * since cupstestppd needs to check for profile name collisions in PPD files...
  */
 
@@ -696,6 +694,17 @@ _ppdLocalizedAttr(ppd_file_t *ppd, /* I - PPD file */
        snprintf(lkeyword, sizeof(lkeyword), "jp.%s", keyword);
        attr = ppdFindAttr(ppd, lkeyword, spec);
       }
+      else if (!strncmp(ll_CC, "nb", 2))
+      {
+       /*
+       * Norway has two languages, "Bokmal" (the primary one)
+       * and "Nynorsk" (new Norwegian); this code maps from the (currently)
+       * recommended "nb" to the previously recommended "no"...
+       */
+
+       snprintf(lkeyword, sizeof(lkeyword), "no.%s", keyword);
+       attr = ppdFindAttr(ppd, lkeyword, spec);
+      }
       else if (!strncmp(ll_CC, "no", 2))
       {
        /*
@@ -772,8 +781,3 @@ ppd_ll_CC(char   *ll_CC,            /* O - Country-specific locale name */
                 lang->language, ll_CC));
   return (lang);
 }
-
-
-/*
- * End of "$Id: localize.c 12834 2015-08-06 13:56:32Z msweet $".
- */
similarity index 98%
rename from cups/mark.c
rename to cups/ppd-mark.c
index 0c27628..08bc993 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: mark.c 12258 2014-11-19 12:38:44Z msweet $"
- *
  * Option marking 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
@@ -22,6 +20,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd-private.h"
 
 
 /*
@@ -114,7 +113,7 @@ cupsMarkOptions(
     * InputSlot, etc.) is not also set.
     *
     * For PageSize, we also check for an empty option value since some versions
-    * of MacOS X use it to specify auto-selection of the media based solely on
+    * of macOS use it to specify auto-selection of the media based solely on
     * the size.
     */
 
@@ -562,7 +561,7 @@ ppdMarkOption(ppd_file_t *ppd,              /* I - PPD file record */
  *
  * Options are returned from all groups in ascending alphanumeric order.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ppd_option_t *                         /* O - First option or @code NULL@ */
@@ -580,7 +579,7 @@ ppdFirstOption(ppd_file_t *ppd)             /* I - PPD file */
  *
  * Options are returned from all groups in ascending alphanumeric order.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ppd_option_t *                         /* O - Next option or @code NULL@ */
@@ -771,7 +770,7 @@ ppd_mark_option(ppd_file_t *ppd,    /* I - PPD file */
                ppd, option, choice));
 
  /*
-  * AP_D_InputSlot is the "default input slot" on MacOS X, and setting
+  * AP_D_InputSlot is the "default input slot" on macOS, and setting
   * it clears the regular InputSlot choices...
   */
 
@@ -1081,8 +1080,3 @@ ppd_mark_option(ppd_file_t *ppd,  /* I - PPD file */
 
   cupsArrayAdd(ppd->marked, c);
 }
-
-
-/*
- * End of "$Id: mark.c 12258 2014-11-19 12:38:44Z msweet $".
- */
similarity index 89%
rename from cups/page.c
rename to cups/ppd-page.c
index 7c496c6..f18e68d 100644 (file)
@@ -1,27 +1,18 @@
 /*
- * "$Id: page.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Page size functions for CUPS.
  *
- *   Page size functions for CUPS.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * PostScript is a trademark of Adobe Systems, Inc.
  *
- *   PostScript is a trademark of Adobe Systems, Inc.
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   ppdPageSize()       - Get the page size record for the given size.
- *   ppdPageSizeLimits() - Return the custom page size limits.
- *   ppdPageWidth()      - Get the page width for the given size.
- *   ppdPageLength()     - Get the page length for the given size.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -198,7 +189,7 @@ ppdPageSize(ppd_file_t *ppd,                /* I - PPD file record */
  * If the specified PPD file does not support custom page sizes, both
  * "minimum" and "maximum" are filled with zeroes.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 int                                    /* O - 1 if custom sizes are supported, 0 otherwise */
@@ -389,8 +380,3 @@ ppdPageLength(ppd_file_t *ppd,      /* I - PPD file */
   else
     return (size->length);
 }
-
-
-/*
- * End of "$Id: page.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 126ae49..83f048e 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ppd-private.h 12733 2015-06-12 01:21:05Z msweet $"
- *
  * Private PPD definitions for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -56,6 +54,18 @@ extern "C" {
  * Types and structures...
  */
 
+typedef struct _ppd_globals_s          /**** CUPS PPD global state data ****/
+{
+  /* ppd.c */
+  ppd_status_t         ppd_status;     /* Status of last ppdOpen*() */
+  int                  ppd_line;       /* Current line number */
+  ppd_conform_t                ppd_conform;    /* Level of conformance required */
+
+  /* ppd-util.c */
+  char                 ppd_filename[HTTP_MAX_URI];
+                                       /* PPD filename */
+} _ppd_globals_t;
+
 typedef enum _ppd_localization_e       /**** Selector for _ppdOpen ****/
 {
   _PPD_LOCALIZATION_DEFAULT,           /* Load only the default localization */
@@ -205,6 +215,7 @@ extern char         *_ppdCreateFromIPP(char *buffer, size_t bufsize, ipp_t *response);
 extern void            _ppdFreeLanguages(cups_array_t *languages);
 extern cups_encoding_t _ppdGetEncoding(const char *name);
 extern cups_array_t    *_ppdGetLanguages(ppd_file_t *ppd);
+extern _ppd_globals_t  *_ppdGlobals(void);
 extern unsigned                _ppdHashName(const char *name);
 extern ppd_attr_t      *_ppdLocalizedAttr(ppd_file_t *ppd, const char *keyword,
                                           const char *spec, const char *ll_CC);
@@ -234,7 +245,3 @@ extern const char   *_pwgPageSizeForMedia(pwg_media_t *media,
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_PPD_PRIVATE_H_ */
-
-/*
- * End of "$Id: ppd-private.h 12733 2015-06-12 01:21:05Z msweet $".
- */
diff --git a/cups/ppd-util.c b/cups/ppd-util.c
new file mode 100644 (file)
index 0000000..af5bd20
--- /dev/null
@@ -0,0 +1,716 @@
+/*
+ * PPD utilities for CUPS.
+ *
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "cups-private.h"
+#include "ppd-private.h"
+#include <fcntl.h>
+#include <sys/stat.h>
+#if defined(WIN32) || defined(__EMX__)
+#  include <io.h>
+#else
+#  include <unistd.h>
+#endif /* WIN32 || __EMX__ */
+
+
+/*
+ * Local functions...
+ */
+
+static int     cups_get_printer_uri(http_t *http, const char *name,
+                                    char *host, int hostsize, int *port,
+                                    char *resource, int resourcesize,
+                                    int depth);
+
+
+/*
+ * 'cupsGetPPD()' - Get the PPD file for a printer on the default server.
+ *
+ * For classes, @code cupsGetPPD@ returns the PPD file for the first printer
+ * in the class.
+ *
+ * The returned filename is stored in a static buffer and is overwritten with
+ * each call to @code cupsGetPPD@ or @link cupsGetPPD2@.  The caller "owns" the
+ * file that is created and must @code unlink@ the returned filename.
+ */
+
+const char *                           /* O - Filename for PPD file */
+cupsGetPPD(const char *name)           /* I - Destination name */
+{
+  _ppd_globals_t *pg = _ppdGlobals();  /* Pointer to library globals */
+  time_t       modtime = 0;            /* Modification time */
+
+
+ /*
+  * Return the PPD file...
+  */
+
+  pg->ppd_filename[0] = '\0';
+
+  if (cupsGetPPD3(CUPS_HTTP_DEFAULT, name, &modtime, pg->ppd_filename,
+                  sizeof(pg->ppd_filename)) == HTTP_STATUS_OK)
+    return (pg->ppd_filename);
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'cupsGetPPD2()' - Get the PPD file for a printer from the specified server.
+ *
+ * For classes, @code cupsGetPPD2@ returns the PPD file for the first printer
+ * in the class.
+ *
+ * The returned filename is stored in a static buffer and is overwritten with
+ * each call to @link cupsGetPPD@ or @code cupsGetPPD2@.  The caller "owns" the
+ * file that is created and must @code unlink@ the returned filename.
+ *
+ * @since CUPS 1.1.21/macOS 10.4@
+ */
+
+const char *                           /* O - Filename for PPD file */
+cupsGetPPD2(http_t     *http,          /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
+            const char *name)          /* I - Destination name */
+{
+  _ppd_globals_t *pg = _ppdGlobals();  /* Pointer to library globals */
+  time_t       modtime = 0;            /* Modification time */
+
+
+  pg->ppd_filename[0] = '\0';
+
+  if (cupsGetPPD3(http, name, &modtime, pg->ppd_filename,
+                  sizeof(pg->ppd_filename)) == HTTP_STATUS_OK)
+    return (pg->ppd_filename);
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'cupsGetPPD3()' - Get the PPD file for a printer on the specified
+ *                   server if it has changed.
+ *
+ * The "modtime" parameter contains the modification time of any
+ * locally-cached content and is updated with the time from the PPD file on
+ * the server.
+ *
+ * The "buffer" parameter contains the local PPD filename.  If it contains
+ * the empty string, a new temporary file is created, otherwise the existing
+ * file will be overwritten as needed.  The caller "owns" the file that is
+ * created and must @code unlink@ the returned filename.
+ *
+ * On success, @code HTTP_STATUS_OK@ is returned for a new PPD file and
+ * @code HTTP_STATUS_NOT_MODIFIED@ if the existing PPD file is up-to-date.  Any other
+ * status is an error.
+ *
+ * For classes, @code cupsGetPPD3@ returns the PPD file for the first printer
+ * in the class.
+ *
+ * @since CUPS 1.4/macOS 10.6@
+ */
+
+http_status_t                          /* O  - HTTP status */
+cupsGetPPD3(http_t     *http,          /* I  - HTTP connection or @code CUPS_HTTP_DEFAULT@ */
+            const char *name,          /* I  - Destination name */
+           time_t     *modtime,        /* IO - Modification time */
+           char       *buffer,         /* I  - Filename buffer */
+           size_t     bufsize)         /* I  - Size of filename buffer */
+{
+  int          http_port;              /* Port number */
+  char         http_hostname[HTTP_MAX_HOST];
+                                       /* Hostname associated with connection */
+  http_t       *http2;                 /* Alternate HTTP connection */
+  int          fd;                     /* PPD file */
+  char         localhost[HTTP_MAX_URI],/* Local hostname */
+               hostname[HTTP_MAX_URI], /* Hostname */
+               resource[HTTP_MAX_URI]; /* Resource name */
+  int          port;                   /* Port number */
+  http_status_t        status;                 /* HTTP status from server */
+  char         tempfile[1024] = "";    /* Temporary filename */
+  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
+
+
+ /*
+  * Range check input...
+  */
+
+  DEBUG_printf(("cupsGetPPD3(http=%p, name=\"%s\", modtime=%p(%d), buffer=%p, "
+                "bufsize=%d)", http, name, modtime,
+               modtime ? (int)*modtime : 0, buffer, (int)bufsize));
+
+  if (!name)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer name"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
+  }
+
+  if (!modtime)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No modification time"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
+  }
+
+  if (!buffer || bufsize <= 1)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad filename buffer"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
+  }
+
+#ifndef WIN32
+ /*
+  * See if the PPD file is available locally...
+  */
+
+  if (http)
+    httpGetHostname(http, hostname, sizeof(hostname));
+  else
+  {
+    strlcpy(hostname, cupsServer(), sizeof(hostname));
+    if (hostname[0] == '/')
+      strlcpy(hostname, "localhost", sizeof(hostname));
+  }
+
+  if (!_cups_strcasecmp(hostname, "localhost"))
+  {
+    char       ppdname[1024];          /* PPD filename */
+    struct stat        ppdinfo;                /* PPD file information */
+
+
+    snprintf(ppdname, sizeof(ppdname), "%s/ppd/%s.ppd", cg->cups_serverroot,
+             name);
+    if (!stat(ppdname, &ppdinfo) && !access(ppdname, R_OK))
+    {
+     /*
+      * OK, the file exists and is readable, use it!
+      */
+
+      if (buffer[0])
+      {
+        unlink(buffer);
+
+       if (symlink(ppdname, buffer) && errno != EEXIST)
+        {
+          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
+
+         return (HTTP_STATUS_SERVER_ERROR);
+       }
+      }
+      else
+      {
+        int            tries;          /* Number of tries */
+        const char     *tmpdir;        /* TMPDIR environment variable */
+       struct timeval  curtime;        /* Current time */
+
+       /*
+       * Previously we put root temporary files in the default CUPS temporary
+       * directory under /var/spool/cups.  However, since the scheduler cleans
+       * out temporary files there and runs independently of the user apps, we
+       * don't want to use it unless specifically told to by cupsd.
+       */
+
+       if ((tmpdir = getenv("TMPDIR")) == NULL)
+#  ifdef __APPLE__
+         tmpdir = "/private/tmp";      /* /tmp is a symlink to /private/tmp */
+#  else
+          tmpdir = "/tmp";
+#  endif /* __APPLE__ */
+
+       /*
+       * Make the temporary name using the specified directory...
+       */
+
+       tries = 0;
+
+       do
+       {
+        /*
+         * Get the current time of day...
+         */
+
+         gettimeofday(&curtime, NULL);
+
+        /*
+         * Format a string using the hex time values...
+         */
+
+         snprintf(buffer, bufsize, "%s/%08lx%05lx", tmpdir,
+                  (unsigned long)curtime.tv_sec,
+                  (unsigned long)curtime.tv_usec);
+
+        /*
+         * Try to make a symlink...
+         */
+
+         if (!symlink(ppdname, buffer))
+           break;
+
+         tries ++;
+       }
+       while (tries < 1000);
+
+        if (tries >= 1000)
+       {
+          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
+
+         return (HTTP_STATUS_SERVER_ERROR);
+       }
+      }
+
+      if (*modtime >= ppdinfo.st_mtime)
+        return (HTTP_STATUS_NOT_MODIFIED);
+      else
+      {
+        *modtime = ppdinfo.st_mtime;
+       return (HTTP_STATUS_OK);
+      }
+    }
+  }
+#endif /* !WIN32 */
+
+ /*
+  * Try finding a printer URI for this printer...
+  */
+
+  if (!http)
+    if ((http = _cupsConnect()) == NULL)
+      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
+
+  if (!cups_get_printer_uri(http, name, hostname, sizeof(hostname), &port,
+                            resource, sizeof(resource), 0))
+    return (HTTP_STATUS_NOT_FOUND);
+
+  DEBUG_printf(("2cupsGetPPD3: Printer hostname=\"%s\", port=%d", hostname,
+                port));
+
+  if (cupsServer()[0] == '/' && !_cups_strcasecmp(hostname, "localhost") && port == ippPort())
+  {
+   /*
+    * Redirect localhost to domain socket...
+    */
+
+    strlcpy(hostname, cupsServer(), sizeof(hostname));
+    port = 0;
+
+    DEBUG_printf(("2cupsGetPPD3: Redirecting to \"%s\".", hostname));
+  }
+
+ /*
+  * Remap local hostname to localhost...
+  */
+
+  httpGetHostname(NULL, localhost, sizeof(localhost));
+
+  DEBUG_printf(("2cupsGetPPD3: Local hostname=\"%s\"", localhost));
+
+  if (!_cups_strcasecmp(localhost, hostname))
+    strlcpy(hostname, "localhost", sizeof(hostname));
+
+ /*
+  * Get the hostname and port number we are connected to...
+  */
+
+  httpGetHostname(http, http_hostname, sizeof(http_hostname));
+  http_port = httpAddrPort(http->hostaddr);
+
+  DEBUG_printf(("2cupsGetPPD3: Connection hostname=\"%s\", port=%d",
+                http_hostname, http_port));
+
+ /*
+  * Reconnect to the correct server as needed...
+  */
+
+  if (!_cups_strcasecmp(http_hostname, hostname) && port == http_port)
+    http2 = http;
+  else if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC,
+                                cupsEncryption(), 1, 30000, NULL)) == NULL)
+  {
+    DEBUG_puts("1cupsGetPPD3: Unable to connect to server");
+
+    return (HTTP_STATUS_SERVICE_UNAVAILABLE);
+  }
+
+ /*
+  * Get a temp file...
+  */
+
+  if (buffer[0])
+    fd = open(buffer, O_CREAT | O_TRUNC | O_WRONLY, 0600);
+  else
+    fd = cupsTempFd(tempfile, sizeof(tempfile));
+
+  if (fd < 0)
+  {
+   /*
+    * Can't open file; close the server connection and return NULL...
+    */
+
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
+
+    if (http2 != http)
+      httpClose(http2);
+
+    return (HTTP_STATUS_SERVER_ERROR);
+  }
+
+ /*
+  * And send a request to the HTTP server...
+  */
+
+  strlcat(resource, ".ppd", sizeof(resource));
+
+  if (*modtime > 0)
+    httpSetField(http2, HTTP_FIELD_IF_MODIFIED_SINCE,
+                 httpGetDateString(*modtime));
+
+  status = cupsGetFd(http2, resource, fd);
+
+  close(fd);
+
+ /*
+  * See if we actually got the file or an error...
+  */
+
+  if (status == HTTP_STATUS_OK)
+  {
+    *modtime = httpGetDateTime(httpGetField(http2, HTTP_FIELD_DATE));
+
+    if (tempfile[0])
+      strlcpy(buffer, tempfile, bufsize);
+  }
+  else if (status != HTTP_STATUS_NOT_MODIFIED)
+  {
+    _cupsSetHTTPError(status);
+
+    if (buffer[0])
+      unlink(buffer);
+    else if (tempfile[0])
+      unlink(tempfile);
+  }
+  else if (tempfile[0])
+    unlink(tempfile);
+
+  if (http2 != http)
+    httpClose(http2);
+
+ /*
+  * Return the PPD file...
+  */
+
+  DEBUG_printf(("1cupsGetPPD3: Returning status %d", status));
+
+  return (status);
+}
+
+
+/*
+ * 'cupsGetServerPPD()' - Get an available PPD file from the server.
+ *
+ * This function returns the named PPD file from the server.  The
+ * list of available PPDs is provided by the IPP @code CUPS_GET_PPDS@
+ * operation.
+ *
+ * You must remove (unlink) the PPD file when you are finished with
+ * it. The PPD filename is stored in a static location that will be
+ * overwritten on the next call to @link cupsGetPPD@, @link cupsGetPPD2@,
+ * or @link cupsGetServerPPD@.
+ *
+ * @since CUPS 1.3/macOS 10.5@
+ */
+
+char *                                 /* O - Name of PPD file or @code NULL@ on error */
+cupsGetServerPPD(http_t     *http,     /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
+                 const char *name)     /* I - Name of PPD file ("ppd-name") */
+{
+  int                  fd;             /* PPD file descriptor */
+  ipp_t                        *request;       /* IPP request */
+  _ppd_globals_t       *pg = _ppdGlobals();
+                                       /* Pointer to library globals */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!name)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No PPD name"), 1);
+
+    return (NULL);
+  }
+
+  if (!http)
+    if ((http = _cupsConnect()) == NULL)
+      return (NULL);
+
+ /*
+  * Get a temp file...
+  */
+
+  if ((fd = cupsTempFd(pg->ppd_filename, sizeof(pg->ppd_filename))) < 0)
+  {
+   /*
+    * Can't open file; close the server connection and return NULL...
+    */
+
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
+
+    return (NULL);
+  }
+
+ /*
+  * Get the PPD file...
+  */
+
+  request = ippNewRequest(IPP_OP_CUPS_GET_PPD);
+  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name", NULL,
+               name);
+
+  ippDelete(cupsDoIORequest(http, request, "/", -1, fd));
+
+  close(fd);
+
+  if (cupsLastError() != IPP_STATUS_OK)
+  {
+    unlink(pg->ppd_filename);
+    return (NULL);
+  }
+  else
+    return (pg->ppd_filename);
+}
+
+
+/*
+ * 'cups_get_printer_uri()' - Get the printer-uri-supported attribute for the
+ *                            first printer in a class.
+ */
+
+static int                             /* O - 1 on success, 0 on failure */
+cups_get_printer_uri(
+    http_t     *http,                  /* I - Connection to server */
+    const char *name,                  /* I - Name of printer or class */
+    char       *host,                  /* I - Hostname buffer */
+    int        hostsize,               /* I - Size of hostname buffer */
+    int        *port,                  /* O - Port number */
+    char       *resource,              /* I - Resource buffer */
+    int        resourcesize,           /* I - Size of resource buffer */
+    int        depth)                  /* I - Depth of query */
+{
+  int          i;                      /* Looping var */
+  int          http_port;              /* Port number */
+  http_t       *http2;                 /* Alternate HTTP connection */
+  ipp_t                *request,               /* IPP request */
+               *response;              /* IPP response */
+  ipp_attribute_t *attr;               /* Current attribute */
+  char         uri[HTTP_MAX_URI],      /* printer-uri attribute */
+               scheme[HTTP_MAX_URI],   /* Scheme name */
+               username[HTTP_MAX_URI], /* Username:password */
+               classname[255],         /* Temporary class name */
+               http_hostname[HTTP_MAX_HOST];
+                                       /* Hostname associated with connection */
+  static const char * const requested_attrs[] =
+               {                       /* Requested attributes */
+                 "device-uri",
+                 "member-uris",
+                 "printer-uri-supported",
+                 "printer-type"
+               };
+
+
+  DEBUG_printf(("4cups_get_printer_uri(http=%p, name=\"%s\", host=%p, hostsize=%d, resource=%p, resourcesize=%d, depth=%d)", http, name, host, hostsize, resource, resourcesize, depth));
+
+ /*
+  * Setup the printer URI...
+  */
+
+  if (httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, "localhost", 0, "/printers/%s", name) < HTTP_URI_STATUS_OK)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create printer-uri"), 1);
+
+    *host     = '\0';
+    *resource = '\0';
+
+    return (0);
+  }
+
+  DEBUG_printf(("5cups_get_printer_uri: printer-uri=\"%s\"", uri));
+
+ /*
+  * Get the hostname and port number we are connected to...
+  */
+
+  httpGetHostname(http, http_hostname, sizeof(http_hostname));
+  http_port = httpAddrPort(http->hostaddr);
+
+  DEBUG_printf(("5cups_get_printer_uri: http_hostname=\"%s\"", http_hostname));
+
+ /*
+  * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
+  * attributes:
+  *
+  *    attributes-charset
+  *    attributes-natural-language
+  *    printer-uri
+  *    requested-attributes
+  */
+
+  request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+
+  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
+
+  ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(requested_attrs) / sizeof(requested_attrs[0]), NULL, requested_attrs);
+
+ /*
+  * Do the request and get back a response...
+  */
+
+  snprintf(resource, (size_t)resourcesize, "/printers/%s", name);
+
+  if ((response = cupsDoRequest(http, request, resource)) != NULL)
+  {
+    const char *device_uri = NULL;     /* device-uri value */
+
+    if ((attr = ippFindAttribute(response, "device-uri", IPP_TAG_URI)) != NULL)
+    {
+      device_uri = attr->values[0].string.text;
+      DEBUG_printf(("5cups_get_printer_uri: device-uri=\"%s\"", device_uri));
+    }
+
+    if (device_uri &&
+        (((!strncmp(device_uri, "ipp://", 6) || !strncmp(device_uri, "ipps://", 7)) &&
+         (strstr(device_uri, "/printers/") != NULL || strstr(device_uri, "/classes/") != NULL)) ||
+         ((strstr(device_uri, "._ipp.") != NULL || strstr(device_uri, "._ipps.") != NULL) &&
+          !strcmp(device_uri + strlen(device_uri) - 5, "/cups"))))
+    {
+     /*
+      * Statically-configured shared printer.
+      */
+
+      httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(device_uri, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
+      ippDelete(response);
+
+      DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
+      return (1);
+    }
+    else if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
+    {
+     /*
+      * Get the first actual printer name in the class...
+      */
+
+      DEBUG_printf(("5cups_get_printer_uri: Got member-uris with %d values.", ippGetCount(attr)));
+
+      for (i = 0; i < attr->num_values; i ++)
+      {
+        DEBUG_printf(("5cups_get_printer_uri: member-uris[%d]=\"%s\"", i, ippGetString(attr, i, NULL)));
+
+       httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text, scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
+       if (!strncmp(resource, "/printers/", 10))
+       {
+        /*
+         * Found a printer!
+         */
+
+          ippDelete(response);
+
+         DEBUG_printf(("5cups_get_printer_uri: Found printer member with host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
+         return (1);
+       }
+      }
+
+     /*
+      * No printers in this class - try recursively looking for a printer,
+      * but not more than 3 levels deep...
+      */
+
+      if (depth < 3)
+      {
+       for (i = 0; i < attr->num_values; i ++)
+       {
+         httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text,
+                         scheme, sizeof(scheme), username, sizeof(username),
+                         host, hostsize, port, resource, resourcesize);
+         if (!strncmp(resource, "/classes/", 9))
+         {
+          /*
+           * Found a class!  Connect to the right server...
+           */
+
+           if (!_cups_strcasecmp(http_hostname, host) && *port == http_port)
+             http2 = http;
+           else if ((http2 = httpConnect2(host, *port, NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL)) == NULL)
+           {
+             DEBUG_puts("8cups_get_printer_uri: Unable to connect to server");
+
+             continue;
+           }
+
+           /*
+           * Look up printers on that server...
+           */
+
+            strlcpy(classname, resource + 9, sizeof(classname));
+
+            cups_get_printer_uri(http2, classname, host, hostsize, port,
+                                resource, resourcesize, depth + 1);
+
+           /*
+           * Close the connection as needed...
+           */
+
+           if (http2 != http)
+             httpClose(http2);
+
+            if (*host)
+             return (1);
+         }
+       }
+      }
+    }
+    else if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
+    {
+      httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(attr->values[0].string.text, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
+      ippDelete(response);
+
+      DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
+
+      if (!strncmp(resource, "/classes/", 9))
+      {
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found for class"), 1);
+
+       *host     = '\0';
+       *resource = '\0';
+
+        DEBUG_puts("5cups_get_printer_uri: Not returning class.");
+       return (0);
+      }
+
+      return (1);
+    }
+
+    ippDelete(response);
+  }
+
+  if (cupsLastError() != IPP_STATUS_ERROR_NOT_FOUND)
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found"), 1);
+
+  *host     = '\0';
+  *resource = '\0';
+
+  DEBUG_puts("5cups_get_printer_uri: Printer URI not found.");
+  return (0);
+}
index 4afc4bb..44a22c5 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ppd.c 12848 2015-08-26 18:51:57Z msweet $"
- *
  * PPD file routines for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -58,6 +56,18 @@ typedef struct _ppd_line_s
 
 
 /*
+ * Local globals...
+ */
+
+static _cups_threadkey_t ppd_globals_key = _CUPS_THREADKEY_INITIALIZER;
+                                       /* Thread local storage key */
+#ifdef HAVE_PTHREAD_H
+static pthread_once_t  ppd_globals_key_once = PTHREAD_ONCE_INIT;
+                                       /* One-time initialization object */
+#endif /* HAVE_PTHREAD_H */
+
+
+/*
  * Local functions...
  */
 
@@ -80,16 +90,23 @@ static ppd_cparam_t *ppd_get_cparam(ppd_coption_t *opt,
                                        const char *param,
                                        const char *text);
 static ppd_group_t     *ppd_get_group(ppd_file_t *ppd, const char *name,
-                                      const char *text, _cups_globals_t *cg,
+                                      const char *text, _ppd_globals_t *pg,
                                       cups_encoding_t encoding);
 static ppd_option_t    *ppd_get_option(ppd_group_t *group, const char *name);
+static _ppd_globals_t  *ppd_globals_alloc(void);
+#if defined(HAVE_PTHREAD_H) || defined(WIN32)
+static void            ppd_globals_free(_ppd_globals_t *g);
+#endif /* HAVE_PTHREAD_H || WIN32 */
+#ifdef HAVE_PTHREAD_H
+static void            ppd_globals_init(void);
+#endif /* HAVE_PTHREAD_H */
 static int             ppd_hash_option(ppd_option_t *option);
 static int             ppd_read(cups_file_t *fp, _ppd_line_t *line,
                                 char *keyword, char *option, char *text,
                                 char **string, int ignoreblank,
-                                _cups_globals_t *cg);
+                                _ppd_globals_t *pg);
 static int             ppd_update_filters(ppd_file_t *ppd,
-                                          _cups_globals_t *cg);
+                                          _ppd_globals_t *pg);
 
 
 /*
@@ -285,7 +302,7 @@ ppdClose(ppd_file_t *ppd)           /* I - PPD file record */
 /*
  * 'ppdErrorString()' - Returns the text associated with a status.
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 const char *                           /* O - Status string */
@@ -353,29 +370,69 @@ _ppdGetEncoding(const char *name) /* I - LanguageEncoding string */
 
 
 /*
+ * '_ppdGlobals()' - Return a pointer to thread local storage
+ */
+
+_ppd_globals_t *                       /* O - Pointer to global data */
+_ppdGlobals(void)
+{
+  _ppd_globals_t *pg;                  /* Pointer to global data */
+
+
+#ifdef HAVE_PTHREAD_H
+ /*
+  * Initialize the global data exactly once...
+  */
+
+  pthread_once(&ppd_globals_key_once, ppd_globals_init);
+#endif /* HAVE_PTHREAD_H */
+
+ /*
+  * See if we have allocated the data yet...
+  */
+
+  if ((pg = (_ppd_globals_t *)_cupsThreadGetData(ppd_globals_key)) == NULL)
+  {
+   /*
+    * No, allocate memory as set the pointer for the key...
+    */
+
+    if ((pg = ppd_globals_alloc()) != NULL)
+      _cupsThreadSetData(ppd_globals_key, pg);
+  }
+
+ /*
+  * Return the pointer to the data...
+  */
+
+  return (pg);
+}
+
+
+/*
  * 'ppdLastError()' - Return the status from the last ppdOpen*().
  *
- * @since CUPS 1.1.19/OS X 10.3@
+ * @since CUPS 1.1.19/macOS 10.3@
  */
 
 ppd_status_t                           /* O - Status code */
 ppdLastError(int *line)                        /* O - Line number */
 {
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
 
 
   if (line)
-    *line = cg->ppd_line;
+    *line = pg->ppd_line;
 
-  return (cg->ppd_status);
+  return (pg->ppd_status);
 }
 
 
 /*
  * '_ppdOpen()' - Read a PPD file into memory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ppd_file_t *                           /* O - PPD file record or @code NULL@ if the PPD file could not be opened. */
@@ -413,7 +470,7 @@ _ppdOpen(
   int                  ui_keyword;     /* Is this line a UI keyword? */
   cups_lang_t          *lang;          /* Language data */
   cups_encoding_t      encoding;       /* Encoding of PPD file */
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
   char                 custom_name[PPD_MAX_NAME];
                                        /* CustomFoo attribute name */
@@ -496,8 +553,8 @@ _ppdOpen(
   * Default to "OK" status...
   */
 
-  cg->ppd_status = PPD_OK;
-  cg->ppd_line   = 0;
+  pg->ppd_status = PPD_OK;
+  pg->ppd_line   = 0;
 
  /*
   * Range check input...
@@ -505,7 +562,7 @@ _ppdOpen(
 
   if (fp == NULL)
   {
-    cg->ppd_status = PPD_NULL_FILE;
+    pg->ppd_status = PPD_NULL_FILE;
     return (NULL);
   }
 
@@ -545,7 +602,7 @@ _ppdOpen(
   line.buffer  = NULL;
   line.bufsize = 0;
 
-  mask = ppd_read(fp, &line, keyword, name, text, &string, 0, cg);
+  mask = ppd_read(fp, &line, keyword, name, text, &string, 0, pg);
 
   DEBUG_printf(("2_ppdOpen: mask=%x, keyword=\"%s\"...", mask, keyword));
 
@@ -557,8 +614,8 @@ _ppdOpen(
     * Either this is not a PPD file, or it is not a 4.x PPD file.
     */
 
-    if (cg->ppd_status == PPD_OK)
-      cg->ppd_status = PPD_MISSING_PPDADOBE4;
+    if (pg->ppd_status == PPD_OK)
+      pg->ppd_status = PPD_MISSING_PPDADOBE4;
 
     _cupsStrFree(string);
     ppd_free(line.buffer);
@@ -576,7 +633,7 @@ _ppdOpen(
 
   if ((ppd = calloc(1, sizeof(ppd_file_t))) == NULL)
   {
-    cg->ppd_status = PPD_ALLOC_ERROR;
+    pg->ppd_status = PPD_ALLOC_ERROR;
 
     _cupsStrFree(string);
     ppd_free(line.buffer);
@@ -603,20 +660,20 @@ _ppdOpen(
   encoding   = CUPS_ISO8859_1;
   loc        = localeconv();
 
-  while ((mask = ppd_read(fp, &line, keyword, name, text, &string, 1, cg)) != 0)
+  while ((mask = ppd_read(fp, &line, keyword, name, text, &string, 1, pg)) != 0)
   {
     DEBUG_printf(("2_ppdOpen: mask=%x, keyword=\"%s\", name=\"%s\", "
                   "text=\"%s\", string=%d chars...", mask, keyword, name, text,
                  string ? (int)strlen(string) : 0));
 
     if (strncmp(keyword, "Default", 7) && !string &&
-        cg->ppd_conform != PPD_CONFORM_RELAXED)
+        pg->ppd_conform != PPD_CONFORM_RELAXED)
     {
      /*
       * Need a string value!
       */
 
-      cg->ppd_status = PPD_MISSING_VALUE;
+      pg->ppd_status = PPD_MISSING_VALUE;
 
       goto error;
     }
@@ -707,7 +764,7 @@ _ppdOpen(
 
         if (!group)
        {
-          if ((group = ppd_get_group(ppd, "General", _("General"), cg,
+          if ((group = ppd_get_group(ppd, "General", _("General"), pg,
                                     encoding)) == NULL)
            goto error;
 
@@ -720,7 +777,7 @@ _ppdOpen(
 
        if (option == NULL)
        {
-          cg->ppd_status = PPD_ALLOC_ERROR;
+          pg->ppd_status = PPD_ALLOC_ERROR;
 
           goto error;
        }
@@ -844,7 +901,7 @@ _ppdOpen(
 
       if (!profile)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -878,7 +935,7 @@ _ppdOpen(
 
       if (filter == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -908,7 +965,7 @@ _ppdOpen(
 
       if (tempfonts == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -933,14 +990,14 @@ _ppdOpen(
 
       if ((coption = ppd_get_coption(ppd, keyword + 11)) == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
 
       if ((cparam = ppd_get_cparam(coption, name, text)) == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -953,7 +1010,7 @@ _ppdOpen(
           sscanf(string, "%d%32s%64s%64s", &corder, ctype, cminimum,
                  cmaximum) != 4)
       {
-        cg->ppd_status = PPD_BAD_CUSTOM_PARAM;
+        pg->ppd_status = PPD_BAD_CUSTOM_PARAM;
 
        goto error;
       }
@@ -1010,7 +1067,7 @@ _ppdOpen(
       }
       else
       {
-        cg->ppd_status = PPD_BAD_CUSTOM_PARAM;
+        pg->ppd_status = PPD_BAD_CUSTOM_PARAM;
 
        goto error;
       }
@@ -1050,7 +1107,7 @@ _ppdOpen(
 
       if (!ppd_get_coption(ppd, keyword + 6))
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1071,7 +1128,7 @@ _ppdOpen(
          {
            DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
 
-           cg->ppd_status = PPD_ALLOC_ERROR;
+           pg->ppd_status = PPD_ALLOC_ERROR;
 
            goto error;
          }
@@ -1111,7 +1168,7 @@ _ppdOpen(
            {
              DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
 
-             cg->ppd_status = PPD_ALLOC_ERROR;
+             pg->ppd_status = PPD_ALLOC_ERROR;
 
              goto error;
            }
@@ -1141,7 +1198,7 @@ _ppdOpen(
       ppd->num_emulations = count;
       if ((ppd->emulations = calloc((size_t)count, sizeof(ppd_emul_t))) == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1198,19 +1255,19 @@ _ppdOpen(
           * Found "*JobPatchFile: int: string"...
           */
 
-          cg->ppd_status = PPD_BAD_VALUE;
+          pg->ppd_status = PPD_BAD_VALUE;
 
          goto error;
         }
       }
 
-      if (!name[0] && cg->ppd_conform == PPD_CONFORM_STRICT)
+      if (!name[0] && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
        /*
         * Found "*JobPatchFile: string"...
         */
 
-        cg->ppd_status = PPD_MISSING_OPTION_KEYWORD;
+        pg->ppd_status = PPD_MISSING_OPTION_KEYWORD;
 
        goto error;
       }
@@ -1223,7 +1280,7 @@ _ppdOpen(
                                     strlen(string) + 1);
         if (temp == NULL)
        {
-          cg->ppd_status = PPD_ALLOC_ERROR;
+          pg->ppd_status = PPD_ALLOC_ERROR;
 
          goto error;
        }
@@ -1239,9 +1296,9 @@ _ppdOpen(
       * Don't allow nesting of options...
       */
 
-      if (option && cg->ppd_conform == PPD_CONFORM_STRICT)
+      if (option && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
-        cg->ppd_status = PPD_NESTED_OPEN_UI;
+        pg->ppd_status = PPD_NESTED_OPEN_UI;
 
        goto error;
       }
@@ -1265,7 +1322,7 @@ _ppdOpen(
         option = ppd_get_option(subgroup, name);
       else if (group == NULL)
       {
-       if ((group = ppd_get_group(ppd, "General", _("General"), cg,
+       if ((group = ppd_get_group(ppd, "General", _("General"), pg,
                                   encoding)) == NULL)
          goto error;
 
@@ -1278,7 +1335,7 @@ _ppdOpen(
 
       if (option == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1293,9 +1350,9 @@ _ppdOpen(
         option->ui = PPD_UI_BOOLEAN;
       else if (string && !strcmp(string, "PickOne"))
         option->ui = PPD_UI_PICKONE;
-      else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+      else if (pg->ppd_conform == PPD_CONFORM_STRICT)
       {
-        cg->ppd_status = PPD_BAD_OPEN_UI;
+        pg->ppd_status = PPD_BAD_OPEN_UI;
 
        goto error;
       }
@@ -1355,7 +1412,7 @@ _ppdOpen(
          {
            DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
 
-           cg->ppd_status = PPD_ALLOC_ERROR;
+           pg->ppd_status = PPD_ALLOC_ERROR;
 
            goto error;
          }
@@ -1372,9 +1429,9 @@ _ppdOpen(
       * Don't allow nesting of options...
       */
 
-      if (option && cg->ppd_conform == PPD_CONFORM_STRICT)
+      if (option && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
-        cg->ppd_status = PPD_NESTED_OPEN_UI;
+        pg->ppd_status = PPD_NESTED_OPEN_UI;
 
        goto error;
       }
@@ -1383,7 +1440,7 @@ _ppdOpen(
       * Find the JCL group, and add if needed...
       */
 
-      group = ppd_get_group(ppd, "JCL", _("JCL"), cg, encoding);
+      group = ppd_get_group(ppd, "JCL", _("JCL"), pg, encoding);
 
       if (group == NULL)
        goto error;
@@ -1399,7 +1456,7 @@ _ppdOpen(
 
       if (option == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1416,7 +1473,7 @@ _ppdOpen(
         option->ui = PPD_UI_PICKONE;
       else
       {
-        cg->ppd_status = PPD_BAD_OPEN_UI;
+        pg->ppd_status = PPD_BAD_OPEN_UI;
 
        goto error;
       }
@@ -1458,7 +1515,7 @@ _ppdOpen(
        {
          DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
 
-         cg->ppd_status = PPD_ALLOC_ERROR;
+         pg->ppd_status = PPD_ALLOC_ERROR;
 
          goto error;
        }
@@ -1484,14 +1541,14 @@ _ppdOpen(
 
       if (group != NULL)
       {
-        cg->ppd_status = PPD_NESTED_OPEN_GROUP;
+        pg->ppd_status = PPD_NESTED_OPEN_GROUP;
 
        goto error;
       }
 
       if (!string)
       {
-        cg->ppd_status = PPD_BAD_OPEN_GROUP;
+        pg->ppd_status = PPD_BAD_OPEN_GROUP;
 
        goto error;
       }
@@ -1515,7 +1572,7 @@ _ppdOpen(
       * Find/add the group...
       */
 
-      group = ppd_get_group(ppd, string, sptr, cg, encoding);
+      group = ppd_get_group(ppd, string, sptr, pg, encoding);
 
       if (group == NULL)
        goto error;
@@ -1536,7 +1593,7 @@ _ppdOpen(
 
       if (!sptr || sscanf(sptr, "%40s%40s", name, keyword) != 2)
       {
-        cg->ppd_status = PPD_BAD_ORDER_DEPENDENCY;
+        pg->ppd_status = PPD_BAD_ORDER_DEPENDENCY;
 
        goto error;
       }
@@ -1656,7 +1713,7 @@ _ppdOpen(
     {
       if (!string)
       {
-       cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+       pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
        goto error;
       }
 
@@ -1667,7 +1724,7 @@ _ppdOpen(
 
       if (constraint == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1682,7 +1739,7 @@ _ppdOpen(
       {
         case 0 : /* Error */
        case 1 : /* Error */
-           cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+           pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
            goto error;
 
        case 2 : /* Two options... */
@@ -1690,11 +1747,11 @@ _ppdOpen(
            * Check for broken constraints like "* Option"...
            */
 
-           if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+           if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                (!strcmp(constraint->option1, "*") ||
                 !strcmp(constraint->choice1, "*")))
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
@@ -1705,17 +1762,17 @@ _ppdOpen(
 
            if (constraint->option1[0] == '*')
              _cups_strcpy(constraint->option1, constraint->option1 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
            if (constraint->choice1[0] == '*')
              _cups_strcpy(constraint->option2, constraint->choice1 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
@@ -1728,12 +1785,12 @@ _ppdOpen(
            * Check for broken constraints like "* Option"...
            */
 
-           if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+           if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                (!strcmp(constraint->option1, "*") ||
                 !strcmp(constraint->choice1, "*") ||
                 !strcmp(constraint->option2, "*")))
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
@@ -1744,18 +1801,18 @@ _ppdOpen(
 
            if (constraint->option1[0] == '*')
              _cups_strcpy(constraint->option1, constraint->option1 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
            if (constraint->choice1[0] == '*')
            {
-             if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+             if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                  constraint->option2[0] == '*')
              {
-               cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+               pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
                goto error;
              }
 
@@ -1767,9 +1824,9 @@ _ppdOpen(
            {
              if (constraint->option2[0] == '*')
                _cups_strcpy(constraint->option2, constraint->option2 + 1);
-             else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+             else if (pg->ppd_conform == PPD_CONFORM_STRICT)
              {
-               cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+               pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
                goto error;
              }
 
@@ -1782,43 +1839,43 @@ _ppdOpen(
            * Check for broken constraints like "* Option"...
            */
 
-           if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+           if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                (!strcmp(constraint->option1, "*") ||
                 !strcmp(constraint->choice1, "*") ||
                 !strcmp(constraint->option2, "*") ||
                 !strcmp(constraint->choice2, "*")))
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
            if (constraint->option1[0] == '*')
              _cups_strcpy(constraint->option1, constraint->option1 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
-            if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+            if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                constraint->choice1[0] == '*')
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
            if (constraint->option2[0] == '*')
              _cups_strcpy(constraint->option2, constraint->option2 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
-            if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+            if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                constraint->choice2[0] == '*')
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
            break;
@@ -1842,7 +1899,7 @@ _ppdOpen(
         * Unable to add or find size!
        */
 
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1864,7 +1921,7 @@ _ppdOpen(
         * Unable to add or find size!
        */
 
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1900,7 +1957,7 @@ _ppdOpen(
 
       if ((choice = ppd_add_choice(option, name)) == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1937,9 +1994,9 @@ _ppdOpen(
   * Check for a missing CloseGroup...
   */
 
-  if (group && cg->ppd_conform == PPD_CONFORM_STRICT)
+  if (group && pg->ppd_conform == PPD_CONFORM_STRICT)
   {
-    cg->ppd_status = PPD_MISSING_CLOSE_GROUP;
+    pg->ppd_status = PPD_MISSING_CLOSE_GROUP;
     goto error;
   }
 
@@ -1955,7 +2012,7 @@ _ppdOpen(
                   (unsigned long)cupsFileTell(fp)));
 #endif /* DEBUG */
 
-  if (cg->ppd_status != PPD_OK)
+  if (pg->ppd_status != PPD_OK)
   {
    /*
     * Had an error reading the PPD file, cannot continue!
@@ -1970,7 +2027,7 @@ _ppdOpen(
   * Update the filters array as needed...
   */
 
-  if (!ppd_update_filters(ppd, cg))
+  if (!ppd_update_filters(ppd, pg))
   {
     ppdClose(ppd);
 
@@ -2071,7 +2128,7 @@ ppdOpen(FILE *fp)                 /* I - File to read from */
 /*
  * 'ppdOpen2()' - Read a PPD file into memory.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 ppd_file_t *                           /* O - PPD file record or @code NULL@ if the PPD file could not be opened. */
@@ -2090,7 +2147,7 @@ ppdOpenFd(int fd)                 /* I - File to read from */
 {
   cups_file_t          *fp;            /* CUPS file pointer */
   ppd_file_t           *ppd;           /* PPD file record */
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
 
 
@@ -2098,7 +2155,7 @@ ppdOpenFd(int fd)                 /* I - File to read from */
   * Set the line number to 0...
   */
 
-  cg->ppd_line = 0;
+  pg->ppd_line = 0;
 
  /*
   * Range check input...
@@ -2106,7 +2163,7 @@ ppdOpenFd(int fd)                 /* I - File to read from */
 
   if (fd < 0)
   {
-    cg->ppd_status = PPD_NULL_FILE;
+    pg->ppd_status = PPD_NULL_FILE;
 
     return (NULL);
   }
@@ -2123,7 +2180,7 @@ ppdOpenFd(int fd)                 /* I - File to read from */
   }
   else
   {
-    cg->ppd_status = PPD_FILE_OPEN_ERROR;
+    pg->ppd_status = PPD_FILE_OPEN_ERROR;
     ppd            = NULL;
   }
 
@@ -2141,7 +2198,7 @@ _ppdOpenFile(const char             *filename,    /* I - File to read from */
 {
   cups_file_t          *fp;            /* File pointer */
   ppd_file_t           *ppd;           /* PPD file record */
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
 
 
@@ -2149,7 +2206,7 @@ _ppdOpenFile(const char             *filename,    /* I - File to read from */
   * Set the line number to 0...
   */
 
-  cg->ppd_line = 0;
+  pg->ppd_line = 0;
 
  /*
   * Range check input...
@@ -2157,7 +2214,7 @@ _ppdOpenFile(const char             *filename,    /* I - File to read from */
 
   if (filename == NULL)
   {
-    cg->ppd_status = PPD_NULL_FILE;
+    pg->ppd_status = PPD_NULL_FILE;
 
     return (NULL);
   }
@@ -2174,7 +2231,7 @@ _ppdOpenFile(const char             *filename,    /* I - File to read from */
   }
   else
   {
-    cg->ppd_status = PPD_FILE_OPEN_ERROR;
+    pg->ppd_status = PPD_FILE_OPEN_ERROR;
     ppd            = NULL;
   }
 
@@ -2196,17 +2253,17 @@ ppdOpenFile(const char *filename)       /* I - File to read from */
 /*
  * 'ppdSetConformance()' - Set the conformance level for PPD files.
  *
- * @since CUPS 1.1.20/OS X 10.4@
+ * @since CUPS 1.1.20/macOS 10.4@
  */
 
 void
 ppdSetConformance(ppd_conform_t c)     /* I - Conformance level */
 {
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
 
 
-  cg->ppd_conform = c;
+  pg->ppd_conform = c;
 }
 
 
@@ -2623,7 +2680,7 @@ static ppd_group_t *                      /* O - Named group */
 ppd_get_group(ppd_file_t      *ppd,    /* I - PPD file */
               const char      *name,   /* I - Name of group */
              const char      *text,    /* I - Text for group */
-              _cups_globals_t *cg,     /* I - Global data */
+              _ppd_globals_t  *pg,     /* I - Global data */
              cups_encoding_t encoding) /* I - Encoding of text */
 {
   int          i;                      /* Looping var */
@@ -2631,7 +2688,7 @@ ppd_get_group(ppd_file_t      *ppd,       /* I - PPD file */
 
 
   DEBUG_printf(("7ppd_get_group(ppd=%p, name=\"%s\", text=\"%s\", cg=%p)",
-                ppd, name, text, cg));
+                ppd, name, text, pg));
 
   for (i = ppd->num_groups, group = ppd->groups; i > 0; i --, group ++)
     if (!strcmp(group->name, name))
@@ -2641,9 +2698,9 @@ ppd_get_group(ppd_file_t      *ppd,       /* I - PPD file */
   {
     DEBUG_printf(("8ppd_get_group: Adding group %s...", name));
 
-    if (cg->ppd_conform == PPD_CONFORM_STRICT && strlen(text) >= sizeof(group->text))
+    if (pg->ppd_conform == PPD_CONFORM_STRICT && strlen(text) >= sizeof(group->text))
     {
-      cg->ppd_status = PPD_ILLEGAL_TRANSLATION;
+      pg->ppd_status = PPD_ILLEGAL_TRANSLATION;
 
       return (NULL);
     }
@@ -2655,7 +2712,7 @@ ppd_get_group(ppd_file_t      *ppd,       /* I - PPD file */
 
     if (group == NULL)
     {
-      cg->ppd_status = PPD_ALLOC_ERROR;
+      pg->ppd_status = PPD_ALLOC_ERROR;
 
       return (NULL);
     }
@@ -2717,6 +2774,47 @@ ppd_get_option(ppd_group_t *group,       /* I - Group */
 
 
 /*
+ * 'ppd_globals_alloc()' - Allocate and initialize global data.
+ */
+
+static _ppd_globals_t *                /* O - Pointer to global data */
+ppd_globals_alloc(void)
+{
+  return ((_ppd_globals_t *)calloc(1, sizeof(_ppd_globals_t)));
+}
+
+
+/*
+ * 'ppd_globals_free()' - Free global data.
+ */
+
+#if defined(HAVE_PTHREAD_H) || defined(WIN32)
+static void
+ppd_globals_free(_ppd_globals_t *pg)   /* I - Pointer to global data */
+{
+  free(pg);
+}
+#endif /* HAVE_PTHREAD_H || WIN32 */
+
+
+#ifdef HAVE_PTHREAD_H
+/*
+ * 'ppd_globals_init()' - Initialize per-thread globals...
+ */
+
+static void
+ppd_globals_init(void)
+{
+ /*
+  * Register the global data for this thread...
+  */
+
+  pthread_key_create(&ppd_globals_key, (void (*)(void *))ppd_globals_free);
+}
+#endif /* HAVE_PTHREAD_H */
+
+
+/*
  * 'ppd_hash_option()' - Generate a hash of the option name...
  */
 
@@ -2747,7 +2845,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          char           *text,         /* O - Human-readable text from line */
         char           **string,       /* O - Code/string data */
          int            ignoreblank,   /* I - Ignore blank lines? */
-        _cups_globals_t *cg)           /* I - Global data */
+        _ppd_globals_t *pg)            /* I - Global data */
 {
   int          ch,                     /* Character from file */
                col,                    /* Column in line */
@@ -2769,7 +2867,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
 
   *string   = NULL;
   col       = 0;
-  startline = cg->ppd_line + 1;
+  startline = pg->ppd_line + 1;
 
   if (!line->buffer)
   {
@@ -2808,8 +2906,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          * Don't allow lines longer than 256k!
          */
 
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_LINE_TOO_LONG;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_LINE_TOO_LONG;
 
          return (0);
        }
@@ -2817,8 +2915,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
         temp = realloc(line->buffer, line->bufsize);
        if (!temp)
        {
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_LINE_TOO_LONG;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_LINE_TOO_LONG;
 
          return (0);
        }
@@ -2833,7 +2931,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
        * Line feed or carriage return...
        */
 
-        cg->ppd_line ++;
+        pg->ppd_line ++;
        col = 0;
 
        if (ch == '\r')
@@ -2862,14 +2960,14 @@ ppd_read(cups_file_t    *fp,            /* I - File to read from */
 
        *lineptr++ = '\n';
       }
-      else if (ch < ' ' && ch != '\t' && cg->ppd_conform == PPD_CONFORM_STRICT)
+      else if (ch < ' ' && ch != '\t' && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
        /*
         * Other control characters...
        */
 
-        cg->ppd_line   = startline;
-        cg->ppd_status = PPD_ILLEGAL_CHARACTER;
+        pg->ppd_line   = startline;
+        pg->ppd_status = PPD_ILLEGAL_CHARACTER;
 
         return (0);
       }
@@ -2888,8 +2986,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
           * Line is too long...
          */
 
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_LINE_TOO_LONG;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_LINE_TOO_LONG;
 
           return (0);
        }
@@ -2913,7 +3011,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          break;
        else if (ch == '\r' || ch == '\n')
        {
-         cg->ppd_line ++;
+         pg->ppd_line ++;
          col = 0;
 
          if (ch == '\r')
@@ -2928,14 +3026,14 @@ ppd_read(cups_file_t    *fp,            /* I - File to read from */
              cupsFileGetChar(fp);
          }
        }
-       else if (ch < ' ' && ch != '\t' && cg->ppd_conform == PPD_CONFORM_STRICT)
+       else if (ch < ' ' && ch != '\t' && pg->ppd_conform == PPD_CONFORM_STRICT)
        {
         /*
           * Other control characters...
          */
 
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_ILLEGAL_CHARACTER;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_ILLEGAL_CHARACTER;
 
           return (0);
        }
@@ -2949,8 +3047,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
             * Line is too long...
            */
 
-            cg->ppd_line   = startline;
-            cg->ppd_status = PPD_LINE_TOO_LONG;
+            pg->ppd_line   = startline;
+            pg->ppd_status = PPD_LINE_TOO_LONG;
 
             return (0);
          }
@@ -2970,7 +3068,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          * Line feed or carriage return...
          */
 
-          cg->ppd_line ++;
+          pg->ppd_line ++;
          col = 0;
 
          if (ch == '\r')
@@ -2987,14 +3085,14 @@ ppd_read(cups_file_t    *fp,            /* I - File to read from */
 
          break;
        }
-       else if (ch < ' ' && ch != '\t' && cg->ppd_conform == PPD_CONFORM_STRICT)
+       else if (ch < ' ' && ch != '\t' && pg->ppd_conform == PPD_CONFORM_STRICT)
        {
         /*
           * Other control characters...
          */
 
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_ILLEGAL_CHARACTER;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_ILLEGAL_CHARACTER;
 
           return (0);
        }
@@ -3008,8 +3106,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
             * Line is too long...
            */
 
-            cg->ppd_line   = startline;
-            cg->ppd_status = PPD_LINE_TOO_LONG;
+            pg->ppd_line   = startline;
+            pg->ppd_status = PPD_LINE_TOO_LONG;
 
             return (0);
          }
@@ -3024,7 +3122,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
     DEBUG_printf(("9ppd_read: LINE=\"%s\"", line->buffer));
 
    /*
-    * The dynamically created PPDs for older style OS X
+    * The dynamically created PPDs for older style macOS
     * drivers include a large blob of data inserted as comments
     * at the end of the file.  As an optimization we can stop
     * reading the PPD when we get to the start of this data.
@@ -3053,21 +3151,21 @@ ppd_read(cups_file_t    *fp,            /* I - File to read from */
          !strcmp(line->buffer, "*End")) && /* End of multi-line string */
         ignoreblank)                   /* Ignore these? */
     {
-      startline = cg->ppd_line + 1;
+      startline = pg->ppd_line + 1;
       continue;
     }
 
     if (!strcmp(line->buffer, "*"))    /* (Bad) comment line */
     {
-      if (cg->ppd_conform == PPD_CONFORM_RELAXED)
+      if (pg->ppd_conform == PPD_CONFORM_RELAXED)
       {
-       startline = cg->ppd_line + 1;
+       startline = pg->ppd_line + 1;
        continue;
       }
       else
       {
-        cg->ppd_line   = startline;
-        cg->ppd_status = PPD_ILLEGAL_MAIN_KEYWORD;
+        pg->ppd_line   = startline;
+        pg->ppd_status = PPD_ILLEGAL_MAIN_KEYWORD;
 
         return (0);
       }
@@ -3085,7 +3183,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
 
       if (*lineptr)
       {
-        cg->ppd_status = PPD_MISSING_ASTERISK;
+        pg->ppd_status = PPD_MISSING_ASTERISK;
         return (0);
       }
       else if (ignoreblank)
@@ -3105,7 +3203,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
       if (*lineptr <= ' ' || *lineptr > 126 || *lineptr == '/' ||
           (keyptr - keyword) >= (PPD_MAX_NAME - 1))
       {
-        cg->ppd_status = PPD_ILLEGAL_MAIN_KEYWORD;
+        pg->ppd_status = PPD_ILLEGAL_MAIN_KEYWORD;
        return (0);
       }
 
@@ -3136,7 +3234,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
        if (*lineptr <= ' ' || *lineptr > 126 ||
            (optptr - option) >= (PPD_MAX_NAME - 1))
         {
-          cg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD;
+          pg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD;
          return (0);
        }
 
@@ -3145,9 +3243,9 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
 
       *optptr = '\0';
 
-      if (_cups_isspace(*lineptr) && cg->ppd_conform == PPD_CONFORM_STRICT)
+      if (_cups_isspace(*lineptr) && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
-        cg->ppd_status = PPD_ILLEGAL_WHITESPACE;
+        pg->ppd_status = PPD_ILLEGAL_WHITESPACE;
        return (0);
       }
 
@@ -3171,7 +3269,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          if (((unsigned char)*lineptr < ' ' && *lineptr != '\t') ||
              (textptr - text) >= (PPD_MAX_LINE - 1))
          {
-           cg->ppd_status = PPD_ILLEGAL_TRANSLATION;
+           pg->ppd_status = PPD_ILLEGAL_TRANSLATION;
            return (0);
          }
 
@@ -3181,9 +3279,9 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
        *textptr = '\0';
        textlen  = ppd_decode(text);
 
-       if (textlen > PPD_MAX_TEXT && cg->ppd_conform == PPD_CONFORM_STRICT)
+       if (textlen > PPD_MAX_TEXT && pg->ppd_conform == PPD_CONFORM_STRICT)
        {
-         cg->ppd_status = PPD_ILLEGAL_TRANSLATION;
+         pg->ppd_status = PPD_ILLEGAL_TRANSLATION;
          return (0);
        }
 
@@ -3191,9 +3289,9 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
       }
     }
 
-    if (_cups_isspace(*lineptr) && cg->ppd_conform == PPD_CONFORM_STRICT)
+    if (_cups_isspace(*lineptr) && pg->ppd_conform == PPD_CONFORM_STRICT)
     {
-      cg->ppd_status = PPD_ILLEGAL_WHITESPACE;
+      pg->ppd_status = PPD_ILLEGAL_WHITESPACE;
       return (0);
     }
 
@@ -3245,8 +3343,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
  */
 
 static int                             /* O - 1 on success, 0 on failure */
-ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
-                   _cups_globals_t *cg)        /* I - Global data */
+ppd_update_filters(ppd_file_t     *ppd,        /* I - PPD file */
+                   _ppd_globals_t *pg) /* I - Global data */
 {
   ppd_attr_t   *attr;                  /* Current cupsFilter2 value */
   char         srcsuper[16],           /* Source MIME media type */
@@ -3260,7 +3358,7 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
   int          cost;                   /* Cost of filter */
 
 
-  DEBUG_printf(("4ppd_update_filters(ppd=%p, cg=%p)", ppd, cg));
+  DEBUG_printf(("4ppd_update_filters(ppd=%p, cg=%p)", ppd, pg));
 
  /*
   * See if we have any cupsFilter2 lines...
@@ -3293,7 +3391,7 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
               srcsuper, srctype, dstsuper, dsttype, &cost, program) != 6)
     {
       DEBUG_puts("5ppd_update_filters: Bad cupsFilter2 line.");
-      cg->ppd_status = PPD_BAD_VALUE;
+      pg->ppd_status = PPD_BAD_VALUE;
 
       return (0);
     }
@@ -3337,7 +3435,7 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
     if (filter == NULL)
     {
       DEBUG_puts("5ppd_update_filters: Out of memory.");
-      cg->ppd_status = PPD_ALLOC_ERROR;
+      pg->ppd_status = PPD_ALLOC_ERROR;
 
       return (0);
     }
@@ -3353,8 +3451,3 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
   DEBUG_puts("5ppd_update_filters: Completed OK.");
   return (1);
 }
-
-
-/*
- * End of "$Id: ppd.c 12848 2015-08-26 18:51:57Z msweet $".
- */
index d234a59..eb9ab38 100644 (file)
@@ -1,31 +1,29 @@
 /*
- * "$Id: ppd.h 11056 2013-06-25 14:27:30Z msweet $"
+ * PostScript Printer Description definitions for CUPS.
  *
- *   PostScript Printer Description definitions for CUPS.
+ * THESE APIS ARE DEPRECATED. TO COMPILE WITHOUT WARNINGS ADD
+ * -D_PPD_DEPRECATED="" TO YOUR COMPILE OPTIONS.  THIS HEADER AND THESE
+ * FUNCTIONS WILL BE REMOVED IN A FUTURE RELEASE OF CUPS.
  *
- *   THESE APIS ARE DEPRECATED. TO COMPILE WITHOUT WARNINGS ADD
- *   -D_PPD_DEPRECATED="" TO YOUR COMPILE OPTIONS.  THIS HEADER AND THESE
- *   FUNCTIONS WILL BE REMOVED IN A FUTURE RELEASE OF CUPS.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * PostScript is a trademark of Adobe Systems, Inc.
  *
- *   PostScript is a trademark of Adobe Systems, Inc.
+ * This code and any derivative of it may be used and distributed
+ * freely under the terms of the GNU General Public License when
+ * used with GNU Ghostscript or its derivatives.  Use of the code
+ * (or any derivative of it) with software other than GNU
+ * GhostScript (or its derivatives) is governed by the CUPS license
+ * agreement.
  *
- *   This code and any derivative of it may be used and distributed
- *   freely under the terms of the GNU General Public License when
- *   used with GNU Ghostscript or its derivatives.  Use of the code
- *   (or any derivative of it) with software other than GNU
- *   GhostScript (or its derivatives) is governed by the CUPS license
- *   agreement.
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_PPD_H_
@@ -39,6 +37,7 @@
 #  include "cups.h"
 #  include "array.h"
 #  include "file.h"
+#  include "raster.h"
 
 
 /*
@@ -107,7 +106,7 @@ typedef enum ppd_cs_e                       /**** Colorspaces ****/
   PPD_CS_N                             /* DeviceN colorspace */
 } ppd_cs_t;
 
-typedef enum ppd_status_e              /**** Status Codes @since CUPS 1.1.19/OS X 10.3@ ****/
+typedef enum ppd_status_e              /**** Status Codes @since CUPS 1.1.19/macOS 10.3@ ****/
 {
   PPD_OK = 0,                          /* OK */
   PPD_FILE_OPEN_ERROR,                 /* Unable to open PPD file */
@@ -136,16 +135,16 @@ typedef enum ppd_status_e         /**** Status Codes @since CUPS 1.1.19/OS X 10.3@ ****
   PPD_MAX_STATUS                       /* @private@ */
 } ppd_status_t;
 
-enum ppd_conform_e                     /**** Conformance Levels @since CUPS 1.1.19/OS X 10.3@ ****/
+enum ppd_conform_e                     /**** Conformance Levels @since CUPS 1.1.19/macOS 10.3@ ****/
 {
   PPD_CONFORM_RELAXED,                 /* Relax whitespace and control char */
   PPD_CONFORM_STRICT                   /* Require strict conformance */
 };
 
 typedef enum ppd_conform_e ppd_conform_t;
-                                       /**** Conformance Levels @since CUPS 1.1.19/OS X 10.3@ ****/
+                                       /**** Conformance Levels @since CUPS 1.1.19/macOS 10.3@ ****/
 
-typedef struct ppd_attr_s              /**** PPD Attribute Structure @since CUPS 1.1.19/OS X 10.3@ ****/
+typedef struct ppd_attr_s              /**** PPD Attribute Structure @since CUPS 1.1.19/macOS 10.3@ ****/
 {
   char         name[PPD_MAX_NAME];     /* Name of attribute (cupsXYZ) */
   char         spec[PPD_MAX_NAME];     /* Specifier string, if any */
@@ -186,7 +185,7 @@ typedef struct ppd_group_s          /**** Groups ****/
    ****/
   char         text[PPD_MAX_TEXT - PPD_MAX_NAME];
                                        /* Human-readable group name */
-  char         name[PPD_MAX_NAME];     /* Group name @since CUPS 1.1.18/OS X 10.3@ */
+  char         name[PPD_MAX_NAME];     /* Group name @since CUPS 1.1.18/macOS 10.3@ */
   int          num_options;            /* Number of options */
   ppd_option_t *options;               /* Options */
   int          num_subgroups;          /* Number of sub-groups */
@@ -231,8 +230,8 @@ typedef struct ppd_profile_s                /**** sRGB Color Profiles ****/
   float                matrix[3][3];           /* Transform matrix */
 } ppd_profile_t;
 
-/**** New in CUPS 1.2/OS X 10.5 ****/
-typedef enum ppd_cptype_e              /**** Custom Parameter Type @since CUPS 1.2/OS X 10.5@ ****/
+/**** New in CUPS 1.2/macOS 10.5 ****/
+typedef enum ppd_cptype_e              /**** Custom Parameter Type @since CUPS 1.2/macOS 10.5@ ****/
 {
   PPD_CUSTOM_CURVE,                    /* Curve value for f(x) = x^value */
   PPD_CUSTOM_INT,                      /* Integer number value */
@@ -244,7 +243,7 @@ typedef enum ppd_cptype_e           /**** Custom Parameter Type @since CUPS 1.2/OS X 10.5
   PPD_CUSTOM_STRING                    /* String of characters */
 } ppd_cptype_t;
 
-typedef union ppd_cplimit_u            /**** Custom Parameter Limit @since CUPS 1.2/OS X 10.5@ ****/
+typedef union ppd_cplimit_u            /**** Custom Parameter Limit @since CUPS 1.2/macOS 10.5@ ****/
 {
   float                custom_curve;           /* Gamma value */
   int          custom_int;             /* Integer value */
@@ -256,7 +255,7 @@ typedef union ppd_cplimit_u         /**** Custom Parameter Limit @since CUPS 1.2/OS X 1
   int          custom_string;          /* String length */
 } ppd_cplimit_t;
 
-typedef union ppd_cpvalue_u            /**** Custom Parameter Value @since CUPS 1.2/OS X 10.5@ ****/
+typedef union ppd_cpvalue_u            /**** Custom Parameter Value @since CUPS 1.2/macOS 10.5@ ****/
 {
   float                custom_curve;           /* Gamma value */
   int          custom_int;             /* Integer value */
@@ -268,7 +267,7 @@ typedef union ppd_cpvalue_u         /**** Custom Parameter Value @since CUPS 1.2/OS X 1
   char         *custom_string;         /* String value */
 } ppd_cpvalue_t;
 
-typedef struct ppd_cparam_s            /**** Custom Parameter @since CUPS 1.2/OS X 10.5@ ****/
+typedef struct ppd_cparam_s            /**** Custom Parameter @since CUPS 1.2/macOS 10.5@ ****/
 {
   char         name[PPD_MAX_NAME];     /* Parameter name */
   char         text[PPD_MAX_TEXT];     /* Human-readable text */
@@ -279,7 +278,7 @@ typedef struct ppd_cparam_s         /**** Custom Parameter @since CUPS 1.2/OS X 10.5@ *
   ppd_cpvalue_t        current;                /* Current value */
 } ppd_cparam_t;
 
-typedef struct ppd_coption_s           /**** Custom Option @since CUPS 1.2/OS X 10.5@ ****/
+typedef struct ppd_coption_s           /**** Custom Option @since CUPS 1.2/macOS 10.5@ ****/
 {
   char         keyword[PPD_MAX_NAME];  /* Name of option that is being extended... */
   ppd_option_t *option;                /* Option that is being extended... */
@@ -288,7 +287,7 @@ typedef struct ppd_coption_s                /**** Custom Option @since CUPS 1.2/OS X 10.5@ ***
 } ppd_coption_t;
 
 typedef struct _ppd_cache_s _ppd_cache_t;
-                                       /**** PPD cache and mapping data @since CUPS 1.5/OS X 10.7@ @private@ ****/
+                                       /**** PPD cache and mapping data @since CUPS 1.5/macOS 10.7@ @private@ ****/
 
 typedef struct ppd_file_s              /**** PPD File ****/
 {
@@ -336,25 +335,25 @@ typedef struct ppd_file_s         /**** PPD File ****/
   int          flip_duplex;            /* 1 = Flip page for back sides @deprecated@ */
 
   /**** New in CUPS 1.1.19 ****/
-  char         *protocols;             /* Protocols (BCP, TBCP) string @since CUPS 1.1.19/OS X 10.3@ */
-  char         *pcfilename;            /* PCFileName string @since CUPS 1.1.19/OS X 10.3@ */
-  int          num_attrs;              /* Number of attributes @since CUPS 1.1.19/OS X 10.3@ @private@ */
-  int          cur_attr;               /* Current attribute @since CUPS 1.1.19/OS X 10.3@ @private@ */
-  ppd_attr_t   **attrs;                /* Attributes @since CUPS 1.1.19/OS X 10.3@ @private@ */
+  char         *protocols;             /* Protocols (BCP, TBCP) string @since CUPS 1.1.19/macOS 10.3@ */
+  char         *pcfilename;            /* PCFileName string @since CUPS 1.1.19/macOS 10.3@ */
+  int          num_attrs;              /* Number of attributes @since CUPS 1.1.19/macOS 10.3@ @private@ */
+  int          cur_attr;               /* Current attribute @since CUPS 1.1.19/macOS 10.3@ @private@ */
+  ppd_attr_t   **attrs;                /* Attributes @since CUPS 1.1.19/macOS 10.3@ @private@ */
 
-  /**** New in CUPS 1.2/OS X 10.5 ****/
-  cups_array_t *sorted_attrs;          /* Attribute lookup array @since CUPS 1.2/OS X 10.5@ @private@ */
-  cups_array_t *options;               /* Option lookup array @since CUPS 1.2/OS X 10.5@ @private@ */
-  cups_array_t *coptions;              /* Custom options array @since CUPS 1.2/OS X 10.5@ @private@ */
+  /**** New in CUPS 1.2/macOS 10.5 ****/
+  cups_array_t *sorted_attrs;          /* Attribute lookup array @since CUPS 1.2/macOS 10.5@ @private@ */
+  cups_array_t *options;               /* Option lookup array @since CUPS 1.2/macOS 10.5@ @private@ */
+  cups_array_t *coptions;              /* Custom options array @since CUPS 1.2/macOS 10.5@ @private@ */
 
-  /**** New in CUPS 1.3/OS X 10.5 ****/
-  cups_array_t *marked;                /* Marked choices @since CUPS 1.3/OS X 10.5@ @private@ */
+  /**** New in CUPS 1.3/macOS 10.5 ****/
+  cups_array_t *marked;                /* Marked choices @since CUPS 1.3/macOS 10.5@ @private@ */
 
-  /**** New in CUPS 1.4/OS X 10.6 ****/
-  cups_array_t *cups_uiconstraints;    /* cupsUIConstraints @since CUPS 1.4/OS X 10.6@ @private@ */
+  /**** New in CUPS 1.4/macOS 10.6 ****/
+  cups_array_t *cups_uiconstraints;    /* cupsUIConstraints @since CUPS 1.4/macOS 10.6@ @private@ */
 
   /**** New in CUPS 1.5 ****/
-  _ppd_cache_t *cache;                 /* PPD cache and mapping data @since CUPS 1.5/OS X 10.7@ @private@ */
+  _ppd_cache_t *cache;                 /* PPD cache and mapping data @since CUPS 1.5/macOS 10.7@ @private@ */
 } ppd_file_t;
 
 
@@ -362,8 +361,12 @@ typedef struct ppd_file_s          /**** PPD File ****/
  * Prototypes...
  */
 
-extern int             cupsMarkOptions(ppd_file_t *ppd, int num_options,
-                                       cups_option_t *options) _PPD_DEPRECATED;
+extern const char      *cupsGetPPD(const char *name) _PPD_DEPRECATED;
+extern const char      *cupsGetPPD2(http_t *http, const char *name) _PPD_DEPRECATED;
+extern http_status_t   cupsGetPPD3(http_t *http, const char *name, time_t *modtime, char *buffer, size_t bufsize) _PPD_DEPRECATED;
+extern char            *cupsGetServerPPD(http_t *http, const char *name) _PPD_DEPRECATED;
+extern int             cupsMarkOptions(ppd_file_t *ppd, int num_options, cups_option_t *options) _PPD_DEPRECATED;
+
 extern void            ppdClose(ppd_file_t *ppd) _PPD_DEPRECATED;
 extern int             ppdCollect(ppd_file_t *ppd, ppd_section_t section,
                                   ppd_choice_t  ***choices) _PPD_DEPRECATED;
@@ -409,6 +412,11 @@ extern ppd_status_t        ppdLastError(int *line) _PPD_DEPRECATED;
 extern void            ppdSetConformance(ppd_conform_t c) _PPD_DEPRECATED;
 
 /**** New in CUPS 1.2 ****/
+extern int             cupsRasterInterpretPPD(cups_page_header2_t *h,
+                                              ppd_file_t *ppd,
+                                              int num_options,
+                                              cups_option_t *options,
+                                              cups_interpret_cb_t func) _PPD_DEPRECATED;
 extern int             ppdCollect2(ppd_file_t *ppd, ppd_section_t section,
                                    float min_order, ppd_choice_t  ***choices)
                                    _PPD_DEPRECATED;
@@ -432,14 +440,14 @@ extern ppd_option_t       *ppdNextOption(ppd_file_t *ppd) _PPD_DEPRECATED;
 extern int             ppdLocalize(ppd_file_t *ppd) _PPD_DEPRECATED;
 extern ppd_file_t      *ppdOpen2(cups_file_t *fp) _PPD_DEPRECATED;
 
-/**** New in CUPS 1.3/OS X 10.5 ****/
+/**** New in CUPS 1.3/macOS 10.5 ****/
 extern const char      *ppdLocalizeIPPReason(ppd_file_t *ppd,
                                              const char *reason,
                                              const char *scheme,
                                              char *buffer,
                                              size_t bufsize) _PPD_DEPRECATED;
 
-/**** New in CUPS 1.4/OS X 10.6 ****/
+/**** New in CUPS 1.4/macOS 10.6 ****/
 extern int             cupsGetConflicts(ppd_file_t *ppd, const char *option,
                                         const char *choice,
                                         cups_option_t **options)
@@ -472,7 +480,3 @@ extern int          ppdPageSizeLimits(ppd_file_t *ppd,
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_PPD_H_ */
-
-/*
- * End of "$Id: ppd.h 11056 2013-06-25 14:27:30Z msweet $".
- */
index f1e2b0f..6a20687 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: pwg-media.c 11881 2014-05-16 20:59:22Z msweet $"
- *
  * PWG media name API implementation for CUPS.
  *
- * Copyright 2009-2014 by Apple Inc.
+ * Copyright 2009-2016 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -235,7 +233,10 @@ static pwg_media_t const cups_pwg_media[] =
   _PWG_MEDIA_MM("om_folio_210x330mm", "folio", "Folio", 210, 330),
   _PWG_MEDIA_MM("om_folio-sp_215x315mm", NULL, "FolioSP", 215, 315),
   _PWG_MEDIA_MM("om_invite_220x220mm", NULL, "EnvInvite", 220, 220),
-  _PWG_MEDIA_MM("om_small-photo_100x200mm", NULL, "om_wide-photo", 100, 200)
+  _PWG_MEDIA_MM("om_small-photo_100x200mm", NULL, "om_wide-photo", 100, 200),
+
+  /* Disc Sizes */
+  _PWG_MEDIA_MM("disc_standard_40x118mm", NULL, NULL, 118, 118)
 };
 
 
@@ -257,7 +258,7 @@ static pwg_media_t const cups_pwg_media[] =
  * units string is @code NULL@, otherwise inches ("in") or millimeters ("mm")
  * are used.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -279,10 +280,7 @@ pwgFormatSizeName(char       *keyword,     /* I - Keyword buffer */
   * Range check input...
   */
 
-  DEBUG_printf(("pwgFormatSize(keyword=%p, keysize=" CUPS_LLFMT
-                ", prefix=\"%s\", name=\"%s\", width=%d, length=%d, "
-                "units=\"%s\")", keyword, CUPS_LLCAST keysize, prefix, name,
-                width, length, units));
+  DEBUG_printf(("pwgFormatSize(keyword=%p, keysize=" CUPS_LLFMT ", prefix=\"%s\", name=\"%s\", width=%d, length=%d, units=\"%s\")", (void *)keyword, CUPS_LLCAST keysize, prefix, name, width, length, units));
 
   if (keyword)
     *keyword = '\0';
@@ -316,6 +314,8 @@ pwgFormatSizeName(char       *keyword,      /* I - Keyword buffer */
   else
     name = usize;
 
+  if (prefix && !strcmp(prefix, "disc"))
+    width = 4000;                      /* Disc sizes use hardcoded 40mm inner diameter */
 
   if (!units)
   {
@@ -378,7 +378,7 @@ pwgFormatSizeName(char       *keyword,      /* I - Keyword buffer */
   return (1);
 }
 
-/* For OS X 10.8 and earlier... */
+/* For macOS 10.8 and earlier... */
 void _pwgGenerateSize(char *keyword, size_t keysize, const char *prefix,
                      const char *name, int width, int length)
 { pwgFormatSizeName(keyword, keysize, prefix, name, width, length, NULL); }
@@ -396,7 +396,7 @@ void _pwgGenerateSize(char *keyword, size_t keysize, const char *prefix,
  * member attribute was specified in the "media-col" Job Template attribute,
  * otherwise it is initialized to 0.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 int                                    /* O - 1 if size was initialized, 0 otherwise */
@@ -560,7 +560,7 @@ pwgInitSize(pwg_size_t *size,               /* I - Size to initialize */
   return (1);
 }
 
-/* For OS X 10.8 and earlier */
+/* For macOS 10.8 and earlier */
 int _pwgInitSize(pwg_size_t *size, ipp_t *job, int *margins_set)
 { return (pwgInitSize(size, job, margins_set)); }
 
@@ -571,7 +571,7 @@ int _pwgInitSize(pwg_size_t *size, ipp_t *job, int *margins_set)
  * The "name" argument specifies the legacy ISO media size name, for example
  * "iso-a4" or "na-letter".
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 pwg_media_t *                          /* O - Matching size or NULL */
@@ -616,10 +616,6 @@ pwgMediaForLegacy(const char *legacy)      /* I - Legacy size name */
   return ((pwg_media_t *)cupsArrayFind(cg->leg_size_lut, &key));
 }
 
-/* For OS X 10.8 and earlier */
-pwg_media_t *_pwgMediaForLegacy(const char *legacy)
-{ return (pwgMediaForLegacy(legacy)); }
-
 
 /*
  * 'pwgMediaForPPD()' - Find a PWG media size by Adobe PPD name.
@@ -633,7 +629,7 @@ pwg_media_t *_pwgMediaForLegacy(const char *legacy)
  * thread.  Custom names can be of the form "Custom.WIDTHxLENGTH[units]" or
  * "WIDTHxLENGTH[units]".
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 pwg_media_t *                          /* O - Matching size or NULL */
@@ -790,10 +786,6 @@ pwgMediaForPPD(const char *ppd)            /* I - PPD size name */
   return (size);
 }
 
-/* For OS X 10.8 and earlier */
-pwg_media_t *_pwgMediaForPPD(const char *ppd)
-{ return (pwgMediaForPPD(ppd)); }
-
 
 /*
  * 'pwgMediaForPWG()' - Find a PWG media size by 5101.1 self-describing name.
@@ -805,7 +797,7 @@ pwg_media_t *_pwgMediaForPPD(const char *ppd)
  * thread-local storage and is overwritten by each call to the function in the
  * thread.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 pwg_media_t *                          /* O - Matching size or NULL */
@@ -877,6 +869,9 @@ pwgMediaForPWG(const char *pwg)             /* I - PWG size name */
 
       if (ptr)
       {
+        if (!strncmp(pwg, "disc_", 5))
+          w = l;                       /* Make the media size OUTERxOUTER */
+
         size         = &(cg->pwg_media);
         size->width  = w;
         size->length = l;
@@ -890,10 +885,6 @@ pwgMediaForPWG(const char *pwg)            /* I - PWG size name */
   return (size);
 }
 
-/* For OS X 10.8 and earlier */
-pwg_media_t *_pwgMediaForPWG(const char *pwg)
-{ return (pwgMediaForPWG(pwg)); }
-
 
 /*
  * 'pwgMediaForSize()' - Get the PWG media size for the given dimensions.
@@ -905,7 +896,7 @@ pwg_media_t *_pwgMediaForPWG(const char *pwg)
  * thread-local storage and is overwritten by each call to the function in the
  * thread.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 pwg_media_t *                          /* O - PWG media name */
@@ -991,10 +982,6 @@ _pwgMediaNearSize(int width,               /* I - Width in hundredths of millimeters *
   return (&(cg->pwg_media));
 }
 
-/* For OS X 10.8 and earlier */
-pwg_media_t *_pwgMediaForSize(int width, int length)
-{ return (pwgMediaForSize(width, length)); }
-
 
 /*
  * '_pwgMediaTable()' - Return the internal media size table.
@@ -1177,8 +1164,3 @@ pwg_scan_measurement(
 
   return (value * numer / denom + fractional * numer / denom / divisor);
 }
-
-
-/*
- * End of "$Id: pwg-media.c 11881 2014-05-16 20:59:22Z msweet $".
- */
index 3e086db..25fb667 100644 (file)
@@ -1,17 +1,15 @@
 /*
- * "$Id: pwg-private.h 11826 2014-04-23 00:38:21Z msweet $"
+ * Private PWG media API definitions for CUPS.
  *
- *   Private PWG media API definitions for CUPS.
+ * Copyright 2009-2016 by Apple Inc.
  *
- *   Copyright 2009-2013 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_PWG_PRIVATE_H_
@@ -35,17 +33,6 @@ extern "C" {
 
 
 /*
- * Deprecated stuff for prior users of the private PWG media API...
- */
-
-#  ifndef _CUPS_NO_DEPRECATED
-typedef struct pwg_map_s _pwg_map_t;
-typedef struct pwg_media_s _pwg_media_t;
-typedef struct pwg_size_s _pwg_size_t;
-#  endif /* _CUPS_NO_DEPRECATED */
-
-
-/*
  * Functions...
  */
 
@@ -57,14 +44,6 @@ extern void          _pwgGenerateSize(char *keyword, size_t keysize,
 extern int             _pwgInitSize(pwg_size_t *size, ipp_t *job,
                                     int *margins_set)
                                     _CUPS_INTERNAL_MSG("Use pwgInitSize instead.");
-extern pwg_media_t     *_pwgMediaForLegacy(const char *legacy)
-                           _CUPS_INTERNAL_MSG("Use pwgMediaForLegacy instead.");
-extern pwg_media_t     *_pwgMediaForPPD(const char *ppd)
-                           _CUPS_INTERNAL_MSG("Use pwgMediaForPPD instead.");
-extern pwg_media_t     *_pwgMediaForPWG(const char *pwg)
-                           _CUPS_INTERNAL_MSG("Use pwgMediaForPWG instead.");
-extern pwg_media_t     *_pwgMediaForSize(int width, int length)
-                           _CUPS_INTERNAL_MSG("Use pwgMediaForSize instead.");
 extern const pwg_media_t *_pwgMediaTable(size_t *num_media);
 extern pwg_media_t *_pwgMediaNearSize(int width, int length, int epsilon);
 
@@ -73,7 +52,3 @@ extern pwg_media_t *_pwgMediaNearSize(int width, int length, int epsilon);
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_PWG_PRIVATE_H_ */
-
-/*
- * End of "$Id: pwg-private.h 11826 2014-04-23 00:38:21Z msweet $".
- */
index 43e0e1c..f663246 100644 (file)
@@ -1,17 +1,15 @@
 /*
- * "$Id: pwg.h 4274 2013-04-09 20:10:23Z msweet $"
+ * PWG media API definitions for CUPS.
  *
- *   PWG media API definitions for CUPS.
+ * Copyright 2009-2013 by Apple Inc.
  *
- *   Copyright 2009-2013 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_PWG_H_
@@ -88,7 +86,3 @@ extern pwg_media_t    *pwgMediaForSize(int width, int length) _CUPS_API_1_7;
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_PWG_H_ */
-
-/*
- * End of "$Id: pwg.h 4274 2013-04-09 20:10:23Z msweet $".
- */
index ebd5d72..7656b27 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: raster-private.h 3794 2012-04-23 22:44:16Z msweet $"
+ * Private image library definitions for CUPS.
  *
- *   Private image library definitions for CUPS.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1993-2006 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1993-2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_RASTER_PRIVATE_H_
@@ -60,7 +58,3 @@ extern void           _cupsRasterAddError(const char *f, ...)
 extern void            _cupsRasterClearError(void);
 
 #endif /* !_CUPS_RASTER_PRIVATE_H_ */
-
-/*
- * End of "$Id: raster-private.h 3794 2012-04-23 22:44:16Z msweet $".
- */
index dde34f2..43a9d15 100644 (file)
@@ -1,20 +1,18 @@
 /*
- * "$Id: raster.h 4027 2012-11-16 01:00:05Z msweet $"
+ * Raster file definitions for CUPS.
  *
- *   Raster file definitions for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * This file is part of the CUPS Imaging library.
  *
- *   This file is part of the CUPS Imaging library.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_RASTER_H_
@@ -25,7 +23,6 @@
  */
 
 #  include "cups.h"
-#  include "ppd.h"
 
 
 #  ifdef __cplusplus
@@ -57,7 +54,6 @@ extern "C" {
 
 #  define CUPS_RASTER_SYNC_PWG CUPS_RASTER_SYNCv2
 
-
 /*
  * The following definition can be used to determine if the
  * colorimetric colorspaces (CIEXYZ, CIELAB, and ICCn) are
@@ -79,6 +75,25 @@ extern "C" {
 
 #  define CUPS_RASTER_HAVE_PWGRASTER 1
 
+/*
+ * The following PWG 5102.4 definitions specify indices into the
+ * cupsInteger[] array in the raster header.
+ */
+
+#  define CUPS_RASTER_PWG_TotalPageCount       0
+#  define CUPS_RASTER_PWG_CrossFeedTransform   1
+#  define CUPS_RASTER_PWG_FeedTransform                2
+#  define CUPS_RASTER_PWG_ImageBoxLeft         3
+#  define CUPS_RASTER_PWG_ImageBoxTop          4
+#  define CUPS_RASTER_PWG_ImageBoxRight                5
+#  define CUPS_RASTER_PWG_ImageBoxBottom       6
+#  define CUPS_RASTER_PWG_AlternatePrimary     7
+#  define CUPS_RASTER_PWG_PrintQuality         8
+#  define CUPS_RASTER_PWG_VendorIdentifier     14
+#  define CUPS_RASTER_PWG_VendorLength         15
+
+
+
 
 /*
  * Types...
@@ -117,28 +132,28 @@ typedef enum cups_cspace_e                /**** cupsColorSpace attribute values ****/
   CUPS_CSPACE_GOLD = 13,               /* Gold foil @deprecated@ */
   CUPS_CSPACE_SILVER = 14,             /* Silver foil @deprecated@ */
 
-  CUPS_CSPACE_CIEXYZ = 15,             /* CIE XYZ @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_CIELab = 16,             /* CIE Lab @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_RGBW = 17,               /* Red, green, blue, white (DeviceRGB, sRGB by default) @since CUPS 1.2/OS X 10.5@ */
+  CUPS_CSPACE_CIEXYZ = 15,             /* CIE XYZ @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_CIELab = 16,             /* CIE Lab @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_RGBW = 17,               /* Red, green, blue, white (DeviceRGB, sRGB by default) @since CUPS 1.2/macOS 10.5@ */
   CUPS_CSPACE_SW = 18,                 /* Luminance (gamma 2.2) @since CUPS 1.4.5@ */
   CUPS_CSPACE_SRGB = 19,               /* Red, green, blue (sRGB) @since CUPS 1.4.5@ */
   CUPS_CSPACE_ADOBERGB = 20,           /* Red, green, blue (Adobe RGB) @since CUPS 1.4.5@ */
 
-  CUPS_CSPACE_ICC1 = 32,               /* ICC-based, 1 color @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICC2 = 33,               /* ICC-based, 2 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICC3 = 34,               /* ICC-based, 3 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICC4 = 35,               /* ICC-based, 4 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICC5 = 36,               /* ICC-based, 5 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICC6 = 37,               /* ICC-based, 6 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICC7 = 38,               /* ICC-based, 7 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICC8 = 39,               /* ICC-based, 8 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICC9 = 40,               /* ICC-based, 9 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICCA = 41,               /* ICC-based, 10 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICCB = 42,               /* ICC-based, 11 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICCC = 43,               /* ICC-based, 12 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICCD = 44,               /* ICC-based, 13 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICCE = 45,               /* ICC-based, 14 colors @since CUPS 1.1.19/OS X 10.3@ */
-  CUPS_CSPACE_ICCF = 46,               /* ICC-based, 15 colors @since CUPS 1.1.19/OS X 10.3@ */
+  CUPS_CSPACE_ICC1 = 32,               /* ICC-based, 1 color @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICC2 = 33,               /* ICC-based, 2 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICC3 = 34,               /* ICC-based, 3 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICC4 = 35,               /* ICC-based, 4 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICC5 = 36,               /* ICC-based, 5 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICC6 = 37,               /* ICC-based, 6 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICC7 = 38,               /* ICC-based, 7 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICC8 = 39,               /* ICC-based, 8 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICC9 = 40,               /* ICC-based, 9 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICCA = 41,               /* ICC-based, 10 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICCB = 42,               /* ICC-based, 11 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICCC = 43,               /* ICC-based, 12 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICCD = 44,               /* ICC-based, 13 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICCE = 45,               /* ICC-based, 14 colors @since CUPS 1.1.19/macOS 10.3@ */
+  CUPS_CSPACE_ICCF = 46,               /* ICC-based, 15 colors @since CUPS 1.1.19/macOS 10.3@ */
 
   CUPS_CSPACE_DEVICE1 = 48,            /* DeviceN, 1 color @since CUPS 1.4.5@ */
   CUPS_CSPACE_DEVICE2 = 49,            /* DeviceN, 2 colors @since CUPS 1.4.5@ */
@@ -186,8 +201,8 @@ enum cups_mode_e                    /**** cupsRasterOpen modes ****/
 {
   CUPS_RASTER_READ = 0,                        /* Open stream for reading */
   CUPS_RASTER_WRITE = 1,               /* Open stream for writing */
-  CUPS_RASTER_WRITE_COMPRESSED = 2,    /* Open stream for compressed writing @since CUPS 1.3/OS X 10.5@ */
-  CUPS_RASTER_WRITE_PWG = 3            /* Open stream for compressed writing in PWG mode @since CUPS 1.5/OS X 10.7@ */
+  CUPS_RASTER_WRITE_COMPRESSED = 2,    /* Open stream for compressed writing @since CUPS 1.3/macOS 10.5@ */
+  CUPS_RASTER_WRITE_PWG = 3            /* Open stream for compressed writing in PWG mode @since CUPS 1.5/macOS 10.7@ */
 };
 
 typedef enum cups_mode_e cups_mode_t;  /**** cupsRasterOpen modes ****/
@@ -266,7 +281,7 @@ typedef struct cups_page_header_s   /**** Version 1 page header @deprecated@ ****/
 } cups_page_header_t;
 
 /**** New in CUPS 1.2 ****/
-typedef struct cups_page_header2_s     /**** Version 2 page header @since CUPS 1.2/OS X 10.5@ ****/
+typedef struct cups_page_header2_s     /**** Version 2 page header @since CUPS 1.2/macOS 10.5@ ****/
 {
   /**** Standard Page Device Dictionary String Values ****/
   char         MediaClass[64];         /* MediaClass string */
@@ -314,20 +329,20 @@ typedef struct cups_page_header2_s        /**** Version 2 page header @since CUPS 1.2/O
   unsigned     cupsRowStep;            /* Spacing between lines */
 
   /**** Version 2 Dictionary Values ****/
-  unsigned     cupsNumColors;          /* Number of color compoents @since CUPS 1.2/OS X 10.5@ */
+  unsigned     cupsNumColors;          /* Number of color compoents @since CUPS 1.2/macOS 10.5@ */
   float                cupsBorderlessScalingFactor;
-                                       /* Scaling that was applied to page data @since CUPS 1.2/OS X 10.5@ */
+                                       /* Scaling that was applied to page data @since CUPS 1.2/macOS 10.5@ */
   float                cupsPageSize[2];        /* Floating point PageSize (scaling *
-                                        * factor not applied) @since CUPS 1.2/OS X 10.5@ */
+                                        * factor not applied) @since CUPS 1.2/macOS 10.5@ */
   float                cupsImagingBBox[4];     /* Floating point ImagingBoundingBox
                                         * (scaling factor not applied, left,
-                                        * bottom, right, top) @since CUPS 1.2/OS X 10.5@ */
-  unsigned     cupsInteger[16];        /* User-defined integer values @since CUPS 1.2/OS X 10.5@ */
-  float                cupsReal[16];           /* User-defined floating-point values @since CUPS 1.2/OS X 10.5@ */
-  char         cupsString[16][64];     /* User-defined string values @since CUPS 1.2/OS X 10.5@ */
-  char         cupsMarkerType[64];     /* Ink/toner type @since CUPS 1.2/OS X 10.5@ */
-  char         cupsRenderingIntent[64];/* Color rendering intent @since CUPS 1.2/OS X 10.5@ */
-  char         cupsPageSizeName[64];   /* PageSize name @since CUPS 1.2/OS X 10.5@ */
+                                        * bottom, right, top) @since CUPS 1.2/macOS 10.5@ */
+  unsigned     cupsInteger[16];        /* User-defined integer values @since CUPS 1.2/macOS 10.5@ */
+  float                cupsReal[16];           /* User-defined floating-point values @since CUPS 1.2/macOS 10.5@ */
+  char         cupsString[16][64];     /* User-defined string values @since CUPS 1.2/macOS 10.5@ */
+  char         cupsMarkerType[64];     /* Ink/toner type @since CUPS 1.2/macOS 10.5@ */
+  char         cupsRenderingIntent[64];/* Color rendering intent @since CUPS 1.2/macOS 10.5@ */
+  char         cupsPageSizeName[64];   /* PageSize name @since CUPS 1.2/macOS 10.5@ */
 } cups_page_header2_t;
 
 typedef struct _cups_raster_s cups_raster_t;
@@ -377,11 +392,6 @@ extern unsigned            cupsRasterWritePixels(cups_raster_t *r,
                                              unsigned char *p, unsigned len);
 
 /**** New in CUPS 1.2 ****/
-extern int             cupsRasterInterpretPPD(cups_page_header2_t *h,
-                                              ppd_file_t *ppd,
-                                              int num_options,
-                                              cups_option_t *options,
-                                              cups_interpret_cb_t func) _CUPS_API_1_2;
 extern unsigned                cupsRasterReadHeader2(cups_raster_t *r,
                                              cups_page_header2_t *h) _CUPS_API_1_2;
 extern unsigned                cupsRasterWriteHeader2(cups_raster_t *r,
@@ -394,12 +404,11 @@ extern const char *cupsRasterErrorString(void) _CUPS_API_1_3;
 extern cups_raster_t   *cupsRasterOpenIO(cups_raster_iocb_t iocb, void *ctx,
                                          cups_mode_t mode);
 
+/**** New in CUPS 2.2/macOS 10.12 ****/
+extern int             cupsRasterInitPWGHeader(cups_page_header2_t *h, pwg_media_t *media, const char *type, int xdpi, int ydpi, const char *sides, const char *sheet_back) _CUPS_API_2_2;
+
 #  ifdef __cplusplus
 }
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_RASTER_H_ */
-
-/*
- * End of "$Id: raster.h 4027 2012-11-16 01:00:05Z msweet $".
- */
index 8f51317..8de44f7 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: request.c 11866 2014-05-09 20:20:16Z msweet $"
- *
  * IPP utilities for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -53,10 +51,7 @@ cupsDoFileRequest(http_t     *http,  /* I - Connection to server or @code CUPS_HT
   int          infile;                 /* Input file */
 
 
-  DEBUG_printf(("cupsDoFileRequest(http=%p, request=%p(%s), resource=\"%s\", "
-                "filename=\"%s\")", http, request,
-               request ? ippOpString(request->request.op.operation_id) : "?",
-               resource, filename));
+  DEBUG_printf(("cupsDoFileRequest(http=%p, request=%p(%s), resource=\"%s\", filename=\"%s\")", (void *)http, (void *)request, request ? ippOpString(request->request.op.operation_id) : "?", resource, filename));
 
   if (filename)
   {
@@ -99,7 +94,7 @@ cupsDoFileRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HT
  * If "outfile" is a valid file descriptor, @code cupsDoIORequest@ copies
  * all of the data after the IPP response message to the file.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 ipp_t *                                        /* O - Response data */
@@ -117,10 +112,7 @@ cupsDoIORequest(http_t     *http,  /* I - Connection to server or @code CUPS_HTTP
   char         buffer[32768];          /* Output buffer */
 
 
-  DEBUG_printf(("cupsDoIORequest(http=%p, request=%p(%s), resource=\"%s\", "
-                "infile=%d, outfile=%d)", http, request,
-               request ? ippOpString(request->request.op.operation_id) : "?",
-               resource, infile, outfile));
+  DEBUG_printf(("cupsDoIORequest(http=%p, request=%p(%s), resource=\"%s\", infile=%d, outfile=%d)", (void *)http, (void *)request, request ? ippOpString(request->request.op.operation_id) : "?", resource, infile, outfile));
 
  /*
   * Range check input...
@@ -304,10 +296,7 @@ cupsDoRequest(http_t     *http,            /* I - Connection to server or @code CUPS_HTTP_
               ipp_t      *request,     /* I - IPP request */
               const char *resource)    /* I - HTTP resource for POST */
 {
-  DEBUG_printf(("cupsDoRequest(http=%p, request=%p(%s), resource=\"%s\")",
-                http, request,
-               request ? ippOpString(request->request.op.operation_id) : "?",
-               resource));
+  DEBUG_printf(("cupsDoRequest(http=%p, request=%p(%s), resource=\"%s\")", (void *)http, (void *)request, request ? ippOpString(request->request.op.operation_id) : "?", resource));
 
   return (cupsDoIORequest(http, request, resource, -1, -1));
 }
@@ -321,7 +310,7 @@ cupsDoRequest(http_t     *http,             /* I - Connection to server or @code CUPS_HTTP_
  * @link cupsReadResponseData@ after getting a successful response,
  * otherwise call @link httpFlush@ to complete the response processing.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 ipp_t *                                        /* O - Response or @code NULL@ on HTTP error */
@@ -333,7 +322,7 @@ cupsGetResponse(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
   ipp_t                *response = NULL;       /* IPP response */
 
 
-  DEBUG_printf(("cupsGetResponse(http=%p, resource=\"%s\")", http, resource));
+  DEBUG_printf(("cupsGetResponse(http=%p, resource=\"%s\")", (void *)http, resource));
   DEBUG_printf(("1cupsGetResponse: http->state=%d", http ? http->state : HTTP_STATE_ERROR));
 
  /*
@@ -497,7 +486,7 @@ cupsLastError(void)
  * 'cupsLastErrorString()' - Return the last IPP status-message received on the
  *                           current thread.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 const char *                           /* O - status-message text from last request */
@@ -544,7 +533,7 @@ _cupsNextDelay(int current,         /* I  - Current delay value or 0 */
  * files from @code CUPS_GET_PPD@ and @code CUPS_GET_DOCUMENT@ requests,
  * respectively.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 ssize_t                                        /* O - Bytes read, 0 on EOF, -1 on error */
@@ -557,8 +546,7 @@ cupsReadResponseData(
   * Get the default connection as needed...
   */
 
-  DEBUG_printf(("cupsReadResponseData(http=%p, buffer=%p, "
-                "length=" CUPS_LLFMT ")", http, buffer, CUPS_LLCAST length));
+  DEBUG_printf(("cupsReadResponseData(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
 
   if (!http)
   {
@@ -595,7 +583,7 @@ cupsReadResponseData(
  * Note: Unlike @link cupsDoFileRequest@, @link cupsDoIORequest@, and
  * @link cupsDoRequest@, the request is NOT freed with @link ippDelete@.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 http_status_t                          /* O - Initial HTTP status */
@@ -610,10 +598,7 @@ cupsSendRequest(http_t     *http,  /* I - Connection to server or @code CUPS_HTTP
   http_status_t                expect;         /* Expect: header to use */
 
 
-  DEBUG_printf(("cupsSendRequest(http=%p, request=%p(%s), resource=\"%s\", "
-                "length=" CUPS_LLFMT ")", http, request,
-               request ? ippOpString(request->request.op.operation_id) : "?",
-               resource, CUPS_LLCAST length));
+  DEBUG_printf(("cupsSendRequest(http=%p, request=%p(%s), resource=\"%s\", length=" CUPS_LLFMT ")", (void *)http, (void *)request, request ? ippOpString(request->request.op.operation_id) : "?", resource, CUPS_LLCAST length));
 
  /*
   * Range check input...
@@ -904,7 +889,7 @@ cupsSendRequest(http_t     *http,   /* I - Connection to server or @code CUPS_HTTP
  * This function is used after @link cupsSendRequest@ to provide a PPD and
  * after @link cupsStartDocument@ to provide a document file.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 http_status_t                          /* O - @code HTTP_STATUS_CONTINUE@ if OK or HTTP status on error */
@@ -920,8 +905,7 @@ cupsWriteRequestData(
   * Get the default connection as needed...
   */
 
-  DEBUG_printf(("cupsWriteRequestData(http=%p, buffer=%p, "
-                "length=" CUPS_LLFMT ")", http, buffer, CUPS_LLCAST length));
+  DEBUG_printf(("cupsWriteRequestData(http=%p, buffer=%p, length=" CUPS_LLFMT ")", (void *)http, (void *)buffer, CUPS_LLCAST length));
 
   if (!http)
   {
@@ -1186,8 +1170,3 @@ _cupsSetHTTPError(http_status_t status)   /* I - HTTP status code */
        break;
   }
 }
-
-
-/*
- * End of "$Id: request.c 11866 2014-05-09 20:20:16Z msweet $".
- */
index d9517e9..8070ea7 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: sidechannel.c 12124 2014-08-28 15:37:22Z msweet $"
- *
  * Side-channel API code for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -56,7 +54,7 @@
  * pointed to by the "data" parameter.  cupsSideChannelDoRequest() will
  * update the value to contain the number of data bytes in the buffer.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 cups_sc_status_t                       /* O  - Status of command */
@@ -95,7 +93,7 @@ cupsSideChannelDoRequest(
  * pointed to by the "data" parameter.  cupsSideChannelDoRequest() will
  * update the value to contain the number of data bytes in the buffer.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -295,7 +293,7 @@ cupsSideChannelRead(
  * support SNMP queries.  @code CUPS_SC_STATUS_NO_RESPONSE@ is returned when
  * the printer does not respond to the SNMP query.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 cups_sc_status_t                       /* O  - Query status */
@@ -401,7 +399,7 @@ cupsSideChannelSNMPGet(
  * support SNMP queries.  @code CUPS_SC_STATUS_NO_RESPONSE@ is returned when
  * the printer does not respond to the first SNMP query.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 cups_sc_status_t                       /* O - Status of first query of @code CUPS_SC_STATUS_OK@ on success */
@@ -520,7 +518,7 @@ cupsSideChannelSNMPWalk(
  * This function is normally only called by backend programs to send
  * responses to a filter, driver, or port monitor program.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on error */
@@ -622,8 +620,3 @@ cupsSideChannelWrite(
 
   return (0);
 }
-
-
-/*
- * End of "$Id: sidechannel.c 12124 2014-08-28 15:37:22Z msweet $".
- */
index 4694bb9..3de4542 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: sidechannel.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Side-channel API definitions for CUPS.
  *
- *   Side-channel API definitions for CUPS.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 2006 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_SIDECHANNEL_H_
@@ -61,9 +59,9 @@ enum cups_sc_command_e                        /**** Request command codes ****/
   CUPS_SC_CMD_GET_BIDI = 3,            /* Return bidirectional capabilities */
   CUPS_SC_CMD_GET_DEVICE_ID = 4,       /* Return the IEEE-1284 device ID */
   CUPS_SC_CMD_GET_STATE = 5,           /* Return the device state */
-  CUPS_SC_CMD_SNMP_GET = 6,            /* Query an SNMP OID @since CUPS 1.4/OS X 10.6@ */
-  CUPS_SC_CMD_SNMP_GET_NEXT = 7,       /* Query the next SNMP OID @since CUPS 1.4/OS X 10.6@ */
-  CUPS_SC_CMD_GET_CONNECTED = 8,       /* Return whether the backend is "connected" to the printer @since CUPS 1.5/OS X 10.7@ */
+  CUPS_SC_CMD_SNMP_GET = 6,            /* Query an SNMP OID @since CUPS 1.4/macOS 10.6@ */
+  CUPS_SC_CMD_SNMP_GET_NEXT = 7,       /* Query the next SNMP OID @since CUPS 1.4/macOS 10.6@ */
+  CUPS_SC_CMD_GET_CONNECTED = 8,       /* Return whether the backend is "connected" to the printer @since CUPS 1.5/macOS 10.7@ */
   CUPS_SC_CMD_MAX                      /* End of valid values @private@ */
 };
 typedef enum cups_sc_command_e cups_sc_command_t;
@@ -141,7 +139,3 @@ extern cups_sc_status_t     cupsSideChannelSNMPWalk(const char *oid, double timeout,
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_SIDECHANNEL_H_ */
-
-/*
- * End of "$Id: sidechannel.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 21698e0..920ea36 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: snmp-private.h 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Private SNMP definitions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -139,8 +137,3 @@ extern int          _cupsSNMPWrite(int fd, http_addr_t *address, int version,
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_SNMP_PRIVATE_H_ */
-
-
-/*
- * End of "$Id: snmp-private.h 11558 2014-02-06 18:33:34Z msweet $".
- */
index 86d4598..fffa218 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * SNMP functions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -1674,8 +1672,3 @@ snmp_set_error(cups_snmp_t *packet,       /* I - Packet */
 
   packet->error = _cupsLangString(cg->lang_default, message);
 }
-
-
-/*
- * End of "$Id: snmp.c 11594 2014-02-14 20:09:01Z msweet $".
- */
index 4029d2c..d586ce9 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: snprintf.c 10996 2013-05-29 11:51:34Z msweet $"
+ * snprintf functions for CUPS.
  *
- *   snprintf functions for CUPS.
+ * Copyright 2007-2013 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * 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/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   _cups_vsnprintf() - Format a string into a fixed size buffer.
- *   _cups_snprintf()  - Format a string into a fixed size buffer.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -358,9 +351,3 @@ _cups_snprintf(char       *buffer,  /* O - Output buffer */
   return (bytes);
 }
 #endif /* !HAVE_SNPRINTF */
-
-
-/*
- * End of "$Id: snprintf.c 10996 2013-05-29 11:51:34Z msweet $".
- */
-
index 558db45..8b1140b 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: string-private.h 12928 2015-10-23 21:31:58Z msweet $"
- *
  * Private string definitions for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
 #    include <bstring.h>
 #  endif /* HAVE_BSTRING_H */
 
+#  if defined(WIN32) && !defined(__CUPS_SSIZE_T_DEFINED)
+#    define __CUPS_SSIZE_T_DEFINED
+#    include <stddef.h>
+/* Windows does not support the ssize_t type, so map it to long... */
+typedef long ssize_t;                  /* @private@ */
+#  endif /* WIN32 && !__CUPS_SSIZE_T_DEFINED */
+
 
 /*
  * C++ magic...
@@ -217,7 +222,3 @@ extern char *_cupsStrDate(char *buf, size_t bufsize, time_t timeval);
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_STRING_H_ */
-
-/*
- * End of "$Id: string-private.h 12928 2015-10-23 21:31:58Z msweet $".
- */
index 9f99494..23b0439 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: string.c 11889 2014-05-22 13:54:15Z msweet $"
- *
  * String functions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -769,8 +767,3 @@ compare_sp_items(_cups_sp_item_t *a,        /* I - First item */
 {
   return (strcmp(a->str, b->str));
 }
-
-
-/*
- * End of "$Id: string.c 11889 2014-05-22 13:54:15Z msweet $".
- */
index 72eb963..d96ee7d 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: tempfile.c 12073 2014-07-31 00:58:00Z msweet $"
- *
  * Temp file utilities for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -71,11 +69,11 @@ cupsTempFd(char *filename,          /* I - Pointer to buffer */
   */
 
   if ((tmpdir = getenv("TMPDIR")) == NULL)
-#  ifdef __APPLE__
+#  if defined(__APPLE__) && !TARGET_OS_IOS
     tmpdir = "/private/tmp";           /* /tmp is a symlink to /private/tmp */
 #  else
     tmpdir = "/tmp";
-#  endif /* __APPLE__ */
+#  endif /* __APPLE__  && !TARGET_OS_IOS */
 #endif /* WIN32 */
 
  /*
@@ -170,7 +168,7 @@ cupsTempFile(char *filename,                /* I - Pointer to buffer */
  * The temporary filename is returned in the filename buffer.
  * The temporary file is opened for writing.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 cups_file_t *                          /* O - CUPS file or @code NULL@ on error */
@@ -192,8 +190,3 @@ cupsTempFile2(char *filename,               /* I - Pointer to buffer */
   else
     return (file);
 }
-
-
-/*
- * End of "$Id: tempfile.c 12073 2014-07-31 00:58:00Z msweet $".
- */
index 04b02f1..f15c808 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: testadmin.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Admin function test program for CUPS.
  *
- *   Admin function test program for CUPS.
+ * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2006 by Easy Software Products.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main()          - Main entry.
- *   show_settings() - Show settings in the array...
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -114,8 +107,3 @@ show_settings(
     num_settings --;
   }
 }
-
-
-/*
- * End of "$Id: testadmin.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 7003331..5ae7315 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testarray.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Array test program for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -548,8 +546,3 @@ load_words(const char   *filename,  /* I - File to load */
 
   return (1);
 }
-
-
-/*
- * End of "$Id: testarray.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 0051f81..9025a0d 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testcache.c 11832 2014-04-24 15:04:00Z msweet $"
- *
  * PPD cache testing program for CUPS.
  *
  * Copyright 2009-2014 by Apple Inc.
@@ -91,8 +89,3 @@ main(int  argc,                               /* I - Number of command-line args */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: testcache.c 11832 2014-04-24 15:04:00Z msweet $".
- */
index 0ccca82..d07b088 100644 (file)
@@ -1,21 +1,15 @@
 /*
- * "$Id: testconflicts.c 3755 2012-03-30 05:59:14Z msweet $"
+ * PPD constraint test program for CUPS.
  *
- *   PPD constraint test program for CUPS.
+ * Copyright 2008-2012 by Apple Inc.
  *
- *   Copyright 2008-2012 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main() - Main entry.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -131,8 +125,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: testconflicts.c 3755 2012-03-30 05:59:14Z msweet $".
- */
diff --git a/cups/testcreds.c b/cups/testcreds.c
new file mode 100644 (file)
index 0000000..8e3c878
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * HTTP credentials test program for CUPS.
+ *
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "cups-private.h"
+
+
+/*
+ * 'main()' - Main entry.
+ */
+
+int                                    /* O - Exit status */
+main(int  argc,                                /* I - Number of command-line arguments */
+     char *argv[])                     /* I - Command-line arguments */
+{
+  http_t       *http;                  /* HTTP connection */
+  char         scheme[HTTP_MAX_URI],   /* Scheme from URI */
+               hostname[HTTP_MAX_URI], /* Hostname from URI */
+               username[HTTP_MAX_URI], /* Username:password from URI */
+               resource[HTTP_MAX_URI]; /* Resource from URI */
+  int          port;                   /* Port number from URI */
+  http_trust_t trust;                  /* Trust evaluation for connection */
+  cups_array_t *hcreds,                /* Credentials from connection */
+               *tcreds;                /* Credentials from trust store */
+  char         hinfo[1024],            /* String for connection credentials */
+               tinfo[1024];            /* String for trust store credentials */
+  static const char *trusts[] =                /* Trust strings */
+  { "OK", "Invalid", "Changed", "Expired", "Renewed", "Unknown" };
+
+
+ /*
+  * Check command-line...
+  */
+
+  if (argc != 2)
+  {
+    puts("Usage: ./testcreds hostname");
+    puts("       ./testcreds https://hostname[:port]");
+    return (1);
+  }
+
+  if (!strncmp(argv[1], "https://", 8))
+  {
+   /*
+    * Connect to the host and validate credentials...
+    */
+
+    if (httpSeparateURI(HTTP_URI_CODING_MOST, argv[1], scheme, sizeof(scheme), username, sizeof(username), hostname, sizeof(hostname), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+    {
+      printf("ERROR: Bad URI \"%s\".\n", argv[1]);
+      return (1);
+    }
+
+    if ((http = httpConnect2(hostname, port, NULL, AF_UNSPEC, HTTP_ENCRYPTION_ALWAYS, 1, 30000, NULL)) == NULL)
+    {
+      printf("ERROR: Unable to connect to \"%s\" on port %d: %s\n", hostname, port, cupsLastErrorString());
+      return (1);
+    }
+
+    puts("HTTP Credentials:");
+    if (!httpCopyCredentials(http, &hcreds))
+    {
+      trust = httpCredentialsGetTrust(hcreds, hostname);
+
+      httpCredentialsString(hcreds, hinfo, sizeof(hinfo));
+
+      printf("    Certificate Count: %d\n", cupsArrayCount(hcreds));
+      if (trust == HTTP_TRUST_OK)
+        puts("    Trust: OK");
+      else
+        printf("    Trust: %s (%s)\n", trusts[trust], cupsLastErrorString());
+      printf("    Expiration: %s\n", httpGetDateString(httpCredentialsGetExpiration(hcreds)));
+      printf("    IsValidName: %d\n", httpCredentialsAreValidForName(hcreds, hostname));
+      printf("    String: \"%s\"\n", hinfo);
+
+      httpFreeCredentials(hcreds);
+    }
+    else
+      puts("    Not present (error).");
+
+    puts("");
+  }
+  else
+  {
+   /*
+    * Load stored credentials...
+    */
+
+    strlcpy(hostname, argv[1], sizeof(hostname));
+  }
+
+  printf("Trust Store for \"%s\":\n", hostname);
+
+  if (!httpLoadCredentials(NULL, &tcreds, hostname))
+  {
+    httpCredentialsString(tcreds, tinfo, sizeof(tinfo));
+
+    printf("    Certificate Count: %d\n", cupsArrayCount(tcreds));
+    printf("    Expiration: %s\n", httpGetDateString(httpCredentialsGetExpiration(tcreds)));
+    printf("    IsValidName: %d\n", httpCredentialsAreValidForName(tcreds, hostname));
+    printf("    String: \"%s\"\n", tinfo);
+
+    httpFreeCredentials(tcreds);
+  }
+  else
+    puts("    Not present.");
+
+  return (0);
+}
index 690d937..b6bf78f 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testcups.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * CUPS API test program for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -582,8 +580,3 @@ show_diffs(cups_dest_t *a,          /* I - First destination */
       printf("    %-20.20s  %-20.20s  %-20.20s\n", aoption->name,
              aoption->value, bval ? bval : "(null)");
 }
-
-
-/*
- * End of "$Id: testcups.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index c760719..de6f1da 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: testdest.c 11884 2014-05-16 21:54:22Z msweet $"
- *
  * CUPS destination API test program for CUPS.
  *
- * Copyright 2014 by Apple Inc.
+ * Copyright 2012-2016 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -19,6 +17,7 @@
  */
 
 #include <stdio.h>
+#include <errno.h>
 #include "cups.h"
 
 
@@ -26,6 +25,7 @@
  * Local functions...
  */
 
+static int     enum_cb(void *user_data, unsigned flags, cups_dest_t *dest);
 static void    localize(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, const char *option, const char *value);
 static void    print_file(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, const char *filename, int num_options, cups_option_t *options);
 static void    show_conflicts(http_t *http, cups_dest_t *dest, cups_dinfo_t *dinfo, int num_options, cups_option_t *options);
@@ -53,6 +53,54 @@ main(int  argc,                              /* I - Number of command-line arguments */
 
   if (!strcmp(argv[1], "--enum"))
   {
+    int                        i;              /* Looping var */
+    cups_ptype_t       type = 0,       /* Printer type filter */
+                       mask = 0;       /* Printer type mask */
+
+
+    for (i = 2; i < argc; i ++)
+    {
+      if (!strcmp(argv[i], "grayscale"))
+      {
+        type |= CUPS_PRINTER_BW;
+       mask |= CUPS_PRINTER_BW;
+      }
+      else if (!strcmp(argv[i], "color"))
+      {
+        type |= CUPS_PRINTER_COLOR;
+       mask |= CUPS_PRINTER_COLOR;
+      }
+      else if (!strcmp(argv[i], "duplex"))
+      {
+        type |= CUPS_PRINTER_DUPLEX;
+       mask |= CUPS_PRINTER_DUPLEX;
+      }
+      else if (!strcmp(argv[i], "staple"))
+      {
+        type |= CUPS_PRINTER_STAPLE;
+       mask |= CUPS_PRINTER_STAPLE;
+      }
+      else if (!strcmp(argv[i], "small"))
+      {
+        type |= CUPS_PRINTER_SMALL;
+       mask |= CUPS_PRINTER_SMALL;
+      }
+      else if (!strcmp(argv[i], "medium"))
+      {
+        type |= CUPS_PRINTER_MEDIUM;
+       mask |= CUPS_PRINTER_MEDIUM;
+      }
+      else if (!strcmp(argv[i], "large"))
+      {
+        type |= CUPS_PRINTER_LARGE;
+       mask |= CUPS_PRINTER_LARGE;
+      }
+      else
+        usage(argv[i]);
+    }
+
+    cupsEnumDests(CUPS_DEST_FLAGS_NONE, 5000, NULL, type, mask, enum_cb, NULL);
+
     return (0);
   }
   else if (!strncmp(argv[1], "ipp://", 6) || !strncmp(argv[1], "ipps://", 7))
@@ -102,9 +150,14 @@ main(int  argc,                            /* I - Number of command-line arguments */
   {
     show_default(http, dest, dinfo, argv[3]);
   }
-  else if (!strcmp(argv[2], "localize") && argc > 3 && argc < 6)
+  else if (!strcmp(argv[2], "localize") && argc < 6)
   {
-    localize(http, dest, dinfo, argv[3], argv[4]);
+    if (argc > 3)
+      localize(http, dest, dinfo, argv[3], argv[4]);
+    else if (argc > 2)
+      localize(http, dest, dinfo, argv[3], NULL);
+    else
+      localize(http, dest, dinfo, NULL, NULL);
   }
   else if (!strcmp(argv[2], "media"))
   {
@@ -150,6 +203,33 @@ main(int  argc,                            /* I - Number of command-line arguments */
 
 
 /*
+ * 'enum_cb()' - Print the results from the enumeration of destinations.
+ */
+
+static int                             /* O - 1 to continue */
+enum_cb(void        *user_data,                /* I - User data (unused) */
+        unsigned    flags,             /* I - Flags */
+       cups_dest_t *dest)              /* I - Destination */
+{
+  int  i;                              /* Looping var */
+
+
+  (void)user_data;
+  (void)flags;
+
+  if (dest->instance)
+    printf("%s/%s:\n", dest->name, dest->instance);
+  else
+    printf("%s:\n", dest->name);
+
+  for (i = 0; i < dest->num_options; i ++)
+    printf("    %s=\"%s\"\n", dest->options[i].name, dest->options[i].value);
+
+  return (1);
+}
+
+
+/*
  * 'localize()' - Localize an option and value.
  */
 
@@ -160,11 +240,128 @@ localize(http_t       *http,             /* I - Connection to destination */
          const char   *option,         /* I - Option */
         const char   *value)           /* I - Value, if any */
 {
-  (void)http;
-  (void)dest;
-  (void)dinfo;
-  (void)option;
-  (void)value;
+  ipp_attribute_t      *attr;          /* Attribute */
+  int                  i,              /* Looping var */
+                       count;          /* Number of values */
+
+
+  if (!option)
+  {
+    attr = cupsFindDestSupported(http, dest, dinfo, "job-creation-attributes");
+    if (attr)
+    {
+      count = ippGetCount(attr);
+      for (i = 0; i < count; i ++)
+        localize(http, dest, dinfo, ippGetString(attr, i, NULL), NULL);
+    }
+    else
+    {
+      static const char * const options[] =
+      {                                        /* List of standard options */
+        CUPS_COPIES,
+       CUPS_FINISHINGS,
+       CUPS_MEDIA,
+       CUPS_NUMBER_UP,
+       CUPS_ORIENTATION,
+       CUPS_PRINT_COLOR_MODE,
+       CUPS_PRINT_QUALITY,
+       CUPS_SIDES
+      };
+
+      puts("No job-creation-attributes-supported attribute, probing instead.");
+
+      for (i = 0; i < (int)(sizeof(options) / sizeof(options[0])); i ++)
+        if (cupsCheckDestSupported(http, dest, dinfo, options[i], NULL))
+         localize(http, dest, dinfo, options[i], NULL);
+    }
+  }
+  else if (!value)
+  {
+    printf("%s (%s)\n", option, cupsLocalizeDestOption(http, dest, dinfo, option));
+
+    if ((attr = cupsFindDestSupported(http, dest, dinfo, option)) != NULL)
+    {
+      count = ippGetCount(attr);
+
+      switch (ippGetValueTag(attr))
+      {
+        case IPP_TAG_INTEGER :
+           for (i = 0; i < count; i ++)
+              printf("  %d\n", ippGetInteger(attr, i));
+           break;
+
+        case IPP_TAG_ENUM :
+           for (i = 0; i < count; i ++)
+              printf("  %s\n", ippEnumString(option, ippGetInteger(attr, i)));
+           break;
+
+        case IPP_TAG_RANGE :
+           for (i = 0; i < count; i ++)
+           {
+             int upper, lower = ippGetRange(attr, i, &upper);
+
+              printf("  %d-%d\n", lower, upper);
+           }
+           break;
+
+        case IPP_TAG_RESOLUTION :
+           for (i = 0; i < count; i ++)
+           {
+             int xres, yres;
+             ipp_res_t units;
+             xres = ippGetResolution(attr, i, &yres, &units);
+
+              if (xres == yres)
+                printf("  %d%s\n", xres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+             else
+                printf("  %dx%d%s\n", xres, yres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+           }
+           break;
+
+       case IPP_TAG_TEXTLANG :
+       case IPP_TAG_NAMELANG :
+       case IPP_TAG_TEXT :
+       case IPP_TAG_NAME :
+       case IPP_TAG_KEYWORD :
+       case IPP_TAG_URI :
+       case IPP_TAG_URISCHEME :
+       case IPP_TAG_CHARSET :
+       case IPP_TAG_LANGUAGE :
+       case IPP_TAG_MIMETYPE :
+           for (i = 0; i < count; i ++)
+              printf("  %s (%s)\n", ippGetString(attr, i, NULL), cupsLocalizeDestValue(http, dest, dinfo, option, ippGetString(attr, i, NULL)));
+           break;
+
+        case IPP_TAG_STRING :
+           for (i = 0; i < count; i ++)
+           {
+             int j, len;
+             unsigned char *data = ippGetOctetString(attr, i, &len);
+
+              fputs("  ", stdout);
+             for (j = 0; j < len; j ++)
+             {
+               if (data[j] < ' ' || data[j] >= 0x7f)
+                 printf("<%02X>", data[j]);
+               else
+                 putchar(data[j]);
+              }
+              putchar('\n');
+           }
+           break;
+
+        case IPP_TAG_BOOLEAN :
+           break;
+
+        default :
+           printf("  %s\n", ippTagString(ippGetValueTag(attr)));
+           break;
+      }
+    }
+
+  }
+  else
+    puts(cupsLocalizeDestValue(http, dest, dinfo, option, value));
 }
 
 
@@ -180,12 +377,59 @@ print_file(http_t        *http,           /* I - Connection to destination */
           int           num_options,   /* I - Number of options */
           cups_option_t *options)      /* I - Options */
 {
-  (void)http;
-  (void)dest;
-  (void)dinfo;
-  (void)filename;
-  (void)num_options;
-  (void)options;
+  cups_file_t  *fp;                    /* File to print */
+  int          job_id;                 /* Job ID */
+  ipp_status_t status;                 /* Submission status */
+  const char   *title;                 /* Title of job */
+  char         buffer[32768];          /* File buffer */
+  ssize_t      bytes;                  /* Bytes read/to write */
+
+
+  if ((fp = cupsFileOpen(filename, "r")) == NULL)
+  {
+    printf("Unable to open \"%s\": %s\n", filename, strerror(errno));
+    return;
+  }
+
+  if ((title = strrchr(filename, '/')) != NULL)
+    title ++;
+  else
+    title = filename;
+
+  if ((status = cupsCreateDestJob(http, dest, dinfo, &job_id, title, num_options, options)) > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
+  {
+    printf("Unable to create job: %s\n", cupsLastErrorString());
+    cupsFileClose(fp);
+    return;
+  }
+
+  printf("Created job ID: %d\n", job_id);
+
+  if (cupsStartDestDocument(http, dest, dinfo, job_id, title, CUPS_FORMAT_AUTO, 0, NULL, 1) != HTTP_STATUS_CONTINUE)
+  {
+    printf("Unable to send document: %s\n", cupsLastErrorString());
+    cupsFileClose(fp);
+    return;
+  }
+
+  while ((bytes = cupsFileRead(fp, buffer, sizeof(buffer))) > 0)
+  {
+    if (cupsWriteRequestData(http, buffer, (size_t)bytes) != HTTP_STATUS_CONTINUE)
+    {
+      printf("Unable to write document data: %s\n", cupsLastErrorString());
+      break;
+    }
+  }
+
+  cupsFileClose(fp);
+
+  if ((status = cupsFinishDestDocument(http, dest, dinfo)) > IPP_STATUS_OK_IGNORED_OR_SUBSTITUTED)
+  {
+    printf("Unable to send document: %s\n", cupsLastErrorString());
+    return;
+  }
+
+  puts("Job queued.");
 }
 
 
@@ -376,6 +620,20 @@ show_supported(http_t       *http, /* I - Connection to destination */
            }
            break;
 
+        case IPP_TAG_RESOLUTION :
+           for (i = 0; i < count; i ++)
+           {
+             int xres, yres;
+             ipp_res_t units;
+             xres = ippGetResolution(attr, i, &yres, &units);
+
+              if (xres == yres)
+                printf("  %d%s\n", xres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+             else
+                printf("  %dx%d%s\n", xres, yres, units == IPP_RES_PER_INCH ? "dpi" : "dpcm");
+           }
+           break;
+
        case IPP_TAG_TEXTLANG :
        case IPP_TAG_NAMELANG :
        case IPP_TAG_TEXT :
@@ -416,13 +674,12 @@ show_supported(http_t       *http,        /* I - Connection to destination */
            break;
       }
     }
-    
+
   }
   else if (cupsCheckDestSupported(http, dest, dinfo, option, value))
     puts("YES");
   else
     puts("NO");
-
 }
 
 
@@ -453,8 +710,3 @@ usage(const char *arg)                      /* I - Argument for usage message */
 
   exit(arg != NULL);
 }
-
-
-/*
- * End of "$Id: testdest.c 11884 2014-05-16 21:54:22Z msweet $".
- */
index 61db080..dae50fa 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testfile.c 12577 2015-03-30 19:07:17Z msweet $"
- *
  * File test program for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -138,9 +136,9 @@ main(int  argc,                             /* I - Number of command-line arguments */
       puts("PASS");
       fputs("cupsFileGets: ", stdout);
 
-      if ((count = count_lines(fp)) != 208)
+      if ((count = count_lines(fp)) != 201)
       {
-        printf("FAIL (got %d lines, expected 208)\n", count);
+        printf("FAIL (got %d lines, expected 201)\n", count);
        status ++;
       }
       else
@@ -158,9 +156,9 @@ main(int  argc,                             /* I - Number of command-line arguments */
          puts("PASS");
          fputs("cupsFileGets: ", stdout);
 
-         if ((count = count_lines(fp)) != 208)
+         if ((count = count_lines(fp)) != 201)
          {
-           printf("FAIL (got %d lines, expected 208)\n", count);
+           printf("FAIL (got %d lines, expected 201)\n", count);
            status ++;
          }
          else
@@ -822,8 +820,3 @@ read_write_tests(int compression)   /* I - Use compression? */
 
   return (status);
 }
-
-
-/*
- * End of "$Id: testfile.c 12577 2015-03-30 19:07:17Z msweet $".
- */
index cb5345f..20c6625 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testhttp.c 12678 2015-05-28 19:09:48Z msweet $"
- *
  * HTTP test program for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -886,8 +884,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: testhttp.c 12678 2015-05-28 19:09:48Z msweet $".
- */
index 490c938..a88f1e1 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testi18n.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Internationalization test for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -607,8 +605,3 @@ print_utf8(const char            *msg,      /* I - Message String */
 
   putchar('\n');
 }
-
-
-/*
- * End of "$Id: testi18n.c 11558 2014-02-06 18:33:34Z msweet $"
- */
index 96a431b..150abe0 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testipp.c 11889 2014-05-22 13:54:15Z msweet $"
- *
  * IPP test program for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -1048,8 +1046,3 @@ write_cb(_ippdata_t   *data,              /* I - Data */
 
   return ((ssize_t)count);
 }
-
-
-/*
- * End of "$Id: testipp.c 11889 2014-05-22 13:54:15Z msweet $".
- */
index 1b7b686..6f0691e 100644 (file)
@@ -1,22 +1,16 @@
 /*
- * "$Id: testlang.c 12841 2015-08-10 17:07:30Z msweet $"
+ * Localization test program for CUPS.
  *
- *   Localization test program for CUPS.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2015 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main() - Load the specified language and show the strings for yes and no.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -24,6 +18,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd-private.h"
 
 
 /*
@@ -149,8 +144,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   return (errors > 0);
 }
-
-
-/*
- * End of "$Id: testlang.c 12841 2015-08-10 17:07:30Z msweet $".
- */
index 5789e3b..44a3c71 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testoptions.c 13061 2016-01-26 21:31:40Z msweet $"
- *
  * Option unit test program for CUPS.
  *
  * Copyright 2008-2016 by Apple Inc.
@@ -174,8 +172,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   exit (status);
 }
-
-
-/*
- * End of "$Id: testoptions.c 13061 2016-01-26 21:31:40Z msweet $".
- */
index dbd896e..6d5065c 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testppd.c 12603 2015-05-06 01:42:51Z msweet $"
- *
  * PPD test program for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -21,6 +19,7 @@
 
 #undef _CUPS_NO_DEPRECATED
 #include "cups-private.h"
+#include "ppd-private.h"
 #include <sys/stat.h>
 #ifdef WIN32
 #  include <io.h>
@@ -1167,8 +1166,3 @@ main(int  argc,                           /* I - Number of command-line arguments */
 
   return (status);
 }
-
-
-/*
- * End of "$Id: testppd.c 12603 2015-05-06 01:42:51Z msweet $".
- */
index 3dcbc34..05aba45 100644 (file)
@@ -1,23 +1,15 @@
 /*
- * "$Id: testpwg.c 11239 2013-08-14 20:33:42Z msweet $"
+ * PWG unit test program for CUPS.
  *
- *   PWG test program for CUPS.
+ * Copyright 2009-2016 by Apple Inc.
  *
- *   Copyright 2009-2013 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main()           - Main entry.
- *   test_pagesize()  - Test the PWG mapping functions.
- *   test_ppd_cache() - Test the PPD cache functions.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -188,6 +180,20 @@ main(int  argc,                            /* I - Number of command-line args */
   else
     printf("PASS (%dx%d)\n", pwgmedia->width, pwgmedia->length);
 
+  fputs("pwgMediaForPWG(\"disc_test_10x100mm\"): ", stdout);
+  if ((pwgmedia = pwgMediaForPWG("disc_test_10x100mm")) == NULL)
+  {
+    puts("FAIL (not found)");
+    status ++;
+  }
+  else if (pwgmedia->width != 10000 || pwgmedia->length != 10000)
+  {
+    printf("FAIL (%dx%d)\n", pwgmedia->width, pwgmedia->length);
+    status ++;
+  }
+  else
+    printf("PASS (%dx%d)\n", pwgmedia->width, pwgmedia->length);
+
   fputs("pwgMediaForLegacy(\"na-letter\"): ", stdout);
   if ((pwgmedia = pwgMediaForLegacy("na-letter")) == NULL)
   {
@@ -563,8 +569,3 @@ test_ppd_cache(_ppd_cache_t *pc,    /* I - PWG mapping data */
 
   return (status);
 }
-
-
-/*
- * End of "$Id: testpwg.c 11239 2013-08-14 20:33:42Z msweet $".
- */
index d5e3856..3ab48af 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testsnmp.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * SNMP test program for CUPS.
  *
  * Copyright 2008-2014 by Apple Inc.
@@ -290,8 +288,3 @@ usage(void)
 
   exit (1);
 }
-
-
-/*
- * End of "$Id: testsnmp.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index dadc034..64897a3 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: thread-private.h 11627 2014-02-20 16:15:09Z msweet $"
- *
  * Private threading definitions for CUPS.
  *
- * Copyright 2009-2014 by Apple Inc.
+ * Copyright 2009-2016 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -33,22 +31,27 @@ extern "C" {
 #  endif /* __cplusplus */
 
 
-#  ifdef HAVE_PTHREAD_H
+#  ifdef HAVE_PTHREAD_H                        /* POSIX threading */
 #    include <pthread.h>
 typedef void *(*_cups_thread_func_t)(void *arg);
+typedef pthread_t _cups_thread_t;
+typedef pthread_cond_t _cups_cond_t;
 typedef pthread_mutex_t _cups_mutex_t;
 typedef pthread_rwlock_t _cups_rwlock_t;
 typedef pthread_key_t  _cups_threadkey_t;
+#    define _CUPS_COND_INITIALIZER PTHREAD_COND_INITIALIZER
 #    define _CUPS_MUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER
 #    define _CUPS_RWLOCK_INITIALIZER PTHREAD_RWLOCK_INITIALIZER
 #    define _CUPS_THREADKEY_INITIALIZER 0
 #    define _cupsThreadGetData(k) pthread_getspecific(k)
 #    define _cupsThreadSetData(k,p) pthread_setspecific(k,p)
 
-#  elif defined(WIN32)
+#  elif defined(WIN32)                 /* Windows threading */
 #    include <winsock2.h>
 #    include <windows.h>
 typedef void *(__stdcall *_cups_thread_func_t)(void *arg);
+typedef int _cups_thread_t;
+typedef char _cups_cond_t;             /* TODO: Implement Win32 conditional */
 typedef struct _cups_mutex_s
 {
   int                  m_init;         /* Flag for on-demand initialization */
@@ -57,17 +60,21 @@ typedef struct _cups_mutex_s
 } _cups_mutex_t;
 typedef _cups_mutex_t _cups_rwlock_t;  /* TODO: Implement Win32 reader/writer lock */
 typedef DWORD  _cups_threadkey_t;
+#    define _CUPS_COND_INITIALIZER 0
 #    define _CUPS_MUTEX_INITIALIZER { 0, 0 }
 #    define _CUPS_RWLOCK_INITIALIZER { 0, 0 }
 #    define _CUPS_THREADKEY_INITIALIZER 0
 #    define _cupsThreadGetData(k) TlsGetValue(k)
 #    define _cupsThreadSetData(k,p) TlsSetValue(k,p)
 
-#  else
+#  else                                        /* No threading */
 typedef void   *(*_cups_thread_func_t)(void *arg);
+typedef int    _cups_thread_t;
+typedef char   _cups_cond_t;
 typedef char   _cups_mutex_t;
 typedef char   _cups_rwlock_t;
 typedef void   *_cups_threadkey_t;
+#    define _CUPS_COND_INITIALIZER 0
 #    define _CUPS_MUTEX_INITIALIZER 0
 #    define _CUPS_RWLOCK_INITIALIZER 0
 #    define _CUPS_THREADKEY_INITIALIZER (void *)0
@@ -80,6 +87,9 @@ typedef void  *_cups_threadkey_t;
  * Functions...
  */
 
+extern void    _cupsCondBroadcast(_cups_cond_t *cond);
+extern void    _cupsCondInit(_cups_cond_t *cond);
+extern void    _cupsCondWait(_cups_cond_t *cond, _cups_mutex_t *mutex, double timeout);
 extern void    _cupsMutexInit(_cups_mutex_t *mutex);
 extern void    _cupsMutexLock(_cups_mutex_t *mutex);
 extern void    _cupsMutexUnlock(_cups_mutex_t *mutex);
@@ -87,14 +97,11 @@ extern void _cupsRWInit(_cups_rwlock_t *rwlock);
 extern void    _cupsRWLockRead(_cups_rwlock_t *rwlock);
 extern void    _cupsRWLockWrite(_cups_rwlock_t *rwlock);
 extern void    _cupsRWUnlock(_cups_rwlock_t *rwlock);
-extern int     _cupsThreadCreate(_cups_thread_func_t func, void *arg);
-
+extern void    _cupsThreadCancel(_cups_thread_t thread);
+extern _cups_thread_t _cupsThreadCreate(_cups_thread_func_t func, void *arg);
+extern void    *_cupsThreadWait(_cups_thread_t thread);
 
 #  ifdef __cplusplus
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_THREAD_PRIVATE_H_ */
-
-/*
- * End of "$Id: thread-private.h 11627 2014-02-20 16:15:09Z msweet $".
- */
index ea49f1d..b389b15 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: thread.c 11627 2014-02-20 16:15:09Z msweet $"
- *
  * Threading primitives for CUPS.
  *
- * Copyright 2009-2014 by Apple Inc.
+ * Copyright 2009-2016 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
 
 #if defined(HAVE_PTHREAD_H)
 /*
+ * '_cupsCondBroadcast()' - Wake up waiting threads.
+ */
+
+void
+_cupsCondBroadcast(_cups_cond_t *cond) /* I - Condition */
+{
+  pthread_cond_broadcast(cond);
+}
+
+
+/*
+ * '_cupsCondInit()' - Initialize a condition variable.
+ */
+
+void
+_cupsCondInit(_cups_cond_t *cond)      /* I - Condition */
+{
+  pthread_cond_init(cond, NULL);
+}
+
+
+/*
+ * '_cupsCondWait()' - Wait for a condition with optional timeout.
+ */
+
+void
+_cupsCondWait(_cups_cond_t  *cond,     /* I - Condition */
+              _cups_mutex_t *mutex,    /* I - Mutex */
+             double        timeout)    /* I - Timeout in seconds (0 or negative for none) */
+{
+  if (timeout > 0.0)
+  {
+    struct timespec abstime;           /* Timeout */
+
+    abstime.tv_sec  = (long)timeout;
+    abstime.tv_nsec = (long)(1000000000 * (timeout - (long)timeout));
+
+    pthread_cond_timedwait(cond, mutex, &abstime);
+  }
+  else
+    pthread_cond_wait(cond, mutex);
+}
+
+
+/*
  * '_cupsMutexInit()' - Initialize a mutex.
  */
 
@@ -101,17 +144,48 @@ _cupsRWUnlock(_cups_rwlock_t *rwlock)     /* I - Reader/writer lock */
 
 
 /*
+ * '_cupsThreadCancel()' - Cancel (kill) a thread.
+ */
+
+void
+_cupsThreadCancel(_cups_thread_t thread)/* I - Thread ID */
+{
+  pthread_cancel(thread);
+}
+
+
+/*
  * '_cupsThreadCreate()' - Create a thread.
  */
 
-int                                    /* O - 0 on failure, 1 on success */
+_cups_thread_t                         /* O - Thread ID */
 _cupsThreadCreate(
     _cups_thread_func_t func,          /* I - Entry point */
     void                *arg)          /* I - Entry point context */
 {
   pthread_t thread;
 
-  return (pthread_create(&thread, NULL, (void *(*)(void *))func, arg) == 0);
+  if (pthread_create(&thread, NULL, (void *(*)(void *))func, arg))
+    return (0);
+  else
+    return (thread);
+}
+
+
+/*
+ * '_cupsThreadWait()' - Wait for a thread to exit.
+ */
+
+void *                                 /* O - Return value */
+_cupsThreadWait(_cups_thread_t thread) /* I - Thread ID */
+{
+  void *ret;                           /* Return value */
+
+
+  if (pthread_join(thread, &ret))
+    return (NULL);
+  else
+    return (ret);
 }
 
 
@@ -120,6 +194,41 @@ _cupsThreadCreate(
 
 
 /*
+ * '_cupsCondBroadcast()' - Wake up waiting threads.
+ */
+
+void
+_cupsCondBroadcast(_cups_cond_t *cond) /* I - Condition */
+{
+  // TODO: Implement me
+}
+
+
+/*
+ * '_cupsCondInit()' - Initialize a condition variable.
+ */
+
+void
+_cupsCondInit(_cups_cond_t *cond)      /* I - Condition */
+{
+  // TODO: Implement me
+}
+
+
+/*
+ * '_cupsCondWait()' - Wait for a condition with optional timeout.
+ */
+
+void
+_cupsCondWait(_cups_cond_t  *cond,     /* I - Condition */
+              _cups_mutex_t *mutex,    /* I - Mutex */
+             double        timeout)    /* I - Timeout in seconds (0 or negative for none) */
+{
+  // TODO: Implement me
+}
+
+
+/*
  * '_cupsMutexInit()' - Initialize a mutex.
  */
 
@@ -211,20 +320,79 @@ _cupsRWUnlock(_cups_rwlock_t *rwlock)     /* I - Reader/writer lock */
 
 
 /*
+ * '_cupsThreadCancel()' - Cancel (kill) a thread.
+ */
+
+void
+_cupsThreadCancel(_cups_thread_t thread)/* I - Thread ID */
+{
+  // TODO: Implement me
+}
+
+
+/*
  * '_cupsThreadCreate()' - Create a thread.
  */
 
-int                                    /* O - 0 on failure, 1 on success */
+_cups_thread_t                         /* O - Thread ID */
 _cupsThreadCreate(
     _cups_thread_func_t func,          /* I - Entry point */
     void                *arg)          /* I - Entry point context */
 {
-  return (_beginthreadex(NULL, 0, (LPTHREAD_START_ROUTINE) func, arg, 0, NULL)
-             != 0);
+  return (_beginthreadex(NULL, 0, (LPTHREAD_START_ROUTINE)func, arg, 0, NULL));
+}
+
+
+/*
+ * '_cupsThreadWait()' - Wait for a thread to exit.
+ */
+
+void *                                 /* O - Return value */
+_cupsThreadWait(_cups_thread_t thread) /* I - Thread ID */
+{
+  // TODO: Implement me
+  (void)thread;
+
+  return (NULL);
+}
+
+
+#else /* No threading */
+/*
+ * '_cupsCondBroadcast()' - Wake up waiting threads.
+ */
+
+void
+_cupsCondBroadcast(_cups_cond_t *cond) /* I - Condition */
+{
+  // TODO: Implement me
+}
+
+
+/*
+ * '_cupsCondInit()' - Initialize a condition variable.
+ */
+
+void
+_cupsCondInit(_cups_cond_t *cond)      /* I - Condition */
+{
+  // TODO: Implement me
+}
+
+
+/*
+ * '_cupsCondWait()' - Wait for a condition with optional timeout.
+ */
+
+void
+_cupsCondWait(_cups_cond_t  *cond,     /* I - Condition */
+              _cups_mutex_t *mutex,    /* I - Mutex */
+             double        timeout)    /* I - Timeout in seconds (0 or negative for none) */
+{
+  // TODO: Implement me
 }
 
 
-#else
 /*
  * '_cupsMutexInit()' - Initialize a mutex.
  */
@@ -303,10 +471,21 @@ _cupsRWUnlock(_cups_rwlock_t *rwlock)     /* I - Reader/writer lock */
 
 
 /*
+ * '_cupsThreadCancel()' - Cancel (kill) a thread.
+ */
+
+void
+_cupsThreadCancel(_cups_thread_t thread)/* I - Thread ID */
+{
+  (void)thread;
+}
+
+
+/*
  * '_cupsThreadCreate()' - Create a thread.
  */
 
-int                                    /* O - 0 on failure, 1 on success */
+_cups_thread_t                         /* O - Thread ID */
 _cupsThreadCreate(
     _cups_thread_func_t func,          /* I - Entry point */
     void                *arg)          /* I - Entry point context */
@@ -319,9 +498,18 @@ _cupsThreadCreate(
 
   return (0);
 }
-#endif /* HAVE_PTHREAD_H */
 
 
 /*
- * End of "$Id: thread.c 11627 2014-02-20 16:15:09Z msweet $".
+ * '_cupsThreadWait()' - Wait for a thread to exit.
  */
+
+void *                                 /* O - Return value */
+_cupsThreadWait(_cups_thread_t thread) /* I - Thread ID */
+{
+  (void)thread;
+
+  return (NULL);
+}
+
+#endif /* HAVE_PTHREAD_H */
index 377919d..383a20e 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: tls-darwin.c 12675 2015-05-28 01:14:32Z msweet $"
+ * TLS support code for CUPS on macOS.
  *
- * TLS support code for CUPS on OS X.
- *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -27,21 +25,32 @@ extern char **environ;
 
 
 /*
+ * Constants, very secure stuff...
+ */
+
+#define _CUPS_CDSA_PASSWORD    "42"    /* CUPS keychain password */
+#define _CUPS_CDSA_PASSLEN     2       /* Length of keychain password */
+
+
+/*
  * Local globals...
  */
 
-#ifdef HAVE_SECKEYCHAINOPEN
 static int             tls_auto_create = 0;
                                        /* Auto-create self-signed certs? */
 static char            *tls_common_name = NULL;
                                        /* Default common name */
+#ifdef HAVE_SECKEYCHAINOPEN
 static SecKeychainRef  tls_keychain = NULL;
                                        /* Server cert keychain */
+#else
+static SecIdentityRef  tls_selfsigned = NULL;
+                                       /* Temporary self-signed cert */
+#endif /* HAVE_SECKEYCHAINOPEN */
 static char            *tls_keypath = NULL;
                                        /* Server cert keychain path */
 static _cups_mutex_t   tls_mutex = _CUPS_MUTEX_INITIALIZER;
                                        /* Mutex for keychain/certs */
-#endif /* HAVE_SECKEYCHAINOPEN */
 static int             tls_options = -1;/* Options for TLS connections */
 
 
@@ -49,11 +58,13 @@ static int          tls_options = -1;/* Options for TLS connections */
  * Local functions...
  */
 
-#ifdef HAVE_SECKEYCHAINOPEN
 static CFArrayRef      http_cdsa_copy_server(const char *common_name);
-#endif /* HAVE_SECKEYCHAINOPEN */
 static SecCertificateRef http_cdsa_create_credential(http_credential_t *credential);
+#ifdef HAVE_SECKEYCHAINOPEN
 static const char      *http_cdsa_default_path(char *buffer, size_t bufsize);
+static SecKeychainRef  http_cdsa_open_keychain(const char *path, char *filename, size_t filesize);
+static SecKeychainRef  http_cdsa_open_system_keychain(void);
+#endif /* HAVE_SECKEYCHAINOPEN */
 static OSStatus                http_cdsa_read(SSLConnectionRef connection, void *data, size_t *dataLength);
 static int             http_cdsa_set_credentials(http_t *http);
 static OSStatus                http_cdsa_write(SSLConnectionRef connection, const void *data, size_t *dataLength);
@@ -73,8 +84,7 @@ cupsMakeServerCredentials(
     const char **alt_names,            /* I - Subject Alternate Names */
     time_t     expiration_date)                /* I - Expiration date */
 {
-#if defined(HAVE_SECGENERATESELFSIGNEDCERTIFICATE) && defined(HAVE_SECKEYCHAINOPEN)
-  char                 filename[1024]; /* Default keychain path */
+#if defined(HAVE_SECGENERATESELFSIGNEDCERTIFICATE)
   int                  status = 0;     /* Return status */
   OSStatus             err;            /* Error code (if any) */
   CFStringRef          cfcommon_name = NULL;
@@ -84,22 +94,36 @@ cupsMakeServerCredentials(
                                        /* Public key */
                        privateKey = NULL;
                                        /* Private key */
+  SecCertificateRef    cert = NULL;    /* Self-signed certificate */
   CFMutableDictionaryRef keyParams = NULL;
                                        /* Key generation parameters */
 
 
   DEBUG_printf(("cupsMakeServerCredentials(path=\"%s\", common_name=\"%s\", num_alt_names=%d, alt_names=%p, expiration_date=%d)", path, common_name, num_alt_names, alt_names, (int)expiration_date));
 
+  (void)path;
   (void)num_alt_names;
   (void)alt_names;
   (void)expiration_date;
 
-  if (!path)
-    path = http_cdsa_default_path(filename, sizeof(filename));
+  if (path)
+  {
+    DEBUG_puts("1cupsMakeServerCredentials: No keychain support compiled in, returning 0.");
+    return (0);
+  }
+
+  if (tls_selfsigned)
+  {
+    DEBUG_puts("1cupsMakeServerCredentials: Using existing self-signed cert.");
+    return (1);
+  }
 
   cfcommon_name = CFStringCreateWithCString(kCFAllocatorDefault, common_name, kCFStringEncodingUTF8);
   if (!cfcommon_name)
+  {
+    DEBUG_puts("1cupsMakeServerCredentials: Unable to create CF string of common name.");
     goto cleanup;
+  }
 
  /*
   * Create a public/private key pair...
@@ -107,25 +131,35 @@ cupsMakeServerCredentials(
 
   keyParams = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
   if (!keyParams)
+  {
+    DEBUG_puts("1cupsMakeServerCredentials: Unable to create key parameters dictionary.");
     goto cleanup;
+  }
 
   CFDictionaryAddValue(keyParams, kSecAttrKeyType, kSecAttrKeyTypeRSA);
   CFDictionaryAddValue(keyParams, kSecAttrKeySizeInBits, CFSTR("2048"));
-  CFDictionaryAddValue(keyParams, kSecAttrLabel, CFSTR("CUPS Self-Signed Certificate"));
+  CFDictionaryAddValue(keyParams, kSecAttrLabel, cfcommon_name);
 
   err = SecKeyGeneratePair(keyParams, &publicKey, &privateKey);
   if (err != noErr)
+  {
+    DEBUG_printf(("1cupsMakeServerCredentials: Unable to generate key pair: %d.", (int)err));
     goto cleanup;
+  }
 
  /*
   * Create a self-signed certificate using the public/private key pair...
   */
 
   CFIndex      usageInt = kSecKeyUsageAll;
-  CFNumberRef  usage = CFNumberCreate(alloc, kCFNumberCFIndexType, &usageInt);
-  CFDictionaryRef certParams = CFDictionaryCreateMutable(kCFAllocatorDefault,
-kSecCSRBasicContraintsPathLen, CFINT(0), kSecSubjectAltName, cfcommon_name, kSecCertificateKeyUsage, usage, NULL, NULL);
+  CFNumberRef  usage = CFNumberCreate(kCFAllocatorDefault, kCFNumberCFIndexType, &usageInt);
+  CFIndex      lenInt = 0;
+  CFNumberRef  len = CFNumberCreate(kCFAllocatorDefault, kCFNumberCFIndexType, &lenInt);
+  CFTypeRef certKeys[] = { kSecCSRBasicContraintsPathLen, kSecSubjectAltName, kSecCertificateKeyUsage };
+  CFTypeRef certValues[] = { len, cfcommon_name, usage };
+  CFDictionaryRef certParams = CFDictionaryCreate(kCFAllocatorDefault, certKeys, certValues, sizeof(certKeys) / sizeof(certKeys[0]), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
   CFRelease(usage);
+  CFRelease(len);
 
   const void   *ca_o[] = { kSecOidOrganization, CFSTR("") };
   const void   *ca_cn[] = { kSecOidCommonName, cfcommon_name };
@@ -137,17 +171,52 @@ kSecCSRBasicContraintsPathLen, CFINT(0), kSecSubjectAltName, cfcommon_name, kSec
   ca_dn_array[1] = CFArrayCreate(kCFAllocatorDefault, (const void **)&ca_cn_dn, 1, NULL);
 
   CFArrayRef   subject = CFArrayCreate(kCFAllocatorDefault, ca_dn_array, 2, NULL);
-  SecCertificateRef cert = SecGenerateSelfSignedCertificate(subject, certParams, publicKey, privateKey);
+
+  cert = SecGenerateSelfSignedCertificate(subject, certParams, publicKey, privateKey);
+
   CFRelease(subject);
   CFRelease(certParams);
 
   if (!cert)
+  {
+    DEBUG_puts("1cupsMakeServerCredentials: Unable to create self-signed certificate.");
     goto cleanup;
+  }
 
   ident = SecIdentityCreate(kCFAllocatorDefault, cert, privateKey);
 
   if (ident)
+  {
+    _cupsMutexLock(&tls_mutex);
+
+    if (tls_selfsigned)
+      CFRelease(ident);
+    else
+      tls_selfsigned = ident;
+
+    _cupsMutexLock(&tls_mutex);
+
+#  if 0 /* Someday perhaps SecItemCopyMatching will work for identities, at which point  */
+    CFTypeRef itemKeys[] = { kSecClass, kSecAttrLabel, kSecValueRef };
+    CFTypeRef itemValues[] = { kSecClassIdentity, cfcommon_name, ident };
+    CFDictionaryRef itemAttrs = CFDictionaryCreate(kCFAllocatorDefault, itemKeys, itemValues, sizeof(itemKeys) / sizeof(itemKeys[0]), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
+
+    err = SecItemAdd(itemAttrs, NULL);
+    /* SecItemAdd consumes itemAttrs... */
+
+    CFRelease(ident);
+
+    if (err != noErr)
+    {
+      DEBUG_printf(("1cupsMakeServerCredentials: Unable to add identity to keychain: %d.", (int)err));
+      goto cleanup;
+    }
+#  endif /* 0 */
+
     status = 1;
+  }
+  else
+    DEBUG_puts("1cupsMakeServerCredentials: Unable to create identity from cert and keys.");
 
   /*
    * Cleanup and return...
@@ -161,9 +230,6 @@ cleanup:
   if (keyParams)
     CFRelease(keyParams);
 
-  if (ident)
-    CFRelease(ident);
-
   if (cert)
     CFRelease(cert);
 
@@ -171,16 +237,18 @@ cleanup:
     CFRelease(publicKey);
 
   if (privateKey)
-    CFRelease(publicKey);
+    CFRelease(privateKey);
+
+  DEBUG_printf(("1cupsMakeServerCredentials: Returning %d.", status));
 
   return (status);
 
-#else /* !(HAVE_SECGENERATESELFSIGNEDCERTIFICATE && HAVE_SECKEYCHAINOPEN) */
+#else /* !HAVE_SECGENERATESELFSIGNEDCERTIFICATE */
   int          pid,                    /* Process ID of command */
                status,                 /* Status of command */
                i;                      /* Looping var */
   char         command[1024],          /* Command */
-               *argv[4],               /* Command-line arguments */
+               *argv[5],               /* Command-line arguments */
                *envp[1000],            /* Environment variables */
                days[32],               /* CERTTOOL_EXPIRATION_DAYS env var */
                keychain[1024],         /* Keychain argument */
@@ -189,7 +257,7 @@ cleanup:
   cups_file_t  *fp;                    /* Seed/info file */
 
 
-  DEBUG_printf(("cupsMakeServerCredentials(path=\"%s\", common_name=\"%s\", num_alt_names=%d, alt_names=%p, expiration_date=%d)", path, common_name, num_alt_names, alt_names, (int)expiration_date));
+  DEBUG_printf(("cupsMakeServerCredentials(path=\"%s\", common_name=\"%s\", num_alt_names=%d, alt_names=%p, expiration_date=%d)", path, common_name, num_alt_names, (void *)alt_names, (int)expiration_date));
 
   (void)num_alt_names;
   (void)alt_names;
@@ -218,10 +286,10 @@ cleanup:
                  "CUPS Self-Signed Certificate\n"
                                        /* Enter key and certificate label */
                  "r\n"                 /* Generate RSA key pair */
-                 "2048\n"              /* Key size in bits */
+                 "2048\n"              /* 2048 bit encryption key */
                  "y\n"                 /* OK (y = yes) */
                  "b\n"                 /* Usage (b=signing/encryption) */
-                 "s\n"                 /* Sign with SHA1 */
+                 "2\n"                 /* Sign with SHA256 */
                  "y\n"                 /* OK (y = yes) */
                  "%s\n"                        /* Common name */
                  "\n"                  /* Country (default) */
@@ -284,7 +352,7 @@ cleanup:
  * Note: The server credentials are used by all threads in the running process.
  * This function is threadsafe.
  *
- * @since CUPS 2.0/OS X 10.10@
+ * @since CUPS 2.0/macOS 10.10@
  */
 
 int                                    /* O - 1 on success, 0 on failure */
@@ -296,17 +364,12 @@ cupsSetServerCredentials(
   DEBUG_printf(("cupsSetServerCredentials(path=\"%s\", common_name=\"%s\", auto_create=%d)", path, common_name, auto_create));
 
 #ifdef HAVE_SECKEYCHAINOPEN
-  char                 filename[1024]; /* Filename for keychain */
-  SecKeychainRef       keychain = NULL;/* Temporary keychain */
+  char         filename[1024];         /* Keychain filename */
+  SecKeychainRef keychain = http_cdsa_open_keychain(path, filename, sizeof(filename));
 
-
-  if (!path)
-    path = http_cdsa_default_path(filename, sizeof(filename));
-
-  if (SecKeychainOpen(path, &keychain) != noErr)
+  if (!keychain)
   {
-    /* TODO: Set cups last error string */
-    DEBUG_puts("1cupsSetServerCredentials: Unable to open keychain, returning 0.");
+    DEBUG_puts("1cupsSetServerCredentials: Unable to open keychain.");
     return (0);
   }
 
@@ -330,7 +393,7 @@ cupsSetServerCredentials(
   */
 
   tls_keychain    = keychain;
-  tls_keypath     = _cupsStrAlloc(path);
+  tls_keypath     = _cupsStrAlloc(filename);
   tls_auto_create = auto_create;
   tls_common_name = _cupsStrAlloc(common_name);
 
@@ -340,8 +403,16 @@ cupsSetServerCredentials(
   return (1);
 
 #else
-  DEBUG_puts("1cupsSetServerCredentials: No keychain support compiled in, returning 0.");
-  return (0);
+  if (path)
+  {
+    DEBUG_puts("1cupsSetServerCredentials: No keychain support compiled in, returning 0.");
+    return (0);
+  }
+
+  tls_auto_create = auto_create;
+  tls_common_name = _cupsStrAlloc(common_name);
+
+  return (1);
 #endif /* HAVE_SECKEYCHAINOPEN */
 }
 
@@ -350,7 +421,7 @@ cupsSetServerCredentials(
  * 'httpCopyCredentials()' - Copy the credentials associated with the peer in
  *                           an encrypted connection.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 int                                    /* O - Status of call (0 = success) */
@@ -366,7 +437,7 @@ httpCopyCredentials(
   int                  i;              /* Looping var */
 
 
-  DEBUG_printf(("httpCopyCredentials(http=%p, credentials=%p)", http, credentials));
+  DEBUG_printf(("httpCopyCredentials(http=%p, credentials=%p)", (void *)http, (void *)credentials));
 
   if (credentials)
     *credentials = NULL;
@@ -453,7 +524,7 @@ _httpCreateCredentials(
 /*
  * 'httpCredentialsAreValidForName()' - Return whether the credentials are valid for the given name.
  *
- * @since CUPS 2.0/OS X 10.10@
+ * @since CUPS 2.0/macOS 10.10@
  */
 
 int                                    /* O - 1 if valid, 0 otherwise */
@@ -516,7 +587,7 @@ httpCredentialsAreValidForName(
 /*
  * 'httpCredentialsGetTrust()' - Return the trust of credentials.
  *
- * @since CUPS 2.0/OS X 10.10@
+ * @since CUPS 2.0/macOS 10.10@
  */
 
 http_trust_t                           /* O - Level of trust */
@@ -533,10 +604,16 @@ httpCredentialsGetTrust(
 
 
   if (!common_name)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No common name specified."), 1);
     return (HTTP_TRUST_UNKNOWN);
+  }
 
   if ((secCert = http_cdsa_create_credential((http_credential_t *)cupsArrayFirst(credentials))) == NULL)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create credentials from array."), 1);
     return (HTTP_TRUST_UNKNOWN);
+  }
 
   if (cg->any_root < 0)
     _cupsSetDefaults();
@@ -562,14 +639,34 @@ httpCredentialsGetTrust(
       * credentials and allow if the new ones have a later expiration...
       */
 
-      if (httpCredentialsGetExpiration(credentials) <= httpCredentialsGetExpiration(tcreds) ||
-          !httpCredentialsAreValidForName(credentials, common_name))
+      if (!cg->trust_first)
+      {
+       /*
+        * Do not trust certificates on first use...
+       */
+
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Trust on first use is disabled."), 1);
+
+        trust = HTTP_TRUST_INVALID;
+      }
+      else if (httpCredentialsGetExpiration(credentials) <= httpCredentialsGetExpiration(tcreds))
+      {
+       /*
+        * The new credentials are not newly issued...
+       */
+
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("New credentials are older than stored credentials."), 1);
+
+        trust = HTTP_TRUST_INVALID;
+      }
+      else if (!httpCredentialsAreValidForName(credentials, common_name))
       {
        /*
-        * Either the new credentials are not newly issued, or the common name
-       * does not match the issued certificate...
+        * The common name does not match the issued certificate...
        */
 
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("New credentials are not valid for name."), 1);
+
         trust = HTTP_TRUST_INVALID;
       }
       else if (httpCredentialsGetExpiration(tcreds) < time(NULL))
@@ -587,12 +684,65 @@ httpCredentialsGetTrust(
     httpFreeCredentials(tcreds);
   }
   else if (cg->validate_certs && !httpCredentialsAreValidForName(credentials, common_name))
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No stored credentials, not valid for name."), 1);
     trust = HTTP_TRUST_INVALID;
+  }
+  else if (!cg->trust_first)
+  {
+   /*
+    * See if we have a site CA certificate we can compare...
+    */
+
+    if (!httpLoadCredentials(NULL, &tcreds, "site"))
+    {
+      if (cupsArrayCount(credentials) != (cupsArrayCount(tcreds) + 1))
+      {
+       /*
+        * Certificate isn't directly generated from the CA cert...
+       */
 
-  if (!cg->expired_certs && !SecCertificateIsValid(secCert, CFAbsoluteTimeGetCurrent()))
+        trust = HTTP_TRUST_INVALID;
+      }
+      else
+      {
+       /*
+        * Do a tail comparison of the two certificates...
+       */
+
+        http_credential_t      *a, *b;         /* Certificates */
+
+        for (a = (http_credential_t *)cupsArrayFirst(tcreds), b = (http_credential_t *)cupsArrayIndex(credentials, 1);
+            a && b;
+            a = (http_credential_t *)cupsArrayNext(tcreds), b = (http_credential_t *)cupsArrayNext(credentials))
+         if (a->datalen != b->datalen || memcmp(a->data, b->data, a->datalen))
+           break;
+
+        if (a || b)
+         trust = HTTP_TRUST_INVALID;
+      }
+
+      if (trust != HTTP_TRUST_OK)
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Credentials do not validate against site CA certificate."), 1);
+    }
+    else
+    {
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Trust on first use is disabled."), 1);
+      trust = HTTP_TRUST_INVALID;
+    }
+  }
+
+  if (trust == HTTP_TRUST_OK && !cg->expired_certs && !SecCertificateIsValid(secCert, CFAbsoluteTimeGetCurrent()))
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Credentials have expired."), 1);
     trust = HTTP_TRUST_EXPIRED;
-  else if (!cg->any_root && cupsArrayCount(credentials) == 1)
+  }
+
+  if (trust == HTTP_TRUST_OK && !cg->any_root && cupsArrayCount(credentials) == 1)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Self-signed credentials are blocked."), 1);
     trust = HTTP_TRUST_INVALID;
+  }
 
   CFRelease(secCert);
 
@@ -603,7 +753,7 @@ httpCredentialsGetTrust(
 /*
  * 'httpCredentialsGetExpiration()' - Return the expiration date of the credentials.
  *
- * @since CUPS 2.0/OS X 10.10@
+ * @since CUPS 2.0/macOS 10.10@
  */
 
 time_t                                 /* O - Expiration date of credentials */
@@ -628,7 +778,7 @@ httpCredentialsGetExpiration(
 /*
  * 'httpCredentialsString()' - Return a string representing the credentials.
  *
- * @since CUPS 2.0/OS X 10.10@
+ * @since CUPS 2.0/macOS 10.10@
  */
 
 size_t                                 /* O - Total size of credentials string */
@@ -641,7 +791,7 @@ httpCredentialsString(
   SecCertificateRef    secCert;        /* Certificate reference */
 
 
-  DEBUG_printf(("httpCredentialsString(credentials=%p, buffer=%p, bufsize=" CUPS_LLFMT ")", credentials, buffer, CUPS_LLCAST bufsize));
+  DEBUG_printf(("httpCredentialsString(credentials=%p, buffer=%p, bufsize=" CUPS_LLFMT ")", (void *)credentials, (void *)buffer, CUPS_LLCAST bufsize));
 
   if (!buffer)
     return (0);
@@ -710,33 +860,41 @@ httpLoadCredentials(
     cups_array_t **credentials,                /* IO - Credentials */
     const char   *common_name)         /* I  - Common name for credentials */
 {
-#ifdef HAVE_SECKEYCHAINOPEN
   OSStatus             err;            /* Error info */
+#ifdef HAVE_SECKEYCHAINOPEN
   char                 filename[1024]; /* Filename for keychain */
-  SecKeychainRef       keychain = NULL;/* Keychain reference */
-  SecIdentitySearchRef search = NULL;  /* Search reference */
+  SecKeychainRef       keychain = NULL,/* Keychain reference */
+                       syschain = NULL;/* System keychain */
+  CFArrayRef           list;           /* Keychain list */
+#endif /* HAVE_SECKEYCHAINOPEN */
   SecCertificateRef    cert = NULL;    /* Certificate */
   CFDataRef            data;           /* Certificate data */
   SecPolicyRef         policy = NULL;  /* Policy ref */
   CFStringRef          cfcommon_name = NULL;
                                        /* Server name */
   CFMutableDictionaryRef query = NULL; /* Query qualifiers */
-  CFArrayRef           list = NULL;    /* Keychain list */
 
 
-  DEBUG_printf(("httpLoadCredentials(path=\"%s\", credentials=%p, common_name=\"%s\")", path, credentials, common_name));
+  DEBUG_printf(("httpLoadCredentials(path=\"%s\", credentials=%p, common_name=\"%s\")", path, (void *)credentials, common_name));
 
   if (!credentials)
     return (-1);
 
   *credentials = NULL;
 
-  if (!path)
-    path = http_cdsa_default_path(filename, sizeof(filename));
+#ifdef HAVE_SECKEYCHAINOPEN
+  keychain = http_cdsa_open_keychain(path, filename, sizeof(filename));
 
-  if ((err = SecKeychainOpen(path, &keychain)) != noErr)
+  if (!keychain)
     goto cleanup;
 
+  syschain = http_cdsa_open_system_keychain();
+
+#else
+  if (path)
+    return (-1);
+#endif /* HAVE_SECKEYCHAINOPEN */
+
   cfcommon_name = CFStringCreateWithCString(kCFAllocatorDefault, common_name, kCFStringEncodingUTF8);
 
   policy = SecPolicyCreateSSL(1, cfcommon_name);
@@ -750,15 +908,23 @@ httpLoadCredentials(
   if (!(query = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)))
     goto cleanup;
 
-  list = CFArrayCreate(kCFAllocatorDefault, (const void **)&keychain, 1, &kCFTypeArrayCallBacks);
-
   CFDictionaryAddValue(query, kSecClass, kSecClassCertificate);
   CFDictionaryAddValue(query, kSecMatchPolicy, policy);
   CFDictionaryAddValue(query, kSecReturnRef, kCFBooleanTrue);
   CFDictionaryAddValue(query, kSecMatchLimit, kSecMatchLimitOne);
-  CFDictionaryAddValue(query, kSecMatchSearchList, list);
 
+#ifdef HAVE_SECKEYCHAINOPEN
+  if (syschain)
+  {
+    const void *values[2] = { syschain, keychain };
+
+    list = CFArrayCreate(kCFAllocatorDefault, (const void **)values, 2, &kCFTypeArrayCallBacks);
+  }
+  else
+    list = CFArrayCreate(kCFAllocatorDefault, (const void **)&keychain, 1, &kCFTypeArrayCallBacks);
+  CFDictionaryAddValue(query, kSecMatchSearchList, list);
   CFRelease(list);
+#endif /* HAVE_SECKEYCHAINOPEN */
 
   err = SecItemCopyMatching(query, (CFTypeRef *)&cert);
 
@@ -779,10 +945,13 @@ httpLoadCredentials(
 
   cleanup :
 
+#ifdef HAVE_SECKEYCHAINOPEN
   if (keychain)
     CFRelease(keychain);
-  if (search)
-    CFRelease(search);
+
+  if (syschain)
+    CFRelease(syschain);
+#endif /* HAVE_SECKEYCHAINOPEN */
   if (cert)
     CFRelease(cert);
   if (policy)
@@ -793,14 +962,6 @@ httpLoadCredentials(
   DEBUG_printf(("1httpLoadCredentials: Returning %d.", *credentials ? 0 : -1));
 
   return (*credentials ? 0 : -1);
-
-#else
-  (void)path;
-  (void)credentials;
-  (void)common_name;
-
-  return (-1);
-#endif /* HAVE_SECKEYCHAINOPEN */
 }
 
 
@@ -816,18 +977,18 @@ httpSaveCredentials(
     cups_array_t *credentials,         /* I - Credentials */
     const char   *common_name)         /* I - Common name for credentials */
 {
-#ifdef HAVE_SECKEYCHAINOPEN
   int                  ret = -1;       /* Return value */
   OSStatus             err;            /* Error info */
+#ifdef HAVE_SECKEYCHAINOPEN
   char                 filename[1024]; /* Filename for keychain */
   SecKeychainRef       keychain = NULL;/* Keychain reference */
-  SecIdentitySearchRef search = NULL;  /* Search reference */
+  CFArrayRef           list;           /* Keychain list */
+#endif /* HAVE_SECKEYCHAINOPEN */
   SecCertificateRef    cert = NULL;    /* Certificate */
   CFMutableDictionaryRef attrs = NULL; /* Attributes for add */
-  CFArrayRef           list = NULL;    /* Keychain list */
 
 
-  DEBUG_printf(("httpSaveCredentials(path=\"%s\", credentials=%p, common_name=\"%s\")", path, credentials, common_name));
+  DEBUG_printf(("httpSaveCredentials(path=\"%s\", credentials=%p, common_name=\"%s\")", path, (void *)credentials, common_name));
   if (!credentials)
     goto cleanup;
 
@@ -843,20 +1004,16 @@ httpSaveCredentials(
     goto cleanup;
   }
 
-  if (!path)
-    path = http_cdsa_default_path(filename, sizeof(filename));
+#ifdef HAVE_SECKEYCHAINOPEN
+  keychain = http_cdsa_open_keychain(path, filename, sizeof(filename));
 
-  if ((err = SecKeychainOpen(path, &keychain)) != noErr)
-  {
-    DEBUG_printf(("1httpSaveCredentials: SecKeychainOpen returned %d.", (int)err));
+  if (!keychain)
     goto cleanup;
-  }
 
-  if ((list = CFArrayCreate(kCFAllocatorDefault, (const void **)&keychain, 1, &kCFTypeArrayCallBacks)) == NULL)
-  {
-    DEBUG_puts("1httpSaveCredentials: Unable to create list of keychains.");
-    goto cleanup;
-  }
+#else
+  if (path)
+    return (-1);
+#endif /* HAVE_SECKEYCHAINOPEN */
 
   if ((attrs = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)) == NULL)
   {
@@ -866,7 +1023,16 @@ httpSaveCredentials(
 
   CFDictionaryAddValue(attrs, kSecClass, kSecClassCertificate);
   CFDictionaryAddValue(attrs, kSecValueRef, cert);
+
+#ifdef HAVE_SECKEYCHAINOPEN
+  if ((list = CFArrayCreate(kCFAllocatorDefault, (const void **)&keychain, 1, &kCFTypeArrayCallBacks)) == NULL)
+  {
+    DEBUG_puts("1httpSaveCredentials: Unable to create list of keychains.");
+    goto cleanup;
+  }
   CFDictionaryAddValue(attrs, kSecMatchSearchList, list);
+  CFRelease(list);
+#endif /* HAVE_SECKEYCHAINOPEN */
 
   /* Note: SecItemAdd consumes "attrs"... */
   err = SecItemAdd(attrs, NULL);
@@ -874,26 +1040,16 @@ httpSaveCredentials(
 
   cleanup :
 
-  if (list)
-    CFRelease(list);
+#ifdef HAVE_SECKEYCHAINOPEN
   if (keychain)
     CFRelease(keychain);
-  if (search)
-    CFRelease(search);
+#endif /* HAVE_SECKEYCHAINOPEN */
   if (cert)
     CFRelease(cert);
 
   DEBUG_printf(("1httpSaveCredentials: Returning %d.", ret));
 
   return (ret);
-
-#else
-  (void)path;
-  (void)credentials;
-  (void)common_name;
-
-  return (-1);
-#endif /* HAVE_SECKEYCHAINOPEN */
 }
 
 
@@ -1009,7 +1165,7 @@ _httpTLSStart(http_t *http)               /* I - HTTP connection */
   http_credential_t    *credential;    /* Credential data */
 
 
-  DEBUG_printf(("3_httpTLSStart(http=%p)", http));
+  DEBUG_printf(("3_httpTLSStart(http=%p)", (void *)http));
 
   if (tls_options < 0)
   {
@@ -1020,9 +1176,6 @@ _httpTLSStart(http_t *http)               /* I - HTTP connection */
 
 #ifdef HAVE_SECKEYCHAINOPEN
   if (http->mode == _HTTP_MODE_SERVER && !tls_keychain)
-#else
-  if (http->mode == _HTTP_MODE_SERVER)
-#endif /* HAVE_SECKEYCHAINOPEN */
   {
     DEBUG_puts("4_httpTLSStart: cupsSetServerCredentials not called.");
     http->error  = errno = EINVAL;
@@ -1031,6 +1184,7 @@ _httpTLSStart(http_t *http)               /* I - HTTP connection */
 
     return (-1);
   }
+#endif /* HAVE_SECKEYCHAINOPEN */
 
   if ((http->tls = SSLCreateContext(kCFAllocatorDefault, http->mode == _HTTP_MODE_CLIENT ? kSSLClientSide : kSSLServerSide, kSSLStreamType)) == NULL)
   {
@@ -1270,7 +1424,6 @@ _httpTLSStart(http_t *http)               /* I - HTTP connection */
       }
     }
 
-#ifdef HAVE_SECKEYCHAINOPEN
     if (isdigit(hostname[0] & 255) || hostname[0] == '[')
       hostname[0] = '\0';              /* Don't allow numeric addresses */
 
@@ -1295,7 +1448,6 @@ _httpTLSStart(http_t *http)               /* I - HTTP connection */
 
       http->tls_credentials = http_cdsa_copy_server(hostname[0] ? hostname : tls_common_name);
     }
-#endif /* HAVE_SECKEYCHAINOPEN */
 
     if (!http->tls_credentials)
     {
@@ -1312,7 +1464,7 @@ _httpTLSStart(http_t *http)               /* I - HTTP connection */
     DEBUG_printf(("4_httpTLSStart: SSLSetCertificate, error=%d", (int)error));
   }
 
-  DEBUG_printf(("4_httpTLSStart: tls_credentials=%p", http->tls_credentials));
+  DEBUG_printf(("4_httpTLSStart: tls_credentials=%p", (void *)http->tls_credentials));
 
  /*
   * Let the server know which hostname/domain we are trying to connect to
@@ -1534,7 +1686,7 @@ _httpTLSWrite(http_t     *http,           /* I - HTTP connection */
   size_t       processed;              /* Number of bytes processed */
 
 
-  DEBUG_printf(("2_httpTLSWrite(http=%p, buf=%p, len=%d)", http, buf, len));
+  DEBUG_printf(("2_httpTLSWrite(http=%p, buf=%p, len=%d)", (void *)http, (void *)buf, len));
 
   error = SSLWrite(http->tls, buf, (size_t)len, &processed);
 
@@ -1576,7 +1728,6 @@ _httpTLSWrite(http_t     *http,           /* I - HTTP connection */
 }
 
 
-#ifdef HAVE_SECKEYCHAINOPEN
 /*
  * 'http_cdsa_copy_server()' - Find and copy server credentials from the keychain.
  */
@@ -1585,8 +1736,8 @@ static CFArrayRef                 /* O - Array of certificates or NULL */
 http_cdsa_copy_server(
     const char *common_name)           /* I - Server's hostname */
 {
+#ifdef HAVE_SECKEYCHAINOPEN
   OSStatus             err;            /* Error info */
-  SecIdentitySearchRef search = NULL;  /* Search reference */
   SecIdentityRef       identity = NULL;/* Identity */
   CFArrayRef           certificates = NULL;
                                        /* Certificate array */
@@ -1595,61 +1746,94 @@ http_cdsa_copy_server(
                                        /* Server name */
   CFMutableDictionaryRef query = NULL; /* Query qualifiers */
   CFArrayRef           list = NULL;    /* Keychain list */
+  SecKeychainRef       syschain = NULL;/* System keychain */
+
 
+  DEBUG_printf(("3http_cdsa_copy_server(common_name=\"%s\")", common_name));
 
   cfcommon_name = CFStringCreateWithCString(kCFAllocatorDefault, common_name, kCFStringEncodingUTF8);
 
   policy = SecPolicyCreateSSL(1, cfcommon_name);
 
-  if (cfcommon_name)
-    CFRelease(cfcommon_name);
-
   if (!policy)
+  {
+    DEBUG_puts("4http_cdsa_copy_server: Unable to create SSL policy.");
     goto cleanup;
+  }
 
   if (!(query = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)))
+  {
+    DEBUG_puts("4http_cdsa_copy_server: Unable to create query dictionary.");
     goto cleanup;
+  }
 
   _cupsMutexLock(&tls_mutex);
 
-  list = CFArrayCreate(kCFAllocatorDefault, (const void **)&tls_keychain, 1, &kCFTypeArrayCallBacks);
-
   CFDictionaryAddValue(query, kSecClass, kSecClassIdentity);
   CFDictionaryAddValue(query, kSecMatchPolicy, policy);
   CFDictionaryAddValue(query, kSecReturnRef, kCFBooleanTrue);
   CFDictionaryAddValue(query, kSecMatchLimit, kSecMatchLimitOne);
-  CFDictionaryAddValue(query, kSecMatchSearchList, list);
 
+  syschain = http_cdsa_open_system_keychain();
+
+  if (syschain)
+  {
+    const void *values[2] = { syschain, tls_keychain };
+
+    list = CFArrayCreate(kCFAllocatorDefault, (const void **)values, 2, &kCFTypeArrayCallBacks);
+  }
+  else
+    list = CFArrayCreate(kCFAllocatorDefault, (const void **)&tls_keychain, 1, &kCFTypeArrayCallBacks);
+
+  CFDictionaryAddValue(query, kSecMatchSearchList, list);
   CFRelease(list);
 
   err = SecItemCopyMatching(query, (CFTypeRef *)&identity);
 
   _cupsMutexUnlock(&tls_mutex);
 
-  if (err)
+  if (err != noErr)
+  {
+    DEBUG_printf(("4http_cdsa_copy_server: SecItemCopyMatching failed with status %d.", (int)err));
     goto cleanup;
+  }
 
   if (CFGetTypeID(identity) != SecIdentityGetTypeID())
+  {
+    DEBUG_puts("4http_cdsa_copy_server: Search returned something that is not an identity.");
     goto cleanup;
+  }
 
   if ((certificates = CFArrayCreate(NULL, (const void **)&identity, 1, &kCFTypeArrayCallBacks)) == NULL)
+  {
+    DEBUG_puts("4http_cdsa_copy_server: Unable to create array of certificates.");
     goto cleanup;
+  }
 
   cleanup :
 
-  if (search)
-    CFRelease(search);
+  if (syschain)
+    CFRelease(syschain);
   if (identity)
     CFRelease(identity);
-
   if (policy)
     CFRelease(policy);
+  if (cfcommon_name)
+    CFRelease(cfcommon_name);
   if (query)
     CFRelease(query);
 
+  DEBUG_printf(("4http_cdsa_copy_server: Returning %p.", (void *)certificates));
+
   return (certificates);
-}
+#else
+
+  if (!tls_selfsigned)
+    return (NULL);
+
+  return (CFArrayCreate(NULL, (const void **)&tls_selfsigned, 1, &kCFTypeArrayCallBacks));
 #endif /* HAVE_SECKEYCHAINOPEN */
+}
 
 
 /*
@@ -1667,6 +1851,7 @@ http_cdsa_create_credential(
 }
 
 
+#ifdef HAVE_SECKEYCHAINOPEN
 /*
  * 'http_cdsa_default_path()' - Get the default keychain path.
  */
@@ -1678,10 +1863,16 @@ http_cdsa_default_path(char   *buffer,  /* I - Path buffer */
   const char *home = getenv("HOME");   /* HOME environment variable */
 
 
+ /*
+  * Determine the default keychain path.  Note that the login and system
+  * keychains are no longer accessible to user applications starting in macOS
+  * 10.11.4 (!), so we need to create our own keychain just for CUPS.
+  */
+
   if (getuid() && home)
-    snprintf(buffer, bufsize, "%s/Library/Keychains/login.keychain", home);
+    snprintf(buffer, bufsize, "%s/.cups/ssl.keychain", home);
   else
-    strlcpy(buffer, "/Library/Keychains/System.keychain", bufsize);
+    strlcpy(buffer, "/etc/cups/ssl.keychain", bufsize);
 
   DEBUG_printf(("1http_cdsa_default_path: Using default path \"%s\".", buffer));
 
@@ -1690,6 +1881,150 @@ http_cdsa_default_path(char   *buffer,  /* I - Path buffer */
 
 
 /*
+ * 'http_cdsa_open_keychain()' - Open (or create) a keychain.
+ */
+
+static SecKeychainRef                  /* O - Keychain or NULL */
+http_cdsa_open_keychain(
+    const char *path,                  /* I - Path to keychain */
+    char       *filename,              /* I - Keychain filename */
+    size_t     filesize)               /* I - Size of filename buffer */
+{
+  SecKeychainRef       keychain = NULL;/* Temporary keychain */
+  OSStatus             err;            /* Error code */
+  Boolean              interaction;    /* Interaction allowed? */
+  SecKeychainStatus    status = 0;     /* Keychain status */
+
+
+ /*
+  * Get the keychain filename...
+  */
+
+  if (!path)
+    path = http_cdsa_default_path(filename, filesize);
+  else
+    strlcpy(filename, path, filesize);
+
+ /*
+  * Save the interaction setting and disable while we open the keychain...
+  */
+
+  SecKeychainGetUserInteractionAllowed(&interaction);
+  SecKeychainSetUserInteractionAllowed(FALSE);
+
+  if (access(path, R_OK))
+  {
+   /*
+    * Create a new keychain at the given path...
+    */
+
+    err = SecKeychainCreate(path, _CUPS_CDSA_PASSLEN, _CUPS_CDSA_PASSWORD, FALSE, NULL, &keychain);
+  }
+  else
+  {
+   /*
+    * Open the existing keychain and unlock as needed...
+    */
+
+    err = SecKeychainOpen(path, &keychain);
+
+    if (err == noErr)
+      err = SecKeychainGetStatus(keychain, &status);
+
+    if (err == noErr && !(status & kSecUnlockStateStatus))
+      err = SecKeychainUnlock(keychain, _CUPS_CDSA_PASSLEN, _CUPS_CDSA_PASSWORD, TRUE);
+  }
+
+ /*
+  * Restore interaction setting...
+  */
+
+  SecKeychainSetUserInteractionAllowed(interaction);
+
+ /*
+  * Release the keychain if we had any errors...
+  */
+
+  if (err != noErr)
+  {
+    /* TODO: Set cups last error string */
+    DEBUG_printf(("4http_cdsa_open_keychain: Unable to open keychain (%d), returning NULL.", (int)err));
+
+    if (keychain)
+    {
+      CFRelease(keychain);
+      keychain = NULL;
+    }
+  }
+
+ /*
+  * Return the keychain or NULL...
+  */
+
+  return (keychain);
+}
+
+
+/*
+ * 'http_cdsa_open_system_keychain()' - Open the System keychain.
+ */
+
+static SecKeychainRef
+http_cdsa_open_system_keychain(void)
+{
+  SecKeychainRef       keychain = NULL;/* Temporary keychain */
+  OSStatus             err;            /* Error code */
+  Boolean              interaction;    /* Interaction allowed? */
+  SecKeychainStatus    status = 0;     /* Keychain status */
+
+
+ /*
+  * Save the interaction setting and disable while we open the keychain...
+  */
+
+  SecKeychainGetUserInteractionAllowed(&interaction);
+  SecKeychainSetUserInteractionAllowed(TRUE);
+
+  err = SecKeychainOpen("/Library/Keychains/System.keychain", &keychain);
+
+  if (err == noErr)
+    err = SecKeychainGetStatus(keychain, &status);
+
+  if (err == noErr && !(status & kSecUnlockStateStatus))
+    err = errSecInteractionNotAllowed;
+
+ /*
+  * Restore interaction setting...
+  */
+
+  SecKeychainSetUserInteractionAllowed(interaction);
+
+ /*
+  * Release the keychain if we had any errors...
+  */
+
+  if (err != noErr)
+  {
+    /* TODO: Set cups last error string */
+    DEBUG_printf(("4http_cdsa_open_system_keychain: Unable to open keychain (%d), returning NULL.", (int)err));
+
+    if (keychain)
+    {
+      CFRelease(keychain);
+      keychain = NULL;
+    }
+  }
+
+ /*
+  * Return the keychain or NULL...
+  */
+
+  return (keychain);
+}
+#endif /* HAVE_SECKEYCHAINOPEN */
+
+
+/*
  * 'http_cdsa_read()' - Read function for the CDSA library.
  */
 
@@ -1766,7 +2101,7 @@ http_cdsa_set_credentials(http_t *http)   /* I - HTTP connection */
                                        /* TLS credentials */
 
 
-  DEBUG_printf(("7http_tls_set_credentials(%p)", http));
+  DEBUG_printf(("7http_tls_set_credentials(%p)", (void *)http));
 
  /*
   * Prefer connection specific credentials...
@@ -1832,8 +2167,3 @@ http_cdsa_write(
 
   return (result);
 }
-
-
-/*
- * End of "$Id: tls-darwin.c 12675 2015-05-28 01:14:32Z msweet $".
- */
index 3da05e2..d5e639e 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: tls-gnutls.c 12670 2015-05-27 19:48:05Z msweet $"
- *
  * TLS support code for CUPS using GNU TLS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -32,6 +30,7 @@ static int            tls_auto_create = 0;
                                        /* Auto-create self-signed certs? */
 static char            *tls_common_name = NULL;
                                        /* Default common name */
+static gnutls_x509_crl_t tls_crl = NULL;/* Certificate revocation list */
 static char            *tls_keypath = NULL;
                                        /* Server cert keychain path */
 static _cups_mutex_t   tls_mutex = _CUPS_MUTEX_INITIALIZER;
@@ -45,6 +44,7 @@ static int            tls_options = -1;/* Options for TLS connections */
 
 static gnutls_x509_crt_t http_gnutls_create_credential(http_credential_t *credential);
 static const char      *http_gnutls_default_path(char *buffer, size_t bufsize);
+static void            http_gnutls_load_crl(void);
 static const char      *http_gnutls_make_path(char *buffer, size_t bufsize, const char *dirname, const char *filename, const char *ext);
 static ssize_t         http_gnutls_read(gnutls_transport_ptr_t ptr, void *data, size_t length);
 static ssize_t         http_gnutls_write(gnutls_transport_ptr_t ptr, const void *data, size_t length);
@@ -291,7 +291,7 @@ cupsSetServerCredentials(
  * 'httpCopyCredentials()' - Copy the credentials associated with the peer in
  *                           an encrypted connection.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 int                                    /* O - Status of call (0 = success) */
@@ -375,6 +375,39 @@ httpCredentialsAreValidForName(
   if (cert)
   {
     result = gnutls_x509_crt_check_hostname(cert, common_name) != 0;
+
+    if (result)
+    {
+      int              i,              /* Looping var */
+                       count;          /* Number of revoked certificates */
+      unsigned char    cserial[1024],  /* Certificate serial number */
+                       rserial[1024];  /* Revoked serial number */
+      size_t           cserial_size,   /* Size of cert serial number */
+                       rserial_size;   /* Size of revoked serial number */
+
+      _cupsMutexLock(&tls_mutex);
+
+      count = gnutls_x509_crl_get_crt_count(tls_crl);
+
+      if (count > 0)
+      {
+        cserial_size = sizeof(cserial);
+        gnutls_x509_crt_get_serial(cert, cserial, &cserial_size);
+
+        for (i = 0; i < count; i ++)
+       {
+         rserial_size = sizeof(rserial);
+          if (!gnutls_x509_crl_get_crt_serial(tls_crl, i, rserial, &rserial_size, NULL) && cserial_size == rserial_size && !memcmp(cserial, rserial, rserial_size))
+         {
+           result = 0;
+           break;
+         }
+       }
+      }
+
+      _cupsMutexUnlock(&tls_mutex);
+    }
+
     gnutls_x509_crt_deinit(cert);
   }
 
@@ -402,13 +435,22 @@ httpCredentialsGetTrust(
 
 
   if (!common_name)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No common name specified."), 1);
     return (HTTP_TRUST_UNKNOWN);
+  }
 
   if ((cert = http_gnutls_create_credential((http_credential_t *)cupsArrayFirst(credentials))) == NULL)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create credentials from array."), 1);
     return (HTTP_TRUST_UNKNOWN);
+  }
 
   if (cg->any_root < 0)
+  {
     _cupsSetDefaults();
+    http_gnutls_load_crl();
+  }
 
  /*
   * Look this common name up in the default keychains...
@@ -431,14 +473,34 @@ httpCredentialsGetTrust(
       * credentials and allow if the new ones have a later expiration...
       */
 
-      if (httpCredentialsGetExpiration(credentials) <= httpCredentialsGetExpiration(tcreds) ||
-          !httpCredentialsAreValidForName(credentials, common_name))
+      if (!cg->trust_first)
+      {
+       /*
+        * Do not trust certificates on first use...
+       */
+
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Trust on first use is disabled."), 1);
+
+        trust = HTTP_TRUST_INVALID;
+      }
+      else if (httpCredentialsGetExpiration(credentials) <= httpCredentialsGetExpiration(tcreds))
       {
        /*
-        * Either the new credentials are not newly issued, or the common name
-       * does not match the issued certificate...
+        * The new credentials are not newly issued...
        */
 
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("New credentials are older than stored credentials."), 1);
+
+        trust = HTTP_TRUST_INVALID;
+      }
+      else if (!httpCredentialsAreValidForName(credentials, common_name))
+      {
+       /*
+        * The common name does not match the issued certificate...
+       */
+
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("New credentials are not valid for name."), 1);
+
         trust = HTTP_TRUST_INVALID;
       }
       else if (httpCredentialsGetExpiration(tcreds) < time(NULL))
@@ -456,7 +518,53 @@ httpCredentialsGetTrust(
     httpFreeCredentials(tcreds);
   }
   else if (cg->validate_certs && !httpCredentialsAreValidForName(credentials, common_name))
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No stored credentials, not valid for name."), 1);
     trust = HTTP_TRUST_INVALID;
+  }
+  else if (!cg->trust_first)
+  {
+   /*
+    * See if we have a site CA certificate we can compare...
+    */
+
+    if (!httpLoadCredentials(NULL, &tcreds, "site"))
+    {
+      if (cupsArrayCount(credentials) != (cupsArrayCount(tcreds) + 1))
+      {
+       /*
+        * Certificate isn't directly generated from the CA cert...
+       */
+
+        trust = HTTP_TRUST_INVALID;
+      }
+      else
+      {
+       /*
+        * Do a tail comparison of the two certificates...
+       */
+
+        http_credential_t      *a, *b;         /* Certificates */
+
+        for (a = (http_credential_t *)cupsArrayFirst(tcreds), b = (http_credential_t *)cupsArrayIndex(credentials, 1);
+            a && b;
+            a = (http_credential_t *)cupsArrayNext(tcreds), b = (http_credential_t *)cupsArrayNext(credentials))
+         if (a->datalen != b->datalen || memcmp(a->data, b->data, a->datalen))
+           break;
+
+        if (a || b)
+         trust = HTTP_TRUST_INVALID;
+      }
+
+      if (trust != HTTP_TRUST_OK)
+       _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Credentials do not validate against site CA certificate."), 1);
+    }
+    else
+    {
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Trust on first use is disabled."), 1);
+      trust = HTTP_TRUST_INVALID;
+    }
+  }
 
   if (trust == HTTP_TRUST_OK && !cg->expired_certs)
   {
@@ -465,11 +573,17 @@ httpCredentialsGetTrust(
     time(&curtime);
     if (curtime < gnutls_x509_crt_get_activation_time(cert) ||
         curtime > gnutls_x509_crt_get_expiration_time(cert))
+    {
+      _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Credentials have expired."), 1);
       trust = HTTP_TRUST_EXPIRED;
+    }
   }
 
   if (trust == HTTP_TRUST_OK && !cg->any_root && cupsArrayCount(credentials) == 1)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Self-signed credentials are blocked."), 1);
     trust = HTTP_TRUST_INVALID;
+  }
 
   gnutls_x509_crt_deinit(cert);
 
@@ -578,6 +692,8 @@ httpLoadCredentials(
   size_t               alloc_data = 0, /* Bytes allocated */
                        num_data = 0;   /* Bytes used */
   int                  decoded;        /* Bytes decoded */
+  int                  in_certificate = 0;
+                                       /* In a certificate? */
 
 
   if (!credentials || !common_name)
@@ -597,7 +713,7 @@ httpLoadCredentials(
   {
     if (!strcmp(line, "-----BEGIN CERTIFICATE-----"))
     {
-      if (num_data)
+      if (in_certificate)
       {
        /*
        * Missing END CERTIFICATE...
@@ -607,10 +723,12 @@ httpLoadCredentials(
        *credentials = NULL;
         break;
       }
+
+      in_certificate = 1;
     }
     else if (!strcmp(line, "-----END CERTIFICATE-----"))
     {
-      if (!num_data)
+      if (!in_certificate || !num_data)
       {
        /*
        * Missing data...
@@ -631,9 +749,10 @@ httpLoadCredentials(
         break;
       }
 
-      num_data = 0;
+      num_data       = 0;
+      in_certificate = 0;
     }
-    else
+    else if (in_certificate)
     {
       if (alloc_data == 0)
       {
@@ -667,7 +786,7 @@ httpLoadCredentials(
 
   cupsFileClose(fp);
 
-  if (num_data)
+  if (in_certificate)
   {
    /*
     * Missing END CERTIFICATE...
@@ -825,6 +944,101 @@ http_gnutls_default_path(char   *buffer,/* I - Path buffer */
 
 
 /*
+ * 'http_gnutls_load_crl()' - Load the certificate revocation list, if any.
+ */
+
+static void
+http_gnutls_load_crl(void)
+{
+  _cupsMutexLock(&tls_mutex);
+
+  if (!gnutls_x509_crl_init(&tls_crl))
+  {
+    cups_file_t                *fp;            /* CRL file */
+    char               filename[1024], /* site.crl */
+                       line[256];      /* Base64-encoded line */
+    unsigned char      *data = NULL;   /* Buffer for cert data */
+    size_t             alloc_data = 0, /* Bytes allocated */
+                       num_data = 0;   /* Bytes used */
+    int                        decoded;        /* Bytes decoded */
+    gnutls_datum_t     datum;          /* Data record */
+
+
+    http_gnutls_make_path(filename, sizeof(filename), CUPS_SERVERROOT, "site", "crl");
+
+    if ((fp = cupsFileOpen(filename, "r")) != NULL)
+    {
+      while (cupsFileGets(fp, line, sizeof(line)))
+      {
+       if (!strcmp(line, "-----BEGIN X509 CRL-----"))
+       {
+         if (num_data)
+         {
+          /*
+           * Missing END X509 CRL...
+           */
+
+           break;
+         }
+       }
+       else if (!strcmp(line, "-----END X509 CRL-----"))
+       {
+         if (!num_data)
+         {
+          /*
+           * Missing data...
+           */
+
+           break;
+         }
+
+          datum.data = data;
+         datum.size = num_data;
+
+         gnutls_x509_crl_import(tls_crl, &datum, GNUTLS_X509_FMT_PEM);
+
+         num_data = 0;
+       }
+       else
+       {
+         if (alloc_data == 0)
+         {
+           data       = malloc(2048);
+           alloc_data = 2048;
+
+           if (!data)
+             break;
+         }
+         else if ((num_data + strlen(line)) >= alloc_data)
+         {
+           unsigned char *tdata = realloc(data, alloc_data + 1024);
+                                           /* Expanded buffer */
+
+           if (!tdata)
+             break;
+
+           data       = tdata;
+           alloc_data += 1024;
+         }
+
+         decoded = alloc_data - num_data;
+         httpDecode64_2((char *)data + num_data, &decoded, line);
+         num_data += (size_t)decoded;
+       }
+      }
+
+      cupsFileClose(fp);
+
+      if (data)
+       free(data);
+    }
+  }
+
+  _cupsMutexUnlock(&tls_mutex);
+}
+
+
+/*
  * 'http_gnutls_make_path()' - Format a filename for a certificate or key file.
  */
 
@@ -1156,17 +1370,73 @@ _httpTLSStart(http_t *http)             /* I - Connection to server */
 
     if (hostname[0])
     {
-      http_gnutls_make_path(crtfile, sizeof(crtfile), tls_keypath, hostname, "crt");
-      http_gnutls_make_path(keyfile, sizeof(keyfile), tls_keypath, hostname, "key");
+     /*
+      * First look for CA certs...
+      */
+
+      snprintf(crtfile, sizeof(crtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostname);
+      snprintf(keyfile, sizeof(keyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostname);
 
-      have_creds = !access(crtfile, 0) && !access(keyfile, 0);
+      if ((access(crtfile, R_OK) || access(keyfile, R_OK)) && (hostptr = strchr(hostname, '.')) != NULL)
+      {
+       /*
+        * Try just domain name...
+       */
+
+        hostptr ++;
+       if (strchr(hostptr, '.'))
+       {
+         snprintf(crtfile, sizeof(crtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostptr);
+         snprintf(keyfile, sizeof(keyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostptr);
+       }
+      }
+
+      if (access(crtfile, R_OK) || access(keyfile, R_OK))
+      {
+       /*
+        * Then look in the CUPS keystore...
+       */
+
+       http_gnutls_make_path(crtfile, sizeof(crtfile), tls_keypath, hostname, "crt");
+       http_gnutls_make_path(keyfile, sizeof(keyfile), tls_keypath, hostname, "key");
+      }
+
+      have_creds = !access(crtfile, R_OK) && !access(keyfile, R_OK);
     }
     else if (tls_common_name)
     {
-      http_gnutls_make_path(crtfile, sizeof(crtfile), tls_keypath, tls_common_name, "crt");
-      http_gnutls_make_path(keyfile, sizeof(keyfile), tls_keypath, tls_common_name, "key");
+     /*
+      * First look for CA certs...
+      */
 
-      have_creds = !access(crtfile, 0) && !access(keyfile, 0);
+      snprintf(crtfile, sizeof(crtfile), "/etc/letsencrypt/live/%s/fullchain.pem", tls_common_name);
+      snprintf(keyfile, sizeof(keyfile), "/etc/letsencrypt/live/%s/privkey.pem", tls_common_name);
+
+      if ((access(crtfile, R_OK) || access(keyfile, R_OK)) && (hostptr = strchr(tls_common_name, '.')) != NULL)
+      {
+       /*
+        * Try just domain name...
+       */
+
+        hostptr ++;
+       if (strchr(hostptr, '.'))
+       {
+         snprintf(crtfile, sizeof(crtfile), "/etc/letsencrypt/live/%s/fullchain.pem", hostptr);
+         snprintf(keyfile, sizeof(keyfile), "/etc/letsencrypt/live/%s/privkey.pem", hostptr);
+       }
+      }
+
+      if (access(crtfile, R_OK) || access(keyfile, R_OK))
+      {
+       /*
+        * Then look in the CUPS keystore...
+       */
+
+       http_gnutls_make_path(crtfile, sizeof(crtfile), tls_keypath, tls_common_name, "crt");
+       http_gnutls_make_path(keyfile, sizeof(keyfile), tls_keypath, tls_common_name, "key");
+      }
+
+      have_creds = !access(crtfile, R_OK) && !access(keyfile, R_OK);
     }
 
     if (!have_creds && tls_auto_create && (hostname[0] || tls_common_name))
@@ -1186,7 +1456,8 @@ _httpTLSStart(http_t *http)               /* I - Connection to server */
 
     DEBUG_printf(("4_httpTLSStart: Using certificate \"%s\" and private key \"%s\".", crtfile, keyfile));
 
-    status = gnutls_certificate_set_x509_key_file(*credentials, crtfile, keyfile, GNUTLS_X509_FMT_PEM);
+    if (!status)
+      status = gnutls_certificate_set_x509_key_file(*credentials, crtfile, keyfile, GNUTLS_X509_FMT_PEM);
   }
 
   if (!status)
@@ -1338,8 +1609,3 @@ _httpTLSWrite(http_t     *http,           /* I - Connection to server */
 
   return ((int)result);
 }
-
-
-/*
- * End of "$Id: tls-gnutls.c 12670 2015-05-27 19:48:05Z msweet $".
- */
index aa8994d..8d88faf 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: tls-sspi.c 12647 2015-05-20 18:37:52Z msweet $"
- *
  * TLS support for CUPS on Windows using the Security Support Provider
  * Interface (SSPI).
  *
@@ -136,7 +134,7 @@ cupsSetServerCredentials(
  * 'httpCopyCredentials()' - Copy the credentials associated with the peer in
  *                           an encrypted connection.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 int                                    /* O - Status of call (0 = success) */
@@ -2424,8 +2422,3 @@ http_sspi_verify(
 
   return (status);
 }
-
-
-/*
- * End of "$Id: tls-sspi.c 12647 2015-05-20 18:37:52Z msweet $".
- */
index 14b0260..c1db80d 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: tls.c 12136 2014-08-29 15:19:40Z msweet $"
- *
  * TLS routines for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -105,8 +103,3 @@ httpSaveCredentials(const char *path, cups_array_t *credentials, const char *com
   return (-1);
 }
 #endif /* HAVE_SSL */
-
-
-/*
- * End of "$Id: tls.c 12136 2014-08-29 15:19:40Z msweet $".
- */
index 56cc1de..9197261 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: tlscheck.c 12688 2015-06-03 17:31:30Z msweet $"
- *
  * TLS check program for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -53,7 +51,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
                host[256],              /* Hostname */
                userpass[256],          /* Username/password */
                resource[256];          /* Resource path */
-  int          tls_options = _HTTP_TLS_NONE,
+  int          af = AF_UNSPEC,         /* Address family */
+               tls_options = _HTTP_TLS_NONE,
                                        /* TLS options */
                verbose = 0;            /* Verbosity */
   ipp_t                *request,               /* IPP Get-Printer-Attributes request */
@@ -95,6 +94,14 @@ main(int  argc,                              /* I - Number of command-line arguments */
     {
       verbose = 1;
     }
+    else if (!strcmp(argv[i], "-4"))
+    {
+      af = AF_INET;
+    }
+    else if (!strcmp(argv[i], "-6"))
+    {
+      af = AF_INET6;
+    }
     else if (argv[i][0] == '-')
     {
       printf("tlscheck: Unknown option '%s'.\n", argv[i]);
@@ -135,7 +142,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   _httpTLSSetOptions(tls_options);
 
-  http = httpConnect2(server, port, NULL, AF_UNSPEC, HTTP_ENCRYPTION_ALWAYS, 1, 30000, NULL);
+  http = httpConnect2(server, port, NULL, af, HTTP_ENCRYPTION_ALWAYS, 1, 30000, NULL);
   if (!http)
   {
     printf("%s: ERROR (%s)\n", server, cupsLastErrorString());
@@ -725,6 +732,8 @@ usage(void)
   puts("  --no-tls10  Disable TLS/1.0");
   puts("  --rc4       Allow RC4 encryption");
   puts("  --verbose   Be verbose");
+  puts("  -4          Connect using IPv4 addresses only");
+  puts("  -6          Connect using IPv6 addresses only");
   puts("  -v          Be verbose");
   puts("");
   puts("The default port is 631.");
@@ -732,8 +741,3 @@ usage(void)
   exit(1);
 }
 #endif /* !HAVE_SSL */
-
-
-/*
- * End of "$Id: tlscheck.c 12688 2015-06-03 17:31:30Z msweet $".
- */
index 81b596f..2aa1a8b 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: transcode.c 12330 2014-12-09 20:57:28Z msweet $"
- *
  * Transcoding support for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -90,8 +88,7 @@ cupsCharsetToUTF8(
   * Check for valid arguments...
   */
 
-  DEBUG_printf(("2cupsCharsetToUTF8(dest=%p, src=\"%s\", maxout=%d, encoding=%d)",
-               dest, src, maxout, encoding));
+  DEBUG_printf(("2cupsCharsetToUTF8(dest=%p, src=\"%s\", maxout=%d, encoding=%d)", (void *)dest, src, maxout, encoding));
 
   if (!dest || !src || maxout < 1)
   {
@@ -354,8 +351,7 @@ cupsUTF8ToUTF32(
   * Check for valid arguments and clear output...
   */
 
-  DEBUG_printf(("2cupsUTF8ToUTF32(dest=%p, src=\"%s\", maxout=%d)", dest,
-                src, maxout));
+  DEBUG_printf(("2cupsUTF8ToUTF32(dest=%p, src=\"%s\", maxout=%d)", (void *)dest, src, maxout));
 
   if (dest)
     *dest = 0;
@@ -575,8 +571,7 @@ cupsUTF32ToUTF8(
   * Check for valid arguments and clear output...
   */
 
-  DEBUG_printf(("2cupsUTF32ToUTF8(dest=%p, src=%p, maxout=%d)", dest, src,
-                maxout));
+  DEBUG_printf(("2cupsUTF32ToUTF8(dest=%p, src=%p, maxout=%d)", (void *)dest, (void *)src, maxout));
 
   if (dest)
     *dest = '\0';
@@ -713,8 +708,3 @@ cupsUTF32ToUTF8(
 
   return ((int)(dest - start));
 }
-
-
-/*
- * End of "$Id: transcode.c 12330 2014-12-09 20:57:28Z msweet $"
- */
index da95d0c..20d13db 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: transcode.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Transcoding definitions for CUPS.
  *
- *   Transcoding definitions for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_TRANSCODE_H_
@@ -74,8 +72,3 @@ extern int    cupsUTF32ToUTF8(cups_utf8_t *dest,
 #  endif /* __cplusplus */
 
 #endif /* !_CUPS_TRANSCODE_H_ */
-
-
-/*
- * End of "$Id: transcode.h 10996 2013-05-29 11:51:34Z msweet $"
- */
index 55e6964..9a23d74 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: usersys.c 13030 2016-01-04 14:35:45Z msweet $"
- *
  * User, system, and password routines for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
  * Local constants...
  */
 
+#ifdef __APPLE__
+#  define kCUPSPrintingPrefs   CFSTR("org.cups.PrintingPrefs")
+#  define kAllowAnyRootKey     CFSTR("AllowAnyRoot")
+#  define kAllowExpiredCertsKey        CFSTR("AllowExpiredCerts")
+#  define kEncryptionKey       CFSTR("Encryption")
+#  define kGSSServiceNameKey   CFSTR("GSSServiceName")
+#  define kSSLOptionsKey       CFSTR("SSLOptions")
+#  define kTrustOnFirstUseKey  CFSTR("TrustOnFirstUse")
+#  define kValidateCertsKey    CFSTR("ValidateCerts")
+#endif /* __APPLE__ */
+
 #define _CUPS_PASSCHAR '*'             /* Character that is echoed for password */
 
 
@@ -47,7 +56,8 @@ typedef struct _cups_client_conf_s    /**** client.conf config data ****/
 #ifdef HAVE_SSL
   int                  ssl_options;    /* SSLOptions values */
 #endif /* HAVE_SSL */
-  int                  any_root,       /* Allow any (e.g., self-signed) root */
+  int                  trust_first,    /* Trust on first use? */
+                       any_root,       /* Allow any (e.g., self-signed) root */
                        expired_certs,  /* Allow expired certs */
                        validate_certs; /* Validate certificates */
   http_encryption_t    encryption;     /* Encryption setting */
@@ -65,6 +75,11 @@ typedef struct _cups_client_conf_s   /**** client.conf config data ****/
  * Local functions...
  */
 
+#ifdef __APPLE__
+static int     cups_apple_get_boolean(CFStringRef key, int *value);
+static int     cups_apple_get_string(CFStringRef key, char *value, size_t valsize);
+#endif /* __APPLE__ */
+static int     cups_boolean_value(const char *value);
 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);
@@ -141,7 +156,7 @@ cupsGetPassword(const char *prompt) /* I - Prompt string */
  * the @link cupsSetPasswordCB@ or @link cupsSetPasswordCB2@ functions need to
  * do so in each thread for the same function to be used.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 const char *                           /* O - Password */
@@ -199,7 +214,7 @@ cupsServer(void)
  * in a program. Multi-threaded programs that override the callback need to do
  * so in each thread for the same callback to be used.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 void
@@ -223,7 +238,7 @@ cupsSetClientCertCB(
  * program. Multi-threaded programs that override the setting need to do so in
  * each thread for the same setting to be used.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 int                                    /* O - Status of call (0 = success) */
@@ -311,7 +326,7 @@ cupsSetPasswordCB(cups_password_cb_t cb)/* I - Callback function */
  * in a program. Multi-threaded programs that override the callback need to do
  * so in each thread for the same callback to be used.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 void
@@ -416,7 +431,7 @@ cupsSetServer(const char *server)   /* I - Server name */
  * in a program. Multi-threaded programs that override the callback need to do
  * so in each thread for the same callback to be used.
  *
- * @since CUPS 1.5/OS X 10.7@
+ * @since CUPS 1.5/macOS 10.7@
  */
 
 void
@@ -461,7 +476,7 @@ cupsSetUser(const char *user)               /* I - User name */
  * Setting the string to NULL forces the default value containing the CUPS
  * version, IPP version, and operating system version and architecture.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 void
@@ -536,7 +551,7 @@ cupsUser(void)
 /*
  * 'cupsUserAgent()' - Return the default HTTP User-Agent string.
  *
- * @since CUPS 1.7/OS X 10.9@
+ * @since CUPS 1.7/macOS 10.9@
  */
 
 const char *                           /* O - User-Agent string */
@@ -925,6 +940,9 @@ _cupsSetDefaults(void)
     strlcpy(cg->gss_service_name, cc.gss_service_name, sizeof(cg->gss_service_name));
 #endif /* HAVE_GSSAPI */
 
+  if (cg->trust_first < 0)
+    cg->trust_first = cc.trust_first;
+
   if (cg->any_root < 0)
     cg->any_root = cc.any_root;
 
@@ -940,6 +958,57 @@ _cupsSetDefaults(void)
 }
 
 
+#ifdef __APPLE__
+/*
+ * 'cups_apple_get_boolean()' - Get a boolean setting from the CUPS preferences.
+ */
+
+static int                             /* O - 1 if set, 0 otherwise */
+cups_apple_get_boolean(
+    CFStringRef key,                   /* I - Key (name) */
+    int         *value)                        /* O - Boolean value */
+{
+  Boolean      bval,                   /* Preference value */
+               bval_set;               /* Value is set? */
+
+
+  bval = CFPreferencesGetAppBooleanValue(key, kCUPSPrintingPrefs, &bval_set);
+
+  if (bval_set)
+    *value = (int)bval;
+
+  return ((int)bval_set);
+}
+
+
+/*
+ * 'cups_apple_get_string()' - Get a string setting from the CUPS preferences.
+ */
+
+static int                             /* O - 1 if set, 0 otherwise */
+cups_apple_get_string(
+    CFStringRef key,                   /* I - Key (name) */
+    char        *value,                        /* O - String value */
+    size_t      valsize)               /* I - Size of value buffer */
+{
+  CFStringRef  sval;                   /* String value */
+
+
+  if ((sval = CFPreferencesCopyAppValue(key, kCUPSPrintingPrefs)) != NULL)
+  {
+    Boolean result = CFStringGetCString(sval, value, (CFIndex)valsize, kCFStringEncodingUTF8);
+
+    CFRelease(sval);
+
+    if (result)
+      return (1);
+  }
+
+  return (0);
+}
+#endif /* __APPLE__ */
+
+
 /*
  * 'cups_boolean_value()' - Convert a string to a boolean value.
  */
@@ -962,6 +1031,9 @@ cups_finalize_client_conf(
   const char   *value;                 /* Environment variable */
 
 
+  if ((value = getenv("CUPS_TRUSTFIRST")) != NULL)
+    cc->trust_first = cups_boolean_value(value);
+
   if ((value = getenv("CUPS_ANYROOT")) != NULL)
     cc->any_root = cups_boolean_value(value);
 
@@ -989,6 +1061,9 @@ cups_finalize_client_conf(
   * Then apply defaults for those values that haven't been set...
   */
 
+  if (cc->trust_first < 0)
+    cc->trust_first = 1;
+
   if (cc->any_root < 0)
     cc->any_root = 1;
 
@@ -996,7 +1071,7 @@ cups_finalize_client_conf(
     cc->encryption = HTTP_ENCRYPTION_IF_REQUESTED;
 
   if (cc->expired_certs < 0)
-    cc->expired_certs = 1;
+    cc->expired_certs = 0;
 
 #ifdef HAVE_GSSAPI
   if (!cc->gss_service_name[0])
@@ -1011,10 +1086,7 @@ cups_finalize_client_conf(
     * domain socket if it exists and has the right permissions...
     */
 
-    struct stat        sockinfo;               /* Domain socket information */
-
-    if (!stat(CUPS_DEFAULT_DOMAINSOCKET, &sockinfo) &&
-       (sockinfo.st_mode & (S_IROTH | S_IWOTH)) == (S_IROTH | S_IWOTH))
+    if (!access(CUPS_DEFAULT_DOMAINSOCKET, R_OK))
       cups_set_server_name(cc, CUPS_DEFAULT_DOMAINSOCKET);
     else
 #endif /* CUPS_DEFAULT_DOMAINSOCKET */
@@ -1089,9 +1161,38 @@ cups_init_client_conf(
   memset(cc, 0, sizeof(_cups_client_conf_t));
 
   cc->encryption     = (http_encryption_t)-1;
+  cc->trust_first    = -1;
   cc->any_root       = -1;
   cc->expired_certs  = -1;
   cc->validate_certs = -1;
+
+ /*
+  * Load settings from the org.cups.PrintingPrefs plist (which trump
+  * everything...)
+  */
+
+#ifdef __APPLE__
+  char sval[1024];                     /* String value */
+  int  bval;                           /* Boolean value */
+
+  if (cups_apple_get_boolean(kAllowAnyRootKey, &bval))
+    cc->any_root = bval;
+
+  if (cups_apple_get_boolean(kAllowExpiredCertsKey, &bval))
+    cc->expired_certs = bval;
+
+  if (cups_apple_get_string(kEncryptionKey, sval, sizeof(sval)))
+    cups_set_encryption(cc, sval);
+
+  if (cups_apple_get_string(kSSLOptionsKey, sval, sizeof(sval)))
+    cups_set_ssl_options(cc, sval);
+
+  if (cups_apple_get_boolean(kTrustOnFirstUseKey, &bval))
+    cc->trust_first = bval;
+
+  if (cups_apple_get_boolean(kValidateCertsKey, &bval))
+    cc->validate_certs = bval;
+#endif /* __APPLE__ */
 }
 
 
@@ -1120,7 +1221,7 @@ cups_read_client_conf(
       cups_set_encryption(cc, value);
 #ifndef __APPLE__
    /*
-    * The ServerName directive is not supported on OS X due to app
+    * The ServerName directive is not supported on macOS due to app
     * sandboxing restrictions, i.e. not all apps request network access.
     */
     else if (!_cups_strcasecmp(line, "ServerName") && value)
@@ -1128,6 +1229,8 @@ cups_read_client_conf(
 #endif /* !__APPLE__ */
     else if (!_cups_strcasecmp(line, "User") && value)
       cups_set_user(cc, value);
+    else if (!_cups_strcasecmp(line, "TrustOnFirstUse") && value)
+      cc->trust_first = cups_boolean_value(value);
     else if (!_cups_strcasecmp(line, "AllowAnyRoot") && value)
       cc->any_root = cups_boolean_value(value);
     else if (!_cups_strcasecmp(line, "AllowExpiredCerts") &&
@@ -1268,7 +1371,7 @@ cups_set_ssl_options(
 
   cc->ssl_options = options;
 
-  DEBUG_printf(("4cups_set_ssl_options(cc=%p, value=\"%s\") options=%x", cc, value, options));
+  DEBUG_printf(("4cups_set_ssl_options(cc=%p, value=\"%s\") options=%x", (void *)cc, value, options));
 }
 #endif /* HAVE_SSL */
 
@@ -1284,8 +1387,3 @@ cups_set_user(
 {
   strlcpy(cc->user, value, sizeof(cc->user));
 }
-
-
-/*
- * End of "$Id: usersys.c 13030 2016-01-04 14:35:45Z msweet $".
- */
index 2e9f688..abfb8d4 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: util.c 12884 2015-10-07 20:31:46Z msweet $"
- *
  * Printing utilities for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
 
 
 /*
- * Local functions...
- */
-
-static int     cups_get_printer_uri(http_t *http, const char *name,
-                                    char *host, int hostsize, int *port,
-                                    char *resource, int resourcesize,
-                                    int depth);
-
-
-/*
  * 'cupsCancelJob()' - Cancel a print job on the default server.
  *
  * Pass @code CUPS_JOBID_ALL@ to cancel all jobs or @code CUPS_JOBID_CURRENT@
@@ -70,7 +58,7 @@ cupsCancelJob(const char *name,               /* I - Name of printer or class */
  * Use the @link cupsLastError@ and @link cupsLastErrorString@ functions to get
  * the cause of any failure.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 ipp_status_t                           /* O - IPP status */
@@ -158,7 +146,7 @@ cupsCancelJob2(http_t     *http,    /* I - Connection to server or @code CUPS_HTTP_
  * print, use the @link cupsPrintFile2@ or @link cupsPrintFiles2@ function
  * instead.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 int                                    /* O - Job ID or 0 on error */
@@ -177,9 +165,7 @@ cupsCreateJob(
   int          job_id = 0;             /* job-id value */
 
 
-  DEBUG_printf(("cupsCreateJob(http=%p, name=\"%s\", title=\"%s\", "
-                "num_options=%d, options=%p)",
-                http, name, title, num_options, options));
+  DEBUG_printf(("cupsCreateJob(http=%p, name=\"%s\", title=\"%s\", num_options=%d, options=%p)", (void *)http, name, title, num_options, (void *)options));
 
  /*
   * Range check input...
@@ -240,7 +226,7 @@ cupsCreateJob(
  *
  * The document must have been started using @link cupsStartDocument@.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 ipp_status_t                           /* O - Status of document submission */
@@ -336,7 +322,7 @@ cupsGetDefault(void)
  * functions to get the user-defined default printer, as this function does
  * not support the lpoptions-defined default printer.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  */
 
 const char *                           /* O - Default printer or @code NULL@ */
@@ -427,7 +413,7 @@ cupsGetJobs(cups_job_t **jobs,              /* O - Job data */
  * pending, processing, or held and @code CUPS_WHICHJOBS_COMPLETED@ returns
  * jobs that are stopped, canceled, aborted, or completed.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  */
 
 int                                    /* O - Number of jobs */
@@ -692,385 +678,6 @@ cupsGetJobs2(http_t     *http,            /* I - Connection to server or @code CUPS_HTTP_D
 
 
 /*
- * 'cupsGetPPD()' - Get the PPD file for a printer on the default server.
- *
- * For classes, @code cupsGetPPD@ returns the PPD file for the first printer
- * in the class.
- *
- * The returned filename is stored in a static buffer and is overwritten with
- * each call to @code cupsGetPPD@ or @link cupsGetPPD2@.  The caller "owns" the
- * file that is created and must @code unlink@ the returned filename.
- */
-
-const char *                           /* O - Filename for PPD file */
-cupsGetPPD(const char *name)           /* I - Destination name */
-{
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-  time_t       modtime = 0;            /* Modification time */
-
-
- /*
-  * Return the PPD file...
-  */
-
-  cg->ppd_filename[0] = '\0';
-
-  if (cupsGetPPD3(CUPS_HTTP_DEFAULT, name, &modtime, cg->ppd_filename,
-                  sizeof(cg->ppd_filename)) == HTTP_STATUS_OK)
-    return (cg->ppd_filename);
-  else
-    return (NULL);
-}
-
-
-/*
- * 'cupsGetPPD2()' - Get the PPD file for a printer from the specified server.
- *
- * For classes, @code cupsGetPPD2@ returns the PPD file for the first printer
- * in the class.
- *
- * The returned filename is stored in a static buffer and is overwritten with
- * each call to @link cupsGetPPD@ or @code cupsGetPPD2@.  The caller "owns" the
- * file that is created and must @code unlink@ the returned filename.
- *
- * @since CUPS 1.1.21/OS X 10.4@
- */
-
-const char *                           /* O - Filename for PPD file */
-cupsGetPPD2(http_t     *http,          /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
-            const char *name)          /* I - Destination name */
-{
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-  time_t       modtime = 0;            /* Modification time */
-
-
-  cg->ppd_filename[0] = '\0';
-
-  if (cupsGetPPD3(http, name, &modtime, cg->ppd_filename,
-                  sizeof(cg->ppd_filename)) == HTTP_STATUS_OK)
-    return (cg->ppd_filename);
-  else
-    return (NULL);
-}
-
-
-/*
- * 'cupsGetPPD3()' - Get the PPD file for a printer on the specified
- *                   server if it has changed.
- *
- * The "modtime" parameter contains the modification time of any
- * locally-cached content and is updated with the time from the PPD file on
- * the server.
- *
- * The "buffer" parameter contains the local PPD filename.  If it contains
- * the empty string, a new temporary file is created, otherwise the existing
- * file will be overwritten as needed.  The caller "owns" the file that is
- * created and must @code unlink@ the returned filename.
- *
- * On success, @code HTTP_STATUS_OK@ is returned for a new PPD file and
- * @code HTTP_STATUS_NOT_MODIFIED@ if the existing PPD file is up-to-date.  Any other
- * status is an error.
- *
- * For classes, @code cupsGetPPD3@ returns the PPD file for the first printer
- * in the class.
- *
- * @since CUPS 1.4/OS X 10.6@
- */
-
-http_status_t                          /* O  - HTTP status */
-cupsGetPPD3(http_t     *http,          /* I  - HTTP connection or @code CUPS_HTTP_DEFAULT@ */
-            const char *name,          /* I  - Destination name */
-           time_t     *modtime,        /* IO - Modification time */
-           char       *buffer,         /* I  - Filename buffer */
-           size_t     bufsize)         /* I  - Size of filename buffer */
-{
-  int          http_port;              /* Port number */
-  char         http_hostname[HTTP_MAX_HOST];
-                                       /* Hostname associated with connection */
-  http_t       *http2;                 /* Alternate HTTP connection */
-  int          fd;                     /* PPD file */
-  char         localhost[HTTP_MAX_URI],/* Local hostname */
-               hostname[HTTP_MAX_URI], /* Hostname */
-               resource[HTTP_MAX_URI]; /* Resource name */
-  int          port;                   /* Port number */
-  http_status_t        status;                 /* HTTP status from server */
-  char         tempfile[1024] = "";    /* Temporary filename */
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-
-
- /*
-  * Range check input...
-  */
-
-  DEBUG_printf(("cupsGetPPD3(http=%p, name=\"%s\", modtime=%p(%d), buffer=%p, "
-                "bufsize=%d)", http, name, modtime,
-               modtime ? (int)*modtime : 0, buffer, (int)bufsize));
-
-  if (!name)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer name"), 1);
-    return (HTTP_STATUS_NOT_ACCEPTABLE);
-  }
-
-  if (!modtime)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No modification time"), 1);
-    return (HTTP_STATUS_NOT_ACCEPTABLE);
-  }
-
-  if (!buffer || bufsize <= 1)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad filename buffer"), 1);
-    return (HTTP_STATUS_NOT_ACCEPTABLE);
-  }
-
-#ifndef WIN32
- /*
-  * See if the PPD file is available locally...
-  */
-
-  if (http)
-    httpGetHostname(http, hostname, sizeof(hostname));
-  else
-  {
-    strlcpy(hostname, cupsServer(), sizeof(hostname));
-    if (hostname[0] == '/')
-      strlcpy(hostname, "localhost", sizeof(hostname));
-  }
-
-  if (!_cups_strcasecmp(hostname, "localhost"))
-  {
-    char       ppdname[1024];          /* PPD filename */
-    struct stat        ppdinfo;                /* PPD file information */
-
-
-    snprintf(ppdname, sizeof(ppdname), "%s/ppd/%s.ppd", cg->cups_serverroot,
-             name);
-    if (!stat(ppdname, &ppdinfo) && !access(ppdname, R_OK))
-    {
-     /*
-      * OK, the file exists and is readable, use it!
-      */
-
-      if (buffer[0])
-      {
-        unlink(buffer);
-
-       if (symlink(ppdname, buffer) && errno != EEXIST)
-        {
-          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
-
-         return (HTTP_STATUS_SERVER_ERROR);
-       }
-      }
-      else
-      {
-        int            tries;          /* Number of tries */
-        const char     *tmpdir;        /* TMPDIR environment variable */
-       struct timeval  curtime;        /* Current time */
-
-       /*
-       * Previously we put root temporary files in the default CUPS temporary
-       * directory under /var/spool/cups.  However, since the scheduler cleans
-       * out temporary files there and runs independently of the user apps, we
-       * don't want to use it unless specifically told to by cupsd.
-       */
-
-       if ((tmpdir = getenv("TMPDIR")) == NULL)
-#  ifdef __APPLE__
-         tmpdir = "/private/tmp";      /* /tmp is a symlink to /private/tmp */
-#  else
-          tmpdir = "/tmp";
-#  endif /* __APPLE__ */
-
-       /*
-       * Make the temporary name using the specified directory...
-       */
-
-       tries = 0;
-
-       do
-       {
-        /*
-         * Get the current time of day...
-         */
-
-         gettimeofday(&curtime, NULL);
-
-        /*
-         * Format a string using the hex time values...
-         */
-
-         snprintf(buffer, bufsize, "%s/%08lx%05lx", tmpdir,
-                  (unsigned long)curtime.tv_sec,
-                  (unsigned long)curtime.tv_usec);
-
-        /*
-         * Try to make a symlink...
-         */
-
-         if (!symlink(ppdname, buffer))
-           break;
-
-         tries ++;
-       }
-       while (tries < 1000);
-
-        if (tries >= 1000)
-       {
-          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
-
-         return (HTTP_STATUS_SERVER_ERROR);
-       }
-      }
-
-      if (*modtime >= ppdinfo.st_mtime)
-        return (HTTP_STATUS_NOT_MODIFIED);
-      else
-      {
-        *modtime = ppdinfo.st_mtime;
-       return (HTTP_STATUS_OK);
-      }
-    }
-  }
-#endif /* !WIN32 */
-
- /*
-  * Try finding a printer URI for this printer...
-  */
-
-  if (!http)
-    if ((http = _cupsConnect()) == NULL)
-      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
-
-  if (!cups_get_printer_uri(http, name, hostname, sizeof(hostname), &port,
-                            resource, sizeof(resource), 0))
-    return (HTTP_STATUS_NOT_FOUND);
-
-  DEBUG_printf(("2cupsGetPPD3: Printer hostname=\"%s\", port=%d", hostname,
-                port));
-
-  if (cupsServer()[0] == '/' && !_cups_strcasecmp(hostname, "localhost") && port == ippPort())
-  {
-   /*
-    * Redirect localhost to domain socket...
-    */
-
-    strlcpy(hostname, cupsServer(), sizeof(hostname));
-    port = 0;
-
-    DEBUG_printf(("2cupsGetPPD3: Redirecting to \"%s\".", hostname));
-  }
-
- /*
-  * Remap local hostname to localhost...
-  */
-
-  httpGetHostname(NULL, localhost, sizeof(localhost));
-
-  DEBUG_printf(("2cupsGetPPD3: Local hostname=\"%s\"", localhost));
-
-  if (!_cups_strcasecmp(localhost, hostname))
-    strlcpy(hostname, "localhost", sizeof(hostname));
-
- /*
-  * Get the hostname and port number we are connected to...
-  */
-
-  httpGetHostname(http, http_hostname, sizeof(http_hostname));
-  http_port = httpAddrPort(http->hostaddr);
-
-  DEBUG_printf(("2cupsGetPPD3: Connection hostname=\"%s\", port=%d",
-                http_hostname, http_port));
-
- /*
-  * Reconnect to the correct server as needed...
-  */
-
-  if (!_cups_strcasecmp(http_hostname, hostname) && port == http_port)
-    http2 = http;
-  else if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC,
-                                cupsEncryption(), 1, 30000, NULL)) == NULL)
-  {
-    DEBUG_puts("1cupsGetPPD3: Unable to connect to server");
-
-    return (HTTP_STATUS_SERVICE_UNAVAILABLE);
-  }
-
- /*
-  * Get a temp file...
-  */
-
-  if (buffer[0])
-    fd = open(buffer, O_CREAT | O_TRUNC | O_WRONLY, 0600);
-  else
-    fd = cupsTempFd(tempfile, sizeof(tempfile));
-
-  if (fd < 0)
-  {
-   /*
-    * Can't open file; close the server connection and return NULL...
-    */
-
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
-
-    if (http2 != http)
-      httpClose(http2);
-
-    return (HTTP_STATUS_SERVER_ERROR);
-  }
-
- /*
-  * And send a request to the HTTP server...
-  */
-
-  strlcat(resource, ".ppd", sizeof(resource));
-
-  if (*modtime > 0)
-    httpSetField(http2, HTTP_FIELD_IF_MODIFIED_SINCE,
-                 httpGetDateString(*modtime));
-
-  status = cupsGetFd(http2, resource, fd);
-
-  close(fd);
-
- /*
-  * See if we actually got the file or an error...
-  */
-
-  if (status == HTTP_STATUS_OK)
-  {
-    *modtime = httpGetDateTime(httpGetField(http2, HTTP_FIELD_DATE));
-
-    if (tempfile[0])
-      strlcpy(buffer, tempfile, bufsize);
-  }
-  else if (status != HTTP_STATUS_NOT_MODIFIED)
-  {
-    _cupsSetHTTPError(status);
-
-    if (buffer[0])
-      unlink(buffer);
-    else if (tempfile[0])
-      unlink(tempfile);
-  }
-  else if (tempfile[0])
-    unlink(tempfile);
-
-  if (http2 != http)
-    httpClose(http2);
-
- /*
-  * Return the PPD file...
-  */
-
-  DEBUG_printf(("1cupsGetPPD3: Returning status %d", status));
-
-  return (status);
-}
-
-
-/*
  * 'cupsGetPrinters()' - Get a list of printers from the default server.
  *
  * This function is deprecated and no longer returns a list of printers - use
@@ -1090,83 +697,6 @@ cupsGetPrinters(char ***printers) /* O - Printers */
 
 
 /*
- * 'cupsGetServerPPD()' - Get an available PPD file from the server.
- *
- * This function returns the named PPD file from the server.  The
- * list of available PPDs is provided by the IPP @code CUPS_GET_PPDS@
- * operation.
- *
- * You must remove (unlink) the PPD file when you are finished with
- * it. The PPD filename is stored in a static location that will be
- * overwritten on the next call to @link cupsGetPPD@, @link cupsGetPPD2@,
- * or @link cupsGetServerPPD@.
- *
- * @since CUPS 1.3/OS X 10.5@
- */
-
-char *                                 /* O - Name of PPD file or @code NULL@ on error */
-cupsGetServerPPD(http_t     *http,     /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
-                 const char *name)     /* I - Name of PPD file ("ppd-name") */
-{
-  int                  fd;             /* PPD file descriptor */
-  ipp_t                        *request;       /* IPP request */
-  _cups_globals_t      *cg = _cupsGlobals();
-                                       /* Pointer to library globals */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!name)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No PPD name"), 1);
-
-    return (NULL);
-  }
-
-  if (!http)
-    if ((http = _cupsConnect()) == NULL)
-      return (NULL);
-
- /*
-  * Get a temp file...
-  */
-
-  if ((fd = cupsTempFd(cg->ppd_filename, sizeof(cg->ppd_filename))) < 0)
-  {
-   /*
-    * Can't open file; close the server connection and return NULL...
-    */
-
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
-
-    return (NULL);
-  }
-
- /*
-  * Get the PPD file...
-  */
-
-  request = ippNewRequest(IPP_OP_CUPS_GET_PPD);
-  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name", NULL,
-               name);
-
-  ippDelete(cupsDoIORequest(http, request, "/", -1, fd));
-
-  close(fd);
-
-  if (cupsLastError() != IPP_STATUS_OK)
-  {
-    unlink(cg->ppd_filename);
-    return (NULL);
-  }
-  else
-    return (cg->ppd_filename);
-}
-
-
-/*
  * 'cupsPrintFile()' - Print a file to a printer or class on the default server.
  */
 
@@ -1177,9 +707,7 @@ cupsPrintFile(const char    *name, /* I - Destination name */
               int           num_options,/* I - Number of options */
              cups_option_t *options)   /* I - Options */
 {
-  DEBUG_printf(("cupsPrintFile(name=\"%s\", filename=\"%s\", "
-                "title=\"%s\", num_options=%d, options=%p)",
-                name, filename, title, num_options, options));
+  DEBUG_printf(("cupsPrintFile(name=\"%s\", filename=\"%s\", title=\"%s\", num_options=%d, options=%p)", name, filename, title, num_options, (void *)options));
 
   return (cupsPrintFiles2(CUPS_HTTP_DEFAULT, name, 1, &filename, title,
                           num_options, options));
@@ -1190,7 +718,7 @@ cupsPrintFile(const char    *name, /* I - Destination name */
  * 'cupsPrintFile2()' - Print a file to a printer or class on the specified
  *                      server.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  */
 
 int                                    /* O - Job ID or 0 on error */
@@ -1202,9 +730,7 @@ cupsPrintFile2(
     int           num_options,         /* I - Number of options */
     cups_option_t *options)            /* I - Options */
 {
-  DEBUG_printf(("cupsPrintFile2(http=%p, name=\"%s\", filename=\"%s\", "
-                "title=\"%s\", num_options=%d, options=%p)",
-                http, name, filename, title, num_options, options));
+  DEBUG_printf(("cupsPrintFile2(http=%p, name=\"%s\", filename=\"%s\",  title=\"%s\", num_options=%d, options=%p)", (void *)http, name, filename, title, num_options, (void *)options));
 
   return (cupsPrintFiles2(http, name, 1, &filename, title, num_options,
                           options));
@@ -1225,9 +751,7 @@ cupsPrintFiles(
     int           num_options,         /* I - Number of options */
     cups_option_t *options)            /* I - Options */
 {
-  DEBUG_printf(("cupsPrintFiles(name=\"%s\", num_files=%d, "
-                "files=%p, title=\"%s\", num_options=%d, options=%p)",
-                name, num_files, files, title, num_options, options));
+  DEBUG_printf(("cupsPrintFiles(name=\"%s\", num_files=%d, files=%p, title=\"%s\", num_options=%d, options=%p)", name, num_files, (void *)files, title, num_options, (void *)options));
 
  /*
   * Print the file(s)...
@@ -1242,7 +766,7 @@ cupsPrintFiles(
  * 'cupsPrintFiles2()' - Print one or more files to a printer or class on the
  *                       specified server.
  *
- * @since CUPS 1.1.21/OS X 10.4@
+ * @since CUPS 1.1.21/macOS 10.4@
  */
 
 int                                    /* O - Job ID or 0 on error */
@@ -1268,9 +792,7 @@ cupsPrintFiles2(
   char         *cancel_message;        /* Error message to preserve */
 
 
-  DEBUG_printf(("cupsPrintFiles2(http=%p, name=\"%s\", num_files=%d, "
-                "files=%p, title=\"%s\", num_options=%d, options=%p)",
-                http, name, num_files, files, title, num_options, options));
+  DEBUG_printf(("cupsPrintFiles2(http=%p, name=\"%s\", num_files=%d, files=%p, title=\"%s\", num_options=%d, options=%p)", (void *)http, name, num_files, (void *)files, title, num_options, (void *)options));
 
  /*
   * Range check input...
@@ -1374,7 +896,7 @@ cupsPrintFiles2(
  * @code CUPS_FORMAT_TEXT@ are provided for the "format" argument, although
  * any supported MIME type string can be supplied.
  *
- * @since CUPS 1.4/OS X 10.6@
+ * @since CUPS 1.4/macOS 10.6@
  */
 
 http_status_t                          /* O - HTTP status of request */
@@ -1429,230 +951,3 @@ cupsStartDocument(
 
   return (status);
 }
-
-
-/*
- * 'cups_get_printer_uri()' - Get the printer-uri-supported attribute for the
- *                            first printer in a class.
- */
-
-static int                             /* O - 1 on success, 0 on failure */
-cups_get_printer_uri(
-    http_t     *http,                  /* I - Connection to server */
-    const char *name,                  /* I - Name of printer or class */
-    char       *host,                  /* I - Hostname buffer */
-    int        hostsize,               /* I - Size of hostname buffer */
-    int        *port,                  /* O - Port number */
-    char       *resource,              /* I - Resource buffer */
-    int        resourcesize,           /* I - Size of resource buffer */
-    int        depth)                  /* I - Depth of query */
-{
-  int          i;                      /* Looping var */
-  int          http_port;              /* Port number */
-  http_t       *http2;                 /* Alternate HTTP connection */
-  ipp_t                *request,               /* IPP request */
-               *response;              /* IPP response */
-  ipp_attribute_t *attr;               /* Current attribute */
-  char         uri[HTTP_MAX_URI],      /* printer-uri attribute */
-               scheme[HTTP_MAX_URI],   /* Scheme name */
-               username[HTTP_MAX_URI], /* Username:password */
-               classname[255],         /* Temporary class name */
-               http_hostname[HTTP_MAX_HOST];
-                                       /* Hostname associated with connection */
-  static const char * const requested_attrs[] =
-               {                       /* Requested attributes */
-                 "device-uri",
-                 "member-uris",
-                 "printer-uri-supported",
-                 "printer-type"
-               };
-
-
-  DEBUG_printf(("4cups_get_printer_uri(http=%p, name=\"%s\", host=%p, hostsize=%d, resource=%p, resourcesize=%d, depth=%d)", http, name, host, hostsize, resource, resourcesize, depth));
-
- /*
-  * Setup the printer URI...
-  */
-
-  if (httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, "localhost", 0, "/printers/%s", name) < HTTP_URI_STATUS_OK)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create printer-uri"), 1);
-
-    *host     = '\0';
-    *resource = '\0';
-
-    return (0);
-  }
-
-  DEBUG_printf(("5cups_get_printer_uri: printer-uri=\"%s\"", uri));
-
- /*
-  * Get the hostname and port number we are connected to...
-  */
-
-  httpGetHostname(http, http_hostname, sizeof(http_hostname));
-  http_port = httpAddrPort(http->hostaddr);
-
-  DEBUG_printf(("5cups_get_printer_uri: http_hostname=\"%s\"", http_hostname));
-
- /*
-  * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
-  * attributes:
-  *
-  *    attributes-charset
-  *    attributes-natural-language
-  *    printer-uri
-  *    requested-attributes
-  */
-
-  request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
-
-  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
-
-  ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(requested_attrs) / sizeof(requested_attrs[0]), NULL, requested_attrs);
-
- /*
-  * Do the request and get back a response...
-  */
-
-  snprintf(resource, (size_t)resourcesize, "/printers/%s", name);
-
-  if ((response = cupsDoRequest(http, request, resource)) != NULL)
-  {
-    const char *device_uri = NULL;     /* device-uri value */
-
-    if ((attr = ippFindAttribute(response, "device-uri", IPP_TAG_URI)) != NULL)
-    {
-      device_uri = attr->values[0].string.text;
-      DEBUG_printf(("5cups_get_printer_uri: device-uri=\"%s\"", device_uri));
-    }
-
-    if (device_uri &&
-        (((!strncmp(device_uri, "ipp://", 6) || !strncmp(device_uri, "ipps://", 7)) &&
-         (strstr(device_uri, "/printers/") != NULL || strstr(device_uri, "/classes/") != NULL)) ||
-         ((strstr(device_uri, "._ipp.") != NULL || strstr(device_uri, "._ipps.") != NULL) &&
-          !strcmp(device_uri + strlen(device_uri) - 5, "/cups"))))
-    {
-     /*
-      * Statically-configured shared printer.
-      */
-
-      httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(device_uri, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
-      ippDelete(response);
-
-      DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
-      return (1);
-    }
-    else if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
-    {
-     /*
-      * Get the first actual printer name in the class...
-      */
-
-      DEBUG_printf(("5cups_get_printer_uri: Got member-uris with %d values.", ippGetCount(attr)));
-
-      for (i = 0; i < attr->num_values; i ++)
-      {
-        DEBUG_printf(("5cups_get_printer_uri: member-uris[%d]=\"%s\"", i, ippGetString(attr, i, NULL)));
-
-       httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text, scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
-       if (!strncmp(resource, "/printers/", 10))
-       {
-        /*
-         * Found a printer!
-         */
-
-          ippDelete(response);
-
-         DEBUG_printf(("5cups_get_printer_uri: Found printer member with host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
-         return (1);
-       }
-      }
-
-     /*
-      * No printers in this class - try recursively looking for a printer,
-      * but not more than 3 levels deep...
-      */
-
-      if (depth < 3)
-      {
-       for (i = 0; i < attr->num_values; i ++)
-       {
-         httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text,
-                         scheme, sizeof(scheme), username, sizeof(username),
-                         host, hostsize, port, resource, resourcesize);
-         if (!strncmp(resource, "/classes/", 9))
-         {
-          /*
-           * Found a class!  Connect to the right server...
-           */
-
-           if (!_cups_strcasecmp(http_hostname, host) && *port == http_port)
-             http2 = http;
-           else if ((http2 = httpConnect2(host, *port, NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL)) == NULL)
-           {
-             DEBUG_puts("8cups_get_printer_uri: Unable to connect to server");
-
-             continue;
-           }
-
-           /*
-           * Look up printers on that server...
-           */
-
-            strlcpy(classname, resource + 9, sizeof(classname));
-
-            cups_get_printer_uri(http2, classname, host, hostsize, port,
-                                resource, resourcesize, depth + 1);
-
-           /*
-           * Close the connection as needed...
-           */
-
-           if (http2 != http)
-             httpClose(http2);
-
-            if (*host)
-             return (1);
-         }
-       }
-      }
-    }
-    else if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
-    {
-      httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(attr->values[0].string.text, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
-      ippDelete(response);
-
-      DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
-
-      if (!strncmp(resource, "/classes/", 9))
-      {
-        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found for class"), 1);
-
-       *host     = '\0';
-       *resource = '\0';
-
-        DEBUG_puts("5cups_get_printer_uri: Not returning class.");
-       return (0);
-      }
-
-      return (1);
-    }
-
-    ippDelete(response);
-  }
-
-  if (cupsLastError() != IPP_STATUS_ERROR_NOT_FOUND)
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found"), 1);
-
-  *host     = '\0';
-  *resource = '\0';
-
-  DEBUG_puts("5cups_get_printer_uri: Printer URI not found.");
-  return (0);
-}
-
-
-/*
- * End of "$Id: util.c 12884 2015-10-07 20:31:46Z msweet $".
- */
index 1e661df..ed68f82 100644 (file)
@@ -1,17 +1,15 @@
 /*
- * "$Id: versioning.h 12418 2015-01-22 15:49:23Z msweet $"
+ * API versioning definitions for CUPS.
  *
- *   API versioning definitions for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
  *
- *   Copyright 2007-2013 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _CUPS_VERSIONING_H_
  * _CUPS_API_2_0 - which add compiler-specific attributes that flag functions
  * that are deprecated, added in particular releases, or internal to CUPS.
  *
- * On OS X, the _CUPS_API_* constants are defined based on the values of
+ * On macOS, the _CUPS_API_* constants are defined based on the values of
  * the MAC_OS_X_VERSION_MIN_ALLOWED and MAC_OS_X_VERSION_MAX_ALLOWED constants
  * provided by the compiler.
  */
 
-#  if defined(__APPLE__) && !defined(_CUPS_SOURCE)
+#  if defined(__APPLE__) && !defined(_CUPS_SOURCE) && !TARGET_OS_IOS
 #    include <AvailabilityMacros.h>
 #    ifndef AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
 #      define AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER __attribute__((unavailable))
@@ -56,6 +54,9 @@
 #    ifndef AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
 #      define AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER __attribute__((unavailable))
 #    endif /* !AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER */
+#    ifndef AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
+#      define AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER __attribute__((unavailable))
+#    endif /* !AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER */
 #    define _CUPS_API_1_1_19 AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER
 #    define _CUPS_API_1_1_20 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
 #    define _CUPS_API_1_1_21 AVAILABLE_MAC_OS_X_VERSION_10_4_AND_LATER
@@ -66,6 +67,7 @@
 #    define _CUPS_API_1_6 AVAILABLE_MAC_OS_X_VERSION_10_8_AND_LATER
 #    define _CUPS_API_1_7 AVAILABLE_MAC_OS_X_VERSION_10_9_AND_LATER
 #    define _CUPS_API_2_0 AVAILABLE_MAC_OS_X_VERSION_10_10_AND_LATER
+#    define _CUPS_API_2_2 AVAILABLE_MAC_OS_X_VERSION_10_12_AND_LATER
 #  else
 #    define _CUPS_API_1_1_19
 #    define _CUPS_API_1_1_20
@@ -77,6 +79,7 @@
 #    define _CUPS_API_1_6
 #    define _CUPS_API_1_7
 #    define _CUPS_API_2_0
+#    define _CUPS_API_2_2
 #  endif /* __APPLE__ && !_CUPS_SOURCE */
 
 /*
 #  endif /* !__GNUC__ */
 
 #endif /* !_CUPS_VERSIONING_H_ */
-
-/*
- * End of "$Id: versioning.h 12418 2015-01-22 15:49:23Z msweet $".
- */
index 484dc26..a3f9e36 100644 (file)
@@ -1,16 +1,14 @@
 #
-# "$Id: Makefile 12278 2014-12-01 13:53:56Z msweet $"
+# Datafile makefile for CUPS.
 #
-#   Datafile makefile for CUPS.
+# Copyright 2007-2014 by Apple Inc.
+# Copyright 1993-2006 by Easy Software Products.
 #
-#   Copyright 2007-2014 by Apple Inc.
-#   Copyright 1993-2006 by Easy Software Products.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 include ../Makedefs
@@ -120,8 +118,3 @@ uninstall:
        -$(RMDIR) $(DATADIR)/data
        -$(RMDIR) $(DATADIR)/banners
        -$(RMDIR) $(DATADIR)
-
-
-#
-# End of "$Id: Makefile 12278 2014-12-01 13:53:56Z msweet $".
-#
index 1b0fe9f..f7d52ba 100644 (file)
@@ -1,17 +1,15 @@
 /*
- * "$Id: epson.h 624 2008-02-16 00:27:39Z msweet $"
+ * This file contains model number definitions for the CUPS sample
+ * ESC/P driver.
  *
- *   This file contains model number definitions for the CUPS sample
- *   ESC/P driver.
+ * Copyright 2007 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #define EPSON_9PIN     0               /* 9-pin dot matrix */
@@ -20,8 +18,3 @@
 #define EPSON_PHOTO    3               /* Epson Stylus Photo with ESC . */
 #define EPSON_ICOLOR   4               /* Epson Stylus Color with ESC i */
 #define EPSON_IPHOTO   5               /* Epson Stylus Photo with ESC i */
-
-
-/*
- * End of "$Id: epson.h 624 2008-02-16 00:27:39Z msweet $".
- */
index 3a5ba3d..6cae544 100644 (file)
--- a/data/hp.h
+++ b/data/hp.h
@@ -1,24 +1,17 @@
 /*
- * "$Id: hp.h 624 2008-02-16 00:27:39Z msweet $"
+ * This file contains model number definitions for the CUPS sample
+ * HP driver.
  *
- *   This file contains model number definitions for the CUPS sample
- *   HP driver.
+ * Copyright 2007 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #define HP_LASERJET    0               /* HP LaserJet */
 #define HP_DESKJET     1               /* HP DeskJet with simple color */
 #define HP_DESKJET2    2               /* HP DeskJet with CRet color */
-
-
-/*
- * End of "$Id: hp.h 624 2008-02-16 00:27:39Z msweet $".
- */
index 38cdc37..c0d9903 100644 (file)
@@ -1,17 +1,15 @@
 /*
- * "$Id: label.h 624 2008-02-16 00:27:39Z msweet $"
+ * This file contains model number definitions for the CUPS sample
+ * label printer driver.
  *
- *   This file contains model number definitions for the CUPS sample
- *   label printer driver.
+ * Copyright 2007 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #define DYMO_3x0       0               /* Dymo Labelwriter 300/330/330 Turbo */
@@ -22,7 +20,3 @@
 #define ZEBRA_CPCL      0x13            /* Zebra CPCL-based printers */
 
 #define INTELLITECH_PCL        0x20            /* Intellitech PCL-based printers */
-
-/*
- * End of "$Id: label.h 624 2008-02-16 00:27:39Z msweet $".
- */
index 6f0be82..6c0ce39 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: media.defs 343 2007-07-13 19:52:48Z mike $"
+ * Adobe standard media size definitions for the CUPS PPD file compiler.
  *
- *   Adobe standard media size definitions for the CUPS PPD file compiler.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
- *
- *   These codedinstructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   copyright law.  Distribution and use rights are outlinedin the file
- *   "LICENSE.txt" which should have beenincluded with this file.  If this
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These codedinstructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * copyright law.  Distribution and use rights are outlinedin the file
+ * "LICENSE.txt" which should have beenincluded with this file.  If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #media "3x5/3 x 5" 216 360
@@ -87,9 +85,9 @@
 #media "C5/Envelope C5" 459 649
 #media "C6/Envelope C6" 323 459
 #media "DL/Envelope DL" 312 624
-#media "DoublePostcard/Postcard Double " 567 420
+#media "DoublePostcard/Postcard Double" 567 420
 #media "DoublePostcardRotated/Postcard Double Long Edge" 420 567
-#media "Env10/Envelope #10 " 297 684
+#media "Env10/Envelope #10" 297 684
 #media "Env11/Envelope #11" 324 747
 #media "Env12/Envelope #12" 342 792
 #media "Env14/Envelope #14" 360 828
 #media "EnvKaku3Rotated/Envelope Kaku3 Long Edge" 785 612
 #media "EnvMonarch/Envelope Monarch" 279 540
 #media "EnvPersonal/Envelope Personal" 261 468
-#media "EnvPRC1/Envelope PRC1 " 289 468
+#media "EnvPRC1/Envelope PRC1" 289 468
 #media "EnvPRC1Rotated/Envelope PRC1 Long Edge" 468 289
 #media "EnvPRC2/Envelope PRC2" 289 499
 #media "EnvPRC2Rotated/Envelope PRC2 Long Edge" 499 289
 #media "w167h288/Shipping Address" 167 288
 #media "w162h540/Internet Postage 2-Part" 162 540
 #media "w162h504/Internet Postage 3-Part" 162 504
-#media "w41h248/File Folder " 41 248
+#media "w41h248/File Folder" 41 248
 #media "w41h144/Hanging Folder" 41 144
 #media "w153h198/3.5\" Disk" 153 198
-
-
-/*
- * End of "$Id: media.defs 343 2007-07-13 19:52:48Z mike $".
- */
index c4fdd76..97f530d 100644 (file)
@@ -1,16 +1,14 @@
 #
-# "$Id: Makefile 1725 2009-10-15 18:50:47Z msweet $"
+# Desktop makefile for CUPS.
 #
-#   Desktop makefile for CUPS.
+# Copyright 2007-2009 by Apple Inc.
+# Copyright 1993-2006 by Easy Software Products.
 #
-#   Copyright 2007-2009 by Apple Inc.
-#   Copyright 1993-2006 by Easy Software Products.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 include ../Makedefs
@@ -128,8 +126,3 @@ uninstall:
                $(RM) $(BUILDROOT)$(ICONDIR)/hicolor/64x64/apps/cups.png; \
                $(RM) $(BUILDROOT)$(ICONDIR)/hicolor/128x128/apps/cups.png; \
        fi
-
-
-#
-# End of "$Id: Makefile 1725 2009-10-15 18:50:47Z msweet $".
-#
index 2d521fa..2587543 100644 (file)
@@ -33,6 +33,8 @@ Name[ja]=印刷の管理
 Comment[ja]=CUPS Web インタフェース
 Name[pl]=Zarządzanie drukowaniem
 Comment[pl]=Interfejs WWW CUPS
+Name[pt_BR]=Gerenciador de impressão
+Comment[pt_BR]=Interface web do CUPS
 Name[ru]=Настройка печати
 Comment[ru]=Настройка CUPS
 Name[sv]=Hantera skrivare
index a6ba24d..dc5add4 100644 (file)
@@ -1,9 +1,7 @@
 #
-# "$Id: Makefile 11930 2014-06-16 15:33:00Z msweet $"
-#
 # Documentation makefile for CUPS.
 #
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1997-2007 by Easy Software Products.
 #
 # These coded instructions, statements, and computer programs are the
@@ -46,17 +44,14 @@ HELPIMAGES  =       \
                        images/smiley.jpg
 HELPFILES      =       \
                        help/accounting.html \
+                       help/api-admin.html \
                        help/api-array.html \
-                       help/api-cgi.html \
                        help/api-cups.html \
-                       help/api-driver.html \
                        help/api-filedir.html \
                        help/api-filter.html \
                        help/api-httpipp.html \
-                       help/api-mime.html \
                        help/api-overview.html \
                        help/api-ppd.html \
-                       help/api-ppdc.html \
                        help/api-raster.html \
                        help/cgi.html \
                        help/glossary.html \
@@ -114,7 +109,6 @@ HELPFILES   =       \
                        help/security.html \
                        help/sharing.html \
                        help/spec-banner.html \
-                       help/spec-cmp.html \
                        help/spec-command.html \
                        help/spec-design.html \
                        help/spec-ipp.html \
@@ -255,8 +249,3 @@ docset:
        cp $(HELPFILES) ../org.cups.docset/Contents/Resources/Documentation/help
        cp cups-printable.css ../org.cups.docset/Contents/Resources/Documentation
        cp $(HELPIMAGES) ../org.cups.docset/Contents/Resources/Documentation/images
-
-
-#
-# End of Makefile.
-#
index c37edd8..e917008 100644 (file)
@@ -23,8 +23,8 @@
     </div>
     <div class="body">
       <div class="row">
-       <h1>CUPS 2.0.2</h1>
-       <p>CUPS basiert auf Standards, Open Source Drucksystem entwickelt durch <a href="http://www.apple.com/">Apple Inc.</a> für OS X<sup>&reg;</sup> und andere UNIX<sup>&reg;</sup>-artige Betriebssysteme.</p>
+       <h1>CUPS @CUPS_VERSION@</h1>
+       <p>CUPS basiert auf Standards, Open Source Drucksystem entwickelt durch <a href="http://www.apple.com/">Apple Inc.</a> für macOS<sup>&reg;</sup> und andere UNIX<sup>&reg;</sup>-artige Betriebssysteme.</p>
       </div>
       <div class="row">
        <div class="thirds">
index 4faafe8..7cc446d 100644 (file)
@@ -24,7 +24,7 @@
     <div class="body">
       <div class="row">
        <h1>CUPS @CUPS_VERSION@</h1>
-       <p>CUPS es el sistema de impresi&oacute;n de c&oacute;digo abierto basado en est&aacute;ndares desarrollado por <a href="http://www.apple.com/">Apple Inc.</a> para OS X<sup>&reg;</sup> y otros sistemas operativos tipo UNIX<sup>&reg;</sup>.</p>
+       <p>CUPS es el sistema de impresi&oacute;n de c&oacute;digo abierto basado en est&aacute;ndares desarrollado por <a href="http://www.apple.com/">Apple Inc.</a> para macOS<sup>&reg;</sup> y otros sistemas operativos tipo UNIX<sup>&reg;</sup>.</p>
       </div>
       <div class="row">
        <div class="thirds">
@@ -35,9 +35,9 @@
        </div>
        <div class="thirds">
          <h2>CUPS para administradores</h2>
-         <p><a href="admin">A&ntilde;adiendo impresoras y clases</a></p>
-         <p><a href="help/policies.html">Gestionando pol&iacute;ticas de funcionamiento</a></p>
-         <p><a href="help/network.html">Usando impresoras de red</a></p>
+         <p><a href="admin">A&ntilde;adir impresoras y clases</a></p>
+         <p><a href="help/policies.html">Gesti&oacute;n de pol&iacute;ticas de funcionamiento</a></p>
+         <p><a href="help/network.html">Uso de impresoras de red</a></p>
          <p><a href="help/man-cupsd.conf.html">Referencia de cupsd.conf</a></p>
        </div>
        <div class="thirds">
diff --git a/doc/help/api-admin.html b/doc/help/api-admin.html
new file mode 100644 (file)
index 0000000..37c8330
--- /dev/null
@@ -0,0 +1,642 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<!-- SECTION: Programming -->
+<head>
+       <title>Administration APIs      </title>
+       <meta name="keywords" content="Programming">
+       <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
+       <meta name="creator" content="Mini-XML v2.8">
+<style type="text/css"><!--
+BODY {
+  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
+}
+
+H1, H2, H3, H4, H5, H6, P, TD, TH {
+  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
+}
+
+KBD {
+  font-family: monaco, courier, monospace;
+  font-weight: bold;
+}
+
+PRE {
+  font-family: monaco, courier, monospace;
+}
+
+PRE.command {
+  border: dotted thin #7f7f7f;
+  margin-left: 36pt;
+  padding: 10px;
+}
+
+P.compact {
+  margin: 0;
+}
+
+P.example {
+  font-style: italic;
+  margin-left: 36pt;
+}
+
+DL.man DD {
+  margin-left: 5em;
+}
+
+DL.man DT {
+  margin-left: 0;
+}
+
+PRE.man {
+  margin: 0;
+}
+
+PRE.example {
+  background: #eeeeee;
+  border: dotted thin #999999;
+  margin-left: 36pt;
+  padding: 10pt;
+}
+
+PRE.command EM, PRE.example EM {
+  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
+}
+
+P.command {
+  font-family: monaco, courier, monospace;
+  margin-left: 36pt;
+}
+
+P.formula {
+  font-style: italic;
+  margin-left: 36pt;
+}
+
+BLOCKQUOTE {
+  background: #eeeeee;
+  border: solid thin #999999;
+  padding: 10pt;
+}
+
+A IMG {
+  border: none;
+}
+
+A:link:hover IMG {
+  background: #f0f0f0;
+  border-radius: 10px;
+  -moz-border-radius: 10px;
+}
+
+A:link, A:visited {
+  font-weight: inherit;
+  text-decoration: none;
+}
+
+A:link:hover, A:visited:hover, A:active {
+  text-decoration: underline;
+}
+
+SUB, SUP {
+  font-size: 50%;
+}
+
+TR.data, TD.data, TR.data TD {
+  margin-top: 10pt;
+  padding: 5pt;
+  border-bottom: solid 1pt #999999;
+}
+
+TR.data TH {
+  border-bottom: solid 1pt #999999;
+  padding-top: 10pt;
+  padding-left: 5pt;
+  text-align: left;
+}
+
+DIV.table TABLE {
+  border: solid thin #999999;
+  border-collapse: collapse;
+  border-spacing: 0;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+DIV.table CAPTION {
+  caption-side: top;
+  font-size: 120%;
+  font-style: italic;
+  font-weight: bold;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+DIV.table TABLE TD {
+  border: solid thin #cccccc;
+  padding-top: 5pt;
+}
+
+DIV.table TABLE TH {
+  background: #cccccc;
+  border: none;
+  border-bottom: solid thin #999999;
+}
+
+DIV.figure TABLE {
+  margin-left: auto;
+  margin-right: auto;
+}
+
+DIV.figure CAPTION {
+  caption-side: bottom;
+  font-size: 120%;
+  font-style: italic;
+  font-weight: bold;
+  margin-left: auto;
+  margin-right: auto;
+}
+
+TH.label {
+  text-align: right;
+  vertical-align: top;
+}
+
+TH.sublabel {
+  text-align: right;
+  font-weight: normal;
+}
+
+HR {
+  border: solid thin;
+}
+
+SPAN.info {
+  background: black;
+  border: thin solid black;
+  color: white;
+  font-size: 80%;
+  font-style: italic;
+  font-weight: bold;
+  white-space: nowrap;
+}
+
+H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
+  float: right;
+  font-size: 100%;
+}
+
+H1.title {
+}
+
+H2.title, H3.title {
+  border-bottom: solid 2pt #000000;
+}
+
+DIV.indent, TABLE.indent {
+  margin-top: 2em;
+  margin-left: auto;
+  margin-right: auto;
+  width: 90%;
+}
+
+TABLE.indent {
+  border-collapse: collapse;
+}
+
+TABLE.indent TD, TABLE.indent TH {
+  padding: 0;
+}
+
+TABLE.list {
+  border-collapse: collapse;
+  margin-left: auto;
+  margin-right: auto;
+  width: 90%;
+}
+
+TABLE.list TH {
+  background: white;
+  border-bottom: solid thin #cccccc;
+  color: #444444;
+  padding-top: 10pt;
+  padding-left: 5pt;
+  text-align: left;
+  vertical-align: bottom;
+  white-space: nowrap;
+}
+
+TABLE.list TH A {
+  color: #4444cc;
+}
+
+TABLE.list TD {
+  border-bottom: solid thin #eeeeee;
+  padding-top: 5pt;
+  padding-left: 5pt;
+}
+
+TABLE.list TR:nth-child(even) {
+  background: #f8f8f8;
+}
+
+TABLE.list TR:nth-child(odd) {
+  background: #f4f4f4;
+}
+
+DT {
+  margin-left: 36pt;
+  margin-top: 12pt;
+}
+
+DD {
+  margin-left: 54pt;
+}
+
+DL.category DT {
+  font-weight: bold;
+}
+
+P.summary {
+  margin-left: 36pt;
+  font-family: monaco, courier, monospace;
+}
+
+DIV.summary TABLE {
+  border: solid thin #999999;
+  border-collapse: collapse;
+  border-spacing: 0;
+  margin: 10px;
+}
+
+DIV.summary TABLE TD, DIV.summary TABLE TH {
+  border: solid thin #999999;
+  padding: 5px;
+  text-align: left;
+  vertical-align: top;
+}
+
+DIV.summary TABLE THEAD TH {
+  background: #eeeeee;
+}
+
+/* API documentation styles... */
+div.body h1 {
+  margin: 0;
+}
+div.body h2 {
+  margin-top: 1.5em;
+}
+div.body h3, div.body h4, div.body h5 {
+  margin-bottom: 0.5em;
+  margin-top: 1.5em;
+}
+.class, .enumeration, .function, .struct, .typedef, .union {
+  border-bottom: solid thin #999999;
+  margin-bottom: 0;
+  margin-top: 2em;
+}
+.description {
+  margin-top: 0.5em;
+}
+code, p.code, pre, ul.code li {
+  font-family: monaco, courier, monospace;
+  font-size: 90%;
+}
+ul.code, ul.contents, ul.subcontents {
+  list-style-type: none;
+  margin: 0;
+  padding-left: 0;
+}
+ul.code li {
+  margin: 0;
+}
+ul.contents > li {
+  margin-top: 1em;
+}
+ul.contents li ul.code, ul.contents li ul.subcontents {
+  padding-left: 2em;
+}
+div.body dl {
+  margin-left: 0;
+  margin-top: 0;
+}
+div.body dt {
+  font-style: italic;
+  margin-left: 0;
+  margin-top: 0;
+}
+div.body dd {
+  margin-bottom: 0.5em;
+}
+
+/* This is just for the HTML files generated with the framedhelp target */
+div.contents {
+  background: #e8e8e8;
+  border: solid thin black;
+  padding: 10px;
+}
+div.contents h1 {
+  font-size: 110%;
+}
+div.contents h2 {
+  font-size: 100%;
+}
+div.contents ul.contents {
+  font-size: 80%;
+}
+div.contents ul.subcontents li {
+  margin-left: 1em;
+  text-indent: -1em;
+}
+--></style>
+</head>
+<body>
+<div class='body'>
+<!--
+  Administrative API header for CUPS.
+
+  Copyright 2016 by Apple Inc.
+
+  These coded instructions, statements, and computer programs are the
+  property of Apple Inc. and are protected by Federal copyright
+  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+  which should have been included with this file.  If this file is
+  file is missing or damaged, see the license at "http://www.cups.org/".
+-->
+
+<h1 class='title'>Administrative APIs</h1>
+
+<div class='summary'><table summary='General Information'>
+<thead>
+<tr>
+       <th>Header</th>
+       <th>cups/adminutil.h</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+       <th>Library</th>
+       <td>-lcups</td>
+</tr>
+<tr>
+       <th>See Also</th>
+       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a><br>
+       Programming: <a href='api-cups.html' target='_top'>CUPS API</a><br>
+       Programming: <a href='api-httpipp.html' target='_top'>HTTP and IPP APIs</a></td>
+</tr>
+</tbody>
+</table></div>
+<h2 class="title">Contents</h2>
+<ul class="contents">
+<li><a href="#OVERVIEW">Overview</a><ul class="subcontents">
+       <li><a href="#SETTINGS">Scheduler Settings</a></li>
+       <li><a href="#DEVICES">Devices</a></li>
+</ul></li>
+<li><a href="#FUNCTIONS">Functions</a><ul class="code">
+       <li><a href="#cupsAdminCreateWindowsPPD" title="Create the Windows PPD file for a printer.">cupsAdminCreateWindowsPPD</a></li>
+       <li><a href="#cupsAdminExportSamba" title="Export a printer to Samba.">cupsAdminExportSamba</a></li>
+       <li><a href="#cupsAdminGetServerSettings" title="Get settings from the server.">cupsAdminGetServerSettings</a></li>
+       <li><a href="#cupsAdminSetServerSettings" title="Set settings on the server.">cupsAdminSetServerSettings</a></li>
+       <li><a href="#cupsGetDevices" title="Get available printer devices.">cupsGetDevices</a></li>
+</ul></li>
+<li><a href="#TYPES">Data Types</a><ul class="code">
+       <li><a href="#cups_device_cb_t" title="Device callback
+">cups_device_cb_t</a></li>
+</ul></li>
+</ul>
+<!--
+  Administrative API documentation for CUPS.
+
+  Copyright 2016 by Apple Inc.
+
+  These coded instructions, statements, and computer programs are the
+  property of Apple Inc. and are protected by Federal copyright
+  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+  which should have been included with this file.  If this file is
+  file is missing or damaged, see the license at "http://www.cups.org/".
+-->
+
+<h2 class="title"><a name="OVERVIEW">Overview</a></h2>
+
+<p>The administrative APIs provide convenience functions to perform certain administrative functions with the CUPS scheduler.</p>
+
+<blockquote><b>Note:<b>
+  <p>Administrative functions normally require administrative privileges to execute and must not be used in ordinary user applications!</p>
+</blockquote>
+
+<h3><a name="SETTINGS">Scheduler Settings</a></h3>
+
+<p>The <a href="#cupsAdminGetServerSettings"><code>cupsAdminGetServerSettings</code></a> and <a href="#cupsAdminSetServerSettings"><code>cupsAdminSetServerSettings</code></a> functions allow you to get and set simple directives and their values, respectively, in the <var>cupsd.conf</var> file for the CUPS scheduler. Settings are stored in CUPS option arrays which provide a simple list of string name/value pairs. While any simple <var>cupsd.conf</var> directive name can be specified, the following convenience names are also defined to control common complex directives:</p>
+
+<ul>
+  <li><code>CUPS_SERVER_DEBUG_LOGGING</code></li>: For <code>cupsAdminGetServerSettings</code>, a value of "1" means that the <code>LogLevel</code> directive is set to <code>debug</code> or <code>debug2</code> while a value of "0" means it is set to any other value. For <code>cupsAdminSetServerSettings</code> a value of "1" sets the <code>LogLeveL</code> to <code>debug</code> while a value of "0" sets it to <code>warn</code>.</li>
+  <li><code>CUPS_SERVER_REMOTE_ADMIN</code></li>: A value of "1" specifies that administrative requests are accepted from remote addresses while "0" specifies that requests are only accepted from local addresses (loopback interface and domain sockets).</li>
+  <li><code>CUPS_SERVER_REMOTE_ANY</code></li>: A value of "1" specifies that requests are accepts from any address while "0" specifies that requests are only accepted from the local subnet (when sharing is enabled) or local addresses (loopback interface and domain sockets).</li>
+  <li><code>CUPS_SERVER_SHARE_PRINTERS</code></li>: A value of "1" specifies that printer sharing is enabled for selected printers and remote requests are accepted while a value of "0" specifies that printer sharing is disables and remote requests are not accepted.</li>
+  <li><code>CUPS_SERVER_USER_CANCEL_ANY</code></li>: A value of "1" specifies that the default security policy allows any user to cancel any print job, regardless of the owner. A value of "0" specifies that only administrative users can cancel other user's jobs.</li>
+</ul>
+
+<blockquote><b>Note:</b>
+  <p>Changing settings will restart the CUPS scheduler.</p>
+  <p>When printer sharing or the web interface are enabled, the scheduler's launch-on-demand functionality is effectively disabled. This can affect power usage, system performance, and the security profile of a system.</p>
+</blockquote>
+
+<p>The recommended way to make changes to the <var>cupsd.conf</var> is to first call <a href="#cupsAdminGetServerSettings"><code>cupsAdminGetServerSettings</code></a>, make any changes to the returned option array, and then call <a href="#cupsAdminSetServerSettings"><code>cupsAdminSetServerSettings</code></a> to save those settings. For example, to enable the web interface:</p>
+
+<pre class="example">
+#include &lt;cups/cups.h&gt;
+#include &lt;cups/adminutil.h&gt;
+
+void
+enable_web_interface(void)
+{
+  int num_settings = 0;           /* Number of settings */
+  cups_option_t *settings = NULL; /* Settings */
+
+
+  if (!<a href="#cupsAdminGetServerSettings">cupsAdminGetServerSettings</a>(CUPS_HTTP_DEFAULT, &amp;num_settings, &amp;settings))
+  {
+    fprintf(stderr, "ERROR: Unable to get server settings: %s\n", cupsLastErrorString());
+    return;
+  }
+
+  num_settings = <a href="api-cups.html#cupsAddOption">cupsAddOption</a>("WebInterface", "Yes", num_settings, &amp;settings);
+
+  if (!<a href="#cupsAdminSetServerSettings">cupsAdminSetServerSettings</a>(CUPS_HTTP_DEFAULT, num_settings, settings))
+  {
+    fprintf(stderr, "ERROR: Unable to set server settings: %s\n", cupsLastErrorString());
+  }
+
+  <a href="api-cups.html#cupsFreeOptions">cupsFreeOptions</a>(num_settings, settings);
+}
+</pre>
+
+<h3><a name="DEVICES">Devices</a></h3>
+
+<p>Printers can be discovered through the CUPS scheduler using the <a href="#cupsGetDevices"><code>cupsGetDevices</code></a> API. Typically this API is used to locate printers to add the the system. Each device that is found will cause a supplied callback function to be executed. For example, to list the available printer devices that can be found within 30 seconds:</p>
+
+<pre class="example">
+#include &lt;cups/cups.h&gt;
+#include &lt;cups/adminutil.h&gt;
+
+
+void
+get_devices_cb(
+    const char *device_class,           /* I - Class */
+    const char *device_id,              /* I - 1284 device ID */
+    const char *device_info,            /* I - Description */
+    const char *device_make_and_model,  /* I - Make and model */
+    const char *device_uri,             /* I - Device URI */
+    const char *device_location,        /* I - Location */
+    void       *user_data)              /* I - User data */
+{
+  puts(device_uri);
+}
+
+
+void
+show_devices(void)
+{
+  <a href="#cupsGetDevices">cupsGetDevices</a>(CUPS_HTTP_DEFAULT, 30, NULL, NULL, get_devices_cb, NULL);
+}
+</pre>
+<h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
+<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="cupsAdminCreateWindowsPPD">cupsAdminCreateWindowsPPD</a></h3>
+<p class="description">Create the Windows PPD file for a printer.</p>
+<p class="code">
+char *cupsAdminCreateWindowsPPD (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *dest,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int bufsize<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>dest</dt>
+<dd class="description">Printer or class</dd>
+<dt>buffer</dt>
+<dd class="description">Filename buffer</dd>
+<dt>bufsize</dt>
+<dd class="description">Size of filename buffer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">PPD file or NULL</p>
+<h3 class="function"><span class="info">&nbsp;DEPRECATED&nbsp;</span><a name="cupsAdminExportSamba">cupsAdminExportSamba</a></h3>
+<p class="description">Export a printer to Samba.</p>
+<p class="code">
+int cupsAdminExportSamba (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *dest,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *ppd,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *samba_server,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *samba_user,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *samba_password,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;FILE *logfile<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>dest</dt>
+<dd class="description">Destination to export</dd>
+<dt>ppd</dt>
+<dd class="description">PPD file</dd>
+<dt>samba_server</dt>
+<dd class="description">Samba server</dd>
+<dt>samba_user</dt>
+<dd class="description">Samba username</dd>
+<dt>samba_password</dt>
+<dd class="description">Samba password</dd>
+<dt>logfile</dt>
+<dd class="description">Log file, if any</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 on success, 0 on failure</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsAdminGetServerSettings">cupsAdminGetServerSettings</a></h3>
+<p class="description">Get settings from the server.</p>
+<p class="code">
+int cupsAdminGetServerSettings (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int *num_settings,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cups_option_t **settings<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>num_settings</dt>
+<dd class="description">Number of settings</dd>
+<dt>settings</dt>
+<dd class="description">Settings</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 on success, 0 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The returned settings should be freed with cupsFreeOptions() when
+you are done with them.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsAdminSetServerSettings">cupsAdminSetServerSettings</a></h3>
+<p class="description">Set settings on the server.</p>
+<p class="code">
+int cupsAdminSetServerSettings (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int num_settings,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;cups_option_t *settings<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>num_settings</dt>
+<dd class="description">Number of settings</dd>
+<dt>settings</dt>
+<dd class="description">Settings</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 on success, 0 on failure</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsGetDevices">cupsGetDevices</a></h3>
+<p class="description">Get available printer devices.</p>
+<p class="code">
+ipp_status_t cupsGetDevices (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int timeout,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *include_schemes,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *exclude_schemes,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_device_cb_t">cups_device_cb_t</a> callback,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;void *user_data<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>timeout</dt>
+<dd class="description">Timeout in seconds or <code>CUPS_TIMEOUT_DEFAULT</code></dd>
+<dt>include_schemes</dt>
+<dd class="description">Comma-separated URI schemes to include or <code>CUPS_INCLUDE_ALL</code></dd>
+<dt>exclude_schemes</dt>
+<dd class="description">Comma-separated URI schemes to exclude or <code>CUPS_EXCLUDE_NONE</code></dd>
+<dt>callback</dt>
+<dd class="description">Callback function</dd>
+<dt>user_data</dt>
+<dd class="description">User data pointer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Request status - <code>IPP_OK</code> on success.</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function sends a CUPS-Get-Devices request and streams the discovered
+devices to the specified callback function. The &quot;timeout&quot; parameter controls
+how long the request lasts, while the &quot;include_schemes&quot; and &quot;exclude_schemes&quot;
+parameters provide comma-delimited lists of backends to include or omit from
+the request respectively.
+
+</p>
+<h2 class="title"><a name="TYPES">Data Types</a></h2>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cups_device_cb_t">cups_device_cb_t</a></h3>
+<p class="description">Device callback
+</p>
+<p class="code">
+typedef void (*cups_device_cb_t)(const char *device_class, const char *device_id, const char *device_info, const char *device_make_and_model, const char *device_uri, const char *device_location, void *user_data);
+</p>
+</div>
+</body>
+</html>
index 220c0f1..591ae31 100644 (file)
@@ -5,7 +5,7 @@
        <title>Array API        </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id: api-array.header 7266 2008-01-29 02:15:29Z mike $"
-
   Array API header for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
@@ -425,8 +423,6 @@ div.contents ul.subcontents li {
 </ul></li>
 </ul>
 <!--
-  "$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
-
   Array API introduction for CUPS.
 
   Copyright 2007-2011 by Apple Inc.
@@ -621,7 +617,7 @@ for (s = (char *)<a href='#cupsArrayFirst'>cupsArrayFirst</a>(array); s != NULL;
   puts(s);
 </pre>
 <h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayAdd">cupsArrayAdd</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayAdd">cupsArrayAdd</a></h3>
 <p class="description">Add an element to the array.</p>
 <p class="code">
 int cupsArrayAdd (<br>
@@ -643,7 +639,7 @@ appended at the end of the run of identical elements.  For unsorted arrays,
 the element is appended to the end of the array.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayClear">cupsArrayClear</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayClear">cupsArrayClear</a></h3>
 <p class="description">Clear the array.</p>
 <p class="code">
 void cupsArrayClear (<br>
@@ -660,7 +656,7 @@ The caller is responsible for freeing the memory used by the
 elements themselves.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayCount">cupsArrayCount</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayCount">cupsArrayCount</a></h3>
 <p class="description">Get the number of elements in the array.</p>
 <p class="code">
 int cupsArrayCount (<br>
@@ -673,7 +669,7 @@ int cupsArrayCount (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of elements</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayCurrent">cupsArrayCurrent</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayCurrent">cupsArrayCurrent</a></h3>
 <p class="description">Return the current element in the array.</p>
 <p class="code">
 void *cupsArrayCurrent (<br>
@@ -691,7 +687,7 @@ void *cupsArrayCurrent (<br>
 <a href="#cupsArrayFirst"><code>cupsArrayFirst</code></a>, or <a href="#cupsArrayIndex"><code>cupsArrayIndex</code></a>, or <a href="#cupsArrayLast"><code>cupsArrayLast</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayDelete">cupsArrayDelete</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayDelete">cupsArrayDelete</a></h3>
 <p class="description">Free all memory used by the array.</p>
 <p class="code">
 void cupsArrayDelete (<br>
@@ -707,7 +703,7 @@ void cupsArrayDelete (<br>
 elements themselves.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayDup">cupsArrayDup</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayDup">cupsArrayDup</a></h3>
 <p class="description">Duplicate the array.</p>
 <p class="code">
 <a href="#cups_array_t">cups_array_t</a> *cupsArrayDup (<br>
@@ -720,7 +716,7 @@ elements themselves.
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Duplicate array</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayFind">cupsArrayFind</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayFind">cupsArrayFind</a></h3>
 <p class="description">Find an element in the array.</p>
 <p class="code">
 void *cupsArrayFind (<br>
@@ -736,7 +732,7 @@ void *cupsArrayFind (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Element found or <code>NULL</code></p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayFirst">cupsArrayFirst</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayFirst">cupsArrayFirst</a></h3>
 <p class="description">Get the first element in the array.</p>
 <p class="code">
 void *cupsArrayFirst (<br>
@@ -749,7 +745,7 @@ void *cupsArrayFirst (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">First element or <code>NULL</code> if the array is empty</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsArrayGetIndex">cupsArrayGetIndex</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsArrayGetIndex">cupsArrayGetIndex</a></h3>
 <p class="description">Get the index of the current element.</p>
 <p class="code">
 int cupsArrayGetIndex (<br>
@@ -767,7 +763,7 @@ int cupsArrayGetIndex (<br>
 <a href="#cupsArrayFirst"><code>cupsArrayFirst</code></a>, or <a href="#cupsArrayIndex"><code>cupsArrayIndex</code></a>, or <a href="#cupsArrayLast"><code>cupsArrayLast</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsArrayGetInsert">cupsArrayGetInsert</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsArrayGetInsert">cupsArrayGetInsert</a></h3>
 <p class="description">Get the index of the last inserted element.</p>
 <p class="code">
 int cupsArrayGetInsert (<br>
@@ -780,7 +776,7 @@ int cupsArrayGetInsert (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Index of the last inserted element, starting at 0</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayIndex">cupsArrayIndex</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayIndex">cupsArrayIndex</a></h3>
 <p class="description">Get the N-th element in the array.</p>
 <p class="code">
 void *cupsArrayIndex (<br>
@@ -796,7 +792,7 @@ void *cupsArrayIndex (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">N-th element or <code>NULL</code></p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayInsert">cupsArrayInsert</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayInsert">cupsArrayInsert</a></h3>
 <p class="description">Insert an element in the array.</p>
 <p class="code">
 int cupsArrayInsert (<br>
@@ -818,7 +814,7 @@ inserted at the beginning of the run of identical elements.  For unsorted
 arrays, the element is inserted at the beginning of the array.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayLast">cupsArrayLast</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayLast">cupsArrayLast</a></h3>
 <p class="description">Get the last element in the array.</p>
 <p class="code">
 void *cupsArrayLast (<br>
@@ -831,7 +827,7 @@ void *cupsArrayLast (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Last element or <code>NULL</code> if the array is empty</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayNew">cupsArrayNew</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayNew">cupsArrayNew</a></h3>
 <p class="description">Create a new array.</p>
 <p class="code">
 <a href="#cups_array_t">cups_array_t</a> *cupsArrayNew (<br>
@@ -854,7 +850,7 @@ data pointer argument can safely be omitted when not required so functions
 like <code>strcmp</code> can be used for sorted string arrays.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsArrayNew2">cupsArrayNew2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsArrayNew2">cupsArrayNew2</a></h3>
 <p class="description">Create a new array with hash.</p>
 <p class="code">
 <a href="#cups_array_t">cups_array_t</a> *cupsArrayNew2 (<br>
@@ -886,7 +882,7 @@ The hash function (&quot;h&quot;) is used to implement cached lookups with the
 specified hash size (&quot;hsize&quot;).
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="cupsArrayNew3">cupsArrayNew3</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="cupsArrayNew3">cupsArrayNew3</a></h3>
 <p class="description">Create a new array with hash and/or free function.</p>
 <p class="code">
 <a href="#cups_array_t">cups_array_t</a> *cupsArrayNew3 (<br>
@@ -930,7 +926,7 @@ The free function (&quot;cf&quot;) is used to automatically free/release element
 removed or the array is deleted.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayNext">cupsArrayNext</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayNext">cupsArrayNext</a></h3>
 <p class="description">Get the next element in the array.</p>
 <p class="code">
 void *cupsArrayNext (<br>
@@ -951,7 +947,7 @@ The next element is undefined until you call <a href="#cupsArrayFind"><code>cups
 to set the current element.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayPrev">cupsArrayPrev</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayPrev">cupsArrayPrev</a></h3>
 <p class="description">Get the previous element in the array.</p>
 <p class="code">
 void *cupsArrayPrev (<br>
@@ -972,7 +968,7 @@ The previous element is undefined until you call <a href="#cupsArrayFind"><code>
 to set the current element.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayRemove">cupsArrayRemove</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayRemove">cupsArrayRemove</a></h3>
 <p class="description">Remove an element from the array.</p>
 <p class="code">
 int cupsArrayRemove (<br>
@@ -996,7 +992,7 @@ The caller is responsible for freeing the memory used by the
 removed element.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayRestore">cupsArrayRestore</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayRestore">cupsArrayRestore</a></h3>
 <p class="description">Reset the current element to the last <a href="#cupsArraySave"><code>cupsArraySave</code></a>.</p>
 <p class="code">
 void *cupsArrayRestore (<br>
@@ -1009,7 +1005,7 @@ void *cupsArrayRestore (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New current element</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArraySave">cupsArraySave</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArraySave">cupsArraySave</a></h3>
 <p class="description">Mark the current element for a later <a href="#cupsArrayRestore"><code>cupsArrayRestore</code></a>.</p>
 <p class="code">
 int cupsArraySave (<br>
@@ -1030,7 +1026,7 @@ to set the current element.<br>
 The save/restore stack is guaranteed to be at least 32 elements deep.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsArrayUserData">cupsArrayUserData</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsArrayUserData">cupsArrayUserData</a></h3>
 <p class="description">Return the user data for an array.</p>
 <p class="code">
 void *cupsArrayUserData (<br>
diff --git a/doc/help/api-cgi.html b/doc/help/api-cgi.html
deleted file mode 100644 (file)
index 63eb9ca..0000000
+++ /dev/null
@@ -1,1138 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Programming -->
-<head>
-       <title>CGI API  </title>
-       <meta name="keywords" content="Programming">
-       <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
-<style type="text/css"><!--
-BODY {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1, H2, H3, H4, H5, H6, P, TD, TH {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-KBD {
-  font-family: monaco, courier, monospace;
-  font-weight: bold;
-}
-
-PRE {
-  font-family: monaco, courier, monospace;
-}
-
-PRE.command {
-  border: dotted thin #7f7f7f;
-  margin-left: 36pt;
-  padding: 10px;
-}
-
-P.compact {
-  margin: 0;
-}
-
-P.example {
-  font-style: italic;
-  margin-left: 36pt;
-}
-
-DL.man DD {
-  margin-left: 5em;
-}
-
-DL.man DT {
-  margin-left: 0;
-}
-
-PRE.man {
-  margin: 0;
-}
-
-PRE.example {
-  background: #eeeeee;
-  border: dotted thin #999999;
-  margin-left: 36pt;
-  padding: 10pt;
-}
-
-PRE.command EM, PRE.example EM {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-P.command {
-  font-family: monaco, courier, monospace;
-  margin-left: 36pt;
-}
-
-P.formula {
-  font-style: italic;
-  margin-left: 36pt;
-}
-
-BLOCKQUOTE {
-  background: #eeeeee;
-  border: solid thin #999999;
-  padding: 10pt;
-}
-
-A IMG {
-  border: none;
-}
-
-A:link:hover IMG {
-  background: #f0f0f0;
-  border-radius: 10px;
-  -moz-border-radius: 10px;
-}
-
-A:link, A:visited {
-  font-weight: inherit;
-  text-decoration: none;
-}
-
-A:link:hover, A:visited:hover, A:active {
-  text-decoration: underline;
-}
-
-SUB, SUP {
-  font-size: 50%;
-}
-
-TR.data, TD.data, TR.data TD {
-  margin-top: 10pt;
-  padding: 5pt;
-  border-bottom: solid 1pt #999999;
-}
-
-TR.data TH {
-  border-bottom: solid 1pt #999999;
-  padding-top: 10pt;
-  padding-left: 5pt;
-  text-align: left;
-}
-
-DIV.table TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table CAPTION {
-  caption-side: top;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table TABLE TD {
-  border: solid thin #cccccc;
-  padding-top: 5pt;
-}
-
-DIV.table TABLE TH {
-  background: #cccccc;
-  border: none;
-  border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.figure CAPTION {
-  caption-side: bottom;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-TH.label {
-  text-align: right;
-  vertical-align: top;
-}
-
-TH.sublabel {
-  text-align: right;
-  font-weight: normal;
-}
-
-HR {
-  border: solid thin;
-}
-
-SPAN.info {
-  background: black;
-  border: thin solid black;
-  color: white;
-  font-size: 80%;
-  font-style: italic;
-  font-weight: bold;
-  white-space: nowrap;
-}
-
-H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
-  float: right;
-  font-size: 100%;
-}
-
-H1.title {
-}
-
-H2.title, H3.title {
-  border-bottom: solid 2pt #000000;
-}
-
-DIV.indent, TABLE.indent {
-  margin-top: 2em;
-  margin-left: auto;
-  margin-right: auto;
-  width: 90%;
-}
-
-TABLE.indent {
-  border-collapse: collapse;
-}
-
-TABLE.indent TD, TABLE.indent TH {
-  padding: 0;
-}
-
-TABLE.list {
-  border-collapse: collapse;
-  margin-left: auto;
-  margin-right: auto;
-  width: 90%;
-}
-
-TABLE.list TH {
-  background: white;
-  border-bottom: solid thin #cccccc;
-  color: #444444;
-  padding-top: 10pt;
-  padding-left: 5pt;
-  text-align: left;
-  vertical-align: bottom;
-  white-space: nowrap;
-}
-
-TABLE.list TH A {
-  color: #4444cc;
-}
-
-TABLE.list TD {
-  border-bottom: solid thin #eeeeee;
-  padding-top: 5pt;
-  padding-left: 5pt;
-}
-
-TABLE.list TR:nth-child(even) {
-  background: #f8f8f8;
-}
-
-TABLE.list TR:nth-child(odd) {
-  background: #f4f4f4;
-}
-
-DT {
-  margin-left: 36pt;
-  margin-top: 12pt;
-}
-
-DD {
-  margin-left: 54pt;
-}
-
-DL.category DT {
-  font-weight: bold;
-}
-
-P.summary {
-  margin-left: 36pt;
-  font-family: monaco, courier, monospace;
-}
-
-DIV.summary TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin: 10px;
-}
-
-DIV.summary TABLE TD, DIV.summary TABLE TH {
-  border: solid thin #999999;
-  padding: 5px;
-  text-align: left;
-  vertical-align: top;
-}
-
-DIV.summary TABLE THEAD TH {
-  background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
-  margin: 0;
-}
-div.body h2 {
-  margin-top: 1.5em;
-}
-div.body h3, div.body h4, div.body h5 {
-  margin-bottom: 0.5em;
-  margin-top: 1.5em;
-}
-.class, .enumeration, .function, .struct, .typedef, .union {
-  border-bottom: solid thin #999999;
-  margin-bottom: 0;
-  margin-top: 2em;
-}
-.description {
-  margin-top: 0.5em;
-}
-code, p.code, pre, ul.code li {
-  font-family: monaco, courier, monospace;
-  font-size: 90%;
-}
-ul.code, ul.contents, ul.subcontents {
-  list-style-type: none;
-  margin: 0;
-  padding-left: 0;
-}
-ul.code li {
-  margin: 0;
-}
-ul.contents > li {
-  margin-top: 1em;
-}
-ul.contents li ul.code, ul.contents li ul.subcontents {
-  padding-left: 2em;
-}
-div.body dl {
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dt {
-  font-style: italic;
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dd {
-  margin-bottom: 0.5em;
-}
-
-/* This is just for the HTML files generated with the framedhelp target */
-div.contents {
-  background: #e8e8e8;
-  border: solid thin black;
-  padding: 10px;
-}
-div.contents h1 {
-  font-size: 110%;
-}
-div.contents h2 {
-  font-size: 100%;
-}
-div.contents ul.contents {
-  font-size: 80%;
-}
-div.contents ul.subcontents li {
-  margin-left: 1em;
-  text-indent: -1em;
-}
---></style>
-</head>
-<body>
-<div class='body'>
-<!--
-  "$Id: api-array.header 8087 2008-10-27 21:37:05Z mike $"
-
-  CGI API header for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h1 class='title'>CGI API</h1>
-
-<div class='summary'><table summary='General Information'>
-<thead>
-<tr>
-       <th>Header</th>
-       <th>cups/cgi.h</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-       <th>Library</th>
-       <td>-lcupscgi</td>
-</tr>
-<tr>
-       <th>See Also</th>
-       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
-</tr>
-</tbody>
-</table></div>
-<h2 class="title">Contents</h2>
-<ul class="contents">
-<li><a href="#OVERVIEW">Overview</a></li>
-<li><a href="#FUNCTIONS">Functions</a><ul class="code">
-       <li><a href="#cgiCheckVariables" title="Check for the presence of &quot;required&quot; variables.">cgiCheckVariables</a></li>
-       <li><a href="#cgiClearVariables" title="Clear all form variables.">cgiClearVariables</a></li>
-       <li><a href="#cgiCompileSearch" title="Compile a search string.">cgiCompileSearch</a></li>
-       <li><a href="#cgiCopyTemplateFile" title="Copy a template file and replace all the
-'{variable}' strings with the variable value.">cgiCopyTemplateFile</a></li>
-       <li><a href="#cgiCopyTemplateLang" title="Copy a template file using a language...">cgiCopyTemplateLang</a></li>
-       <li><a href="#cgiDoSearch" title="Do a search of some text.">cgiDoSearch</a></li>
-       <li><a href="#cgiEndHTML" title="End a HTML page.">cgiEndHTML</a></li>
-       <li><a href="#cgiEndMultipart" title="End the delivery of a multipart web page.">cgiEndMultipart</a></li>
-       <li><a href="#cgiFormEncode" title="Encode a string as a form variable.">cgiFormEncode</a></li>
-       <li><a href="#cgiFreeSearch" title="Free a compiled search context.">cgiFreeSearch</a></li>
-       <li><a href="#cgiGetArray" title="Get an element from a form array.">cgiGetArray</a></li>
-       <li><a href="#cgiGetAttributes" title="Get the list of attributes that are needed
-by the template file.">cgiGetAttributes</a></li>
-       <li><a href="#cgiGetCookie" title="Get a cookie value.">cgiGetCookie</a></li>
-       <li><a href="#cgiGetFile" title="Get the file (if any) that was submitted in the form.">cgiGetFile</a></li>
-       <li><a href="#cgiGetIPPObjects" title="Get the objects in an IPP response.">cgiGetIPPObjects</a></li>
-       <li><a href="#cgiGetSize" title="Get the size of a form array value.">cgiGetSize</a></li>
-       <li><a href="#cgiGetTemplateDir" title="Get the templates directory...">cgiGetTemplateDir</a></li>
-       <li><a href="#cgiGetVariable" title="Get a CGI variable from the database.">cgiGetVariable</a></li>
-       <li><a href="#cgiInitialize" title="Initialize the CGI variable &quot;database&quot;.">cgiInitialize</a></li>
-       <li><a href="#cgiIsPOST" title="Determine whether this page was POSTed.">cgiIsPOST</a></li>
-       <li><a href="#cgiMoveJobs" title="Move one or more jobs.">cgiMoveJobs</a></li>
-       <li><a href="#cgiPrintCommand" title="Print a CUPS command job.">cgiPrintCommand</a></li>
-       <li><a href="#cgiPrintTestPage" title="Print a test page.">cgiPrintTestPage</a></li>
-       <li><a href="#cgiRewriteURL" title="Rewrite a printer URI into a web browser URL...">cgiRewriteURL</a></li>
-       <li><a href="#cgiSetArray" title="Set array element N to the specified string.">cgiSetArray</a></li>
-       <li><a href="#cgiSetCookie" title="Set a cookie value.">cgiSetCookie</a></li>
-       <li><a href="#cgiSetIPPObjectVars" title="Set CGI variables from an IPP object.">cgiSetIPPObjectVars</a></li>
-       <li><a href="#cgiSetIPPVars" title="Set CGI variables from an IPP response.">cgiSetIPPVars</a></li>
-       <li><a href="#cgiSetServerVersion" title="Set the server name and CUPS version...">cgiSetServerVersion</a></li>
-       <li><a href="#cgiSetSize" title="Set the array size.">cgiSetSize</a></li>
-       <li><a href="#cgiSetVariable" title="Set a CGI variable in the database.">cgiSetVariable</a></li>
-       <li><a href="#cgiShowIPPError" title="Show the last IPP error message.">cgiShowIPPError</a></li>
-       <li><a href="#cgiShowJobs" title="Show print jobs.">cgiShowJobs</a></li>
-       <li><a href="#cgiStartHTML" title="Start a HTML page.">cgiStartHTML</a></li>
-       <li><a href="#cgiStartMultipart" title="Start a multipart delivery of a web page.">cgiStartMultipart</a></li>
-       <li><a href="#cgiSupportsMultipart" title="Does the browser support multi-part documents?">cgiSupportsMultipart</a></li>
-       <li><a href="#cgiText" title="Return localized text.">cgiText</a></li>
-       <li><a href="#helpDeleteIndex" title="Delete an index, freeing all memory used.">helpDeleteIndex</a></li>
-       <li><a href="#helpFindNode" title="Find a node in an index.">helpFindNode</a></li>
-       <li><a href="#helpLoadIndex" title="Load a help index from disk.">helpLoadIndex</a></li>
-       <li><a href="#helpSaveIndex" title="Save a help index to disk.">helpSaveIndex</a></li>
-       <li><a href="#helpSearchIndex" title="Search an index.">helpSearchIndex</a></li>
-</ul></li>
-<li><a href="#TYPES">Data Types</a><ul class="code">
-       <li><a href="#cgi_file_t" title="Uploaded file data">cgi_file_t</a></li>
-       <li><a href="#help_index_t" title="Help index structure">help_index_t</a></li>
-       <li><a href="#help_node_t" title="Help node structure...">help_node_t</a></li>
-       <li><a href="#help_word_t" title="Help word structure...">help_word_t</a></li>
-</ul></li>
-<li><a href="#STRUCTURES">Structures</a><ul class="code">
-       <li><a href="#cgi_file_s" title="Uploaded file data">cgi_file_s</a></li>
-       <li><a href="#help_index_s" title="Help index structure">help_index_s</a></li>
-       <li><a href="#help_node_s" title="Help node structure...">help_node_s</a></li>
-       <li><a href="#help_word_s" title="Help word structure...">help_word_s</a></li>
-</ul></li>
-</ul>
-<!--
-  "$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
-
-  CGI API introduction for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
-
-<p>The CGI API provides Common Gateway Interface functions for CUPS.</p>
-<h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
-<h3 class="function"><a name="cgiCheckVariables">cgiCheckVariables</a></h3>
-<p class="description">Check for the presence of &quot;required&quot; variables.</p>
-<p class="code">
-int cgiCheckVariables (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *names<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>names</dt>
-<dd class="description">Variables to look for</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">1 if all variables present, 0 otherwise</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">Names may be separated by spaces and/or commas.</p>
-<h3 class="function"><a name="cgiClearVariables">cgiClearVariables</a></h3>
-<p class="description">Clear all form variables.</p>
-<p class="code">
-void cgiClearVariables (void);</p>
-<h3 class="function"><a name="cgiCompileSearch">cgiCompileSearch</a></h3>
-<p class="description">Compile a search string.</p>
-<p class="code">
-void *cgiCompileSearch (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *query<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>query</dt>
-<dd class="description">Query string</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Search context</p>
-<h3 class="function"><a name="cgiCopyTemplateFile">cgiCopyTemplateFile</a></h3>
-<p class="description">Copy a template file and replace all the
-'{variable}' strings with the variable value.</p>
-<p class="code">
-void cgiCopyTemplateFile (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;FILE *out,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *tmpl<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>out</dt>
-<dd class="description">Output file</dd>
-<dt>tmpl</dt>
-<dd class="description">Template file to read</dd>
-</dl>
-<h3 class="function"><a name="cgiCopyTemplateLang">cgiCopyTemplateLang</a></h3>
-<p class="description">Copy a template file using a language...</p>
-<p class="code">
-void cgiCopyTemplateLang (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *tmpl<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>tmpl</dt>
-<dd class="description">Base filename</dd>
-</dl>
-<h3 class="function"><a name="cgiDoSearch">cgiDoSearch</a></h3>
-<p class="description">Do a search of some text.</p>
-<p class="code">
-int cgiDoSearch (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void *search,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *text<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>search</dt>
-<dd class="description">Search context</dd>
-<dt>text</dt>
-<dd class="description">Text to search</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Number of matches</p>
-<h3 class="function"><a name="cgiEndHTML">cgiEndHTML</a></h3>
-<p class="description">End a HTML page.</p>
-<p class="code">
-void cgiEndHTML (void);</p>
-<h3 class="function"><a name="cgiEndMultipart">cgiEndMultipart</a></h3>
-<p class="description">End the delivery of a multipart web page.</p>
-<p class="code">
-void cgiEndMultipart (void);</p>
-<h3 class="function"><a name="cgiFormEncode">cgiFormEncode</a></h3>
-<p class="description">Encode a string as a form variable.</p>
-<p class="code">
-char *cgiFormEncode (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *dst,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *src,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;size_t dstsize<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>dst</dt>
-<dd class="description">Destination string</dd>
-<dt>src</dt>
-<dd class="description">Source string</dd>
-<dt>dstsize</dt>
-<dd class="description">Size of destination string</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Destination string</p>
-<h3 class="function"><a name="cgiFreeSearch">cgiFreeSearch</a></h3>
-<p class="description">Free a compiled search context.</p>
-<p class="code">
-void cgiFreeSearch (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void *search<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>search</dt>
-<dd class="description">Search context</dd>
-</dl>
-<h3 class="function"><a name="cgiGetArray">cgiGetArray</a></h3>
-<p class="description">Get an element from a form array.</p>
-<p class="code">
-const char *cgiGetArray (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int element<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Name of array variable</dd>
-<dt>element</dt>
-<dd class="description">Element number (0 to N)</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Element value or NULL</p>
-<h3 class="function"><a name="cgiGetAttributes">cgiGetAttributes</a></h3>
-<p class="description">Get the list of attributes that are needed
-by the template file.</p>
-<p class="code">
-void cgiGetAttributes (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_t *request,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *tmpl<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>request</dt>
-<dd class="description">IPP request</dd>
-<dt>tmpl</dt>
-<dd class="description">Base filename</dd>
-</dl>
-<h3 class="function"><a name="cgiGetCookie">cgiGetCookie</a></h3>
-<p class="description">Get a cookie value.</p>
-<p class="code">
-const char *cgiGetCookie (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Name of cookie</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Value or NULL</p>
-<h3 class="function"><a name="cgiGetFile">cgiGetFile</a></h3>
-<p class="description">Get the file (if any) that was submitted in the form.</p>
-<p class="code">
-const <a href="#cgi_file_t">cgi_file_t</a> *cgiGetFile (void);</p>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Attached file or NULL</p>
-<h3 class="function"><a name="cgiGetIPPObjects">cgiGetIPPObjects</a></h3>
-<p class="description">Get the objects in an IPP response.</p>
-<p class="code">
-cups_array_t *cgiGetIPPObjects (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_t *response,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void *search<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>response</dt>
-<dd class="description">IPP response</dd>
-<dt>search</dt>
-<dd class="description">Search filter</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Array of objects</p>
-<h3 class="function"><a name="cgiGetSize">cgiGetSize</a></h3>
-<p class="description">Get the size of a form array value.</p>
-<p class="code">
-int cgiGetSize (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Name of variable</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Number of elements</p>
-<h3 class="function"><a name="cgiGetTemplateDir">cgiGetTemplateDir</a></h3>
-<p class="description">Get the templates directory...</p>
-<p class="code">
-char *cgiGetTemplateDir (void);</p>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Template directory</p>
-<h3 class="function"><a name="cgiGetVariable">cgiGetVariable</a></h3>
-<p class="description">Get a CGI variable from the database.</p>
-<p class="code">
-const char *cgiGetVariable (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Name of variable</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Value of variable</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">Returns NULL if the variable doesn't exist.  If the variable is an
-array of values, returns the last element.</p>
-<h3 class="function"><a name="cgiInitialize">cgiInitialize</a></h3>
-<p class="description">Initialize the CGI variable &quot;database&quot;.</p>
-<p class="code">
-int cgiInitialize (void);</p>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Non-zero if there was form data</p>
-<h3 class="function"><a name="cgiIsPOST">cgiIsPOST</a></h3>
-<p class="description">Determine whether this page was POSTed.</p>
-<p class="code">
-int cgiIsPOST (void);</p>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">1 if POST, 0 if GET</p>
-<h3 class="function"><a name="cgiMoveJobs">cgiMoveJobs</a></h3>
-<p class="description">Move one or more jobs.</p>
-<p class="code">
-void cgiMoveJobs (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *dest,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int job_id<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">Connection to server</dd>
-<dt>dest</dt>
-<dd class="description">Destination or NULL</dd>
-<dt>job_id</dt>
-<dd class="description">Job ID or 0 for all</dd>
-</dl>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">At least one of dest or job_id must be non-zero/NULL.</p>
-<h3 class="function"><a name="cgiPrintCommand">cgiPrintCommand</a></h3>
-<p class="description">Print a CUPS command job.</p>
-<p class="code">
-void cgiPrintCommand (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *dest,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *command,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *title<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">Connection to server</dd>
-<dt>dest</dt>
-<dd class="description">Destination printer</dd>
-<dt>command</dt>
-<dd class="description">Command to send</dd>
-<dt>title</dt>
-<dd class="description">Page/job title</dd>
-</dl>
-<h3 class="function"><a name="cgiPrintTestPage">cgiPrintTestPage</a></h3>
-<p class="description">Print a test page.</p>
-<p class="code">
-void cgiPrintTestPage (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *dest<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">Connection to server</dd>
-<dt>dest</dt>
-<dd class="description">Destination printer/class</dd>
-</dl>
-<h3 class="function"><a name="cgiRewriteURL">cgiRewriteURL</a></h3>
-<p class="description">Rewrite a printer URI into a web browser URL...</p>
-<p class="code">
-char *cgiRewriteURL (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *uri,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *url,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int urlsize,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *newresource<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>uri</dt>
-<dd class="description">Current URI</dd>
-<dt>url</dt>
-<dd class="description">New URL</dd>
-<dt>urlsize</dt>
-<dd class="description">Size of URL buffer</dd>
-<dt>newresource</dt>
-<dd class="description">Replacement resource</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New URL</p>
-<h3 class="function"><a name="cgiSetArray">cgiSetArray</a></h3>
-<p class="description">Set array element N to the specified string.</p>
-<p class="code">
-void cgiSetArray (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int element,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Name of variable</dd>
-<dt>element</dt>
-<dd class="description">Element number (0 to N)</dd>
-<dt>value</dt>
-<dd class="description">Value of variable</dd>
-</dl>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">If the variable array is smaller than (element + 1), the intervening
-elements are set to NULL.</p>
-<h3 class="function"><a name="cgiSetCookie">cgiSetCookie</a></h3>
-<p class="description">Set a cookie value.</p>
-<p class="code">
-void cgiSetCookie (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *value,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *path,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *domain,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;time_t expires,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int secure<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Name</dd>
-<dt>value</dt>
-<dd class="description">Value</dd>
-<dt>path</dt>
-<dd class="description">Path (typically &quot;/&quot;)</dd>
-<dt>domain</dt>
-<dd class="description">Domain name</dd>
-<dt>expires</dt>
-<dd class="description">Expiration date (0 for session)</dd>
-<dt>secure</dt>
-<dd class="description">Require SSL</dd>
-</dl>
-<h3 class="function"><a name="cgiSetIPPObjectVars">cgiSetIPPObjectVars</a></h3>
-<p class="description">Set CGI variables from an IPP object.</p>
-<p class="code">
-ipp_attribute_t *cgiSetIPPObjectVars (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_attribute_t *obj,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *prefix,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int element<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>obj</dt>
-<dd class="description">Response data to be copied...</dd>
-<dt>prefix</dt>
-<dd class="description">Prefix for name or NULL</dd>
-<dt>element</dt>
-<dd class="description">Parent element number</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Next object</p>
-<h3 class="function"><a name="cgiSetIPPVars">cgiSetIPPVars</a></h3>
-<p class="description">Set CGI variables from an IPP response.</p>
-<p class="code">
-int cgiSetIPPVars (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ipp_t *response,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *filter_name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *filter_value,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *prefix,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int parent_el<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>response</dt>
-<dd class="description">Response data to be copied...</dd>
-<dt>filter_name</dt>
-<dd class="description">Filter name</dd>
-<dt>filter_value</dt>
-<dd class="description">Filter value</dd>
-<dt>prefix</dt>
-<dd class="description">Prefix for name or NULL</dd>
-<dt>parent_el</dt>
-<dd class="description">Parent element number</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Maximum number of elements</p>
-<h3 class="function"><a name="cgiSetServerVersion">cgiSetServerVersion</a></h3>
-<p class="description">Set the server name and CUPS version...</p>
-<p class="code">
-void cgiSetServerVersion (void);</p>
-<h3 class="function"><a name="cgiSetSize">cgiSetSize</a></h3>
-<p class="description">Set the array size.</p>
-<p class="code">
-void cgiSetSize (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int size<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Name of variable</dd>
-<dt>size</dt>
-<dd class="description">Number of elements (0 to N)</dd>
-</dl>
-<h3 class="function"><a name="cgiSetVariable">cgiSetVariable</a></h3>
-<p class="description">Set a CGI variable in the database.</p>
-<p class="code">
-void cgiSetVariable (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Name of variable</dd>
-<dt>value</dt>
-<dd class="description">Value of variable</dd>
-</dl>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">If the variable is an array, this truncates the array to a single element.</p>
-<h3 class="function"><a name="cgiShowIPPError">cgiShowIPPError</a></h3>
-<p class="description">Show the last IPP error message.</p>
-<p class="code">
-void cgiShowIPPError (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *message<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>message</dt>
-<dd class="description">Contextual message</dd>
-</dl>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">The caller must still call cgiStartHTML() and cgiEndHTML().</p>
-<h3 class="function"><a name="cgiShowJobs">cgiShowJobs</a></h3>
-<p class="description">Show print jobs.</p>
-<p class="code">
-void cgiShowJobs (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *dest<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">Connection to server</dd>
-<dt>dest</dt>
-<dd class="description">Destination name or NULL</dd>
-</dl>
-<h3 class="function"><a name="cgiStartHTML">cgiStartHTML</a></h3>
-<p class="description">Start a HTML page.</p>
-<p class="code">
-void cgiStartHTML (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *title<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>title</dt>
-<dd class="description">Title of page</dd>
-</dl>
-<h3 class="function"><a name="cgiStartMultipart">cgiStartMultipart</a></h3>
-<p class="description">Start a multipart delivery of a web page.</p>
-<p class="code">
-void cgiStartMultipart (void);</p>
-<h3 class="function"><a name="cgiSupportsMultipart">cgiSupportsMultipart</a></h3>
-<p class="description">Does the browser support multi-part documents?</p>
-<p class="code">
-int cgiSupportsMultipart (void);</p>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">1 if multi-part supported, 0 otherwise</p>
-<h3 class="function"><a name="cgiText">cgiText</a></h3>
-<p class="description">Return localized text.</p>
-<p class="code">
-const char *cgiText (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *message<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>message</dt>
-<dd class="description">Message</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Localized message</p>
-<h3 class="function"><a name="helpDeleteIndex">helpDeleteIndex</a></h3>
-<p class="description">Delete an index, freeing all memory used.</p>
-<p class="code">
-void helpDeleteIndex (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#help_index_t">help_index_t</a> *hi<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>hi</dt>
-<dd class="description">Help index</dd>
-</dl>
-<h3 class="function"><a name="helpFindNode">helpFindNode</a></h3>
-<p class="description">Find a node in an index.</p>
-<p class="code">
-<a href="#help_node_t">help_node_t</a> *helpFindNode (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#help_index_t">help_index_t</a> *hi,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *filename,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *anchor<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>hi</dt>
-<dd class="description">Index</dd>
-<dt>filename</dt>
-<dd class="description">Filename</dd>
-<dt>anchor</dt>
-<dd class="description">Anchor</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Node pointer or NULL</p>
-<h3 class="function"><a name="helpLoadIndex">helpLoadIndex</a></h3>
-<p class="description">Load a help index from disk.</p>
-<p class="code">
-<a href="#help_index_t">help_index_t</a> *helpLoadIndex (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *hifile,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *directory<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>hifile</dt>
-<dd class="description">Index filename</dd>
-<dt>directory</dt>
-<dd class="description">Directory that is indexed</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Index pointer or NULL</p>
-<h3 class="function"><a name="helpSaveIndex">helpSaveIndex</a></h3>
-<p class="description">Save a help index to disk.</p>
-<p class="code">
-int helpSaveIndex (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#help_index_t">help_index_t</a> *hi,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *hifile<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>hi</dt>
-<dd class="description">Index</dd>
-<dt>hifile</dt>
-<dd class="description">Index filename</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">0 on success, -1 on error</p>
-<h3 class="function"><a name="helpSearchIndex">helpSearchIndex</a></h3>
-<p class="description">Search an index.</p>
-<p class="code">
-<a href="#help_index_t">help_index_t</a> *helpSearchIndex (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#help_index_t">help_index_t</a> *hi,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *query,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *section,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>hi</dt>
-<dd class="description">Index</dd>
-<dt>query</dt>
-<dd class="description">Query string</dd>
-<dt>section</dt>
-<dd class="description">Limit search to this section</dd>
-<dt>filename</dt>
-<dd class="description">Limit search to this file</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Search index</p>
-<h2 class="title"><a name="TYPES">Data Types</a></h2>
-<h3 class="typedef"><a name="cgi_file_t">cgi_file_t</a></h3>
-<p class="description">Uploaded file data</p>
-<p class="code">
-typedef struct <a href="#cgi_file_s">cgi_file_s</a> cgi_file_t;
-</p>
-<h3 class="typedef"><a name="help_index_t">help_index_t</a></h3>
-<p class="description">Help index structure</p>
-<p class="code">
-typedef struct <a href="#help_index_s">help_index_s</a> help_index_t;
-</p>
-<h3 class="typedef"><a name="help_node_t">help_node_t</a></h3>
-<p class="description">Help node structure...</p>
-<p class="code">
-typedef struct <a href="#help_node_s">help_node_s</a> help_node_t;
-</p>
-<h3 class="typedef"><a name="help_word_t">help_word_t</a></h3>
-<p class="description">Help word structure...</p>
-<p class="code">
-typedef struct <a href="#help_word_s">help_word_s</a> help_word_t;
-</p>
-<h2 class="title"><a name="STRUCTURES">Structures</a></h2>
-<h3 class="struct"><a name="cgi_file_s">cgi_file_s</a></h3>
-<p class="description">Uploaded file data</p>
-<p class="code">struct cgi_file_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;size_t filesize;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char tempfile[1024], *name, *filename, *mimetype;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>filesize </dt>
-<dd class="description">Size of uploaded file</dd>
-<dt>mimetype </dt>
-<dd class="description">MIME media type</dd>
-</dl>
-<h3 class="struct"><a name="help_index_s">help_index_s</a></h3>
-<p class="description">Help index structure</p>
-<p class="code">struct help_index_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t *nodes;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int search;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t *sorted;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>nodes </dt>
-<dd class="description">Nodes sorted by filename</dd>
-<dt>search </dt>
-<dd class="description">1 = search index, 0 = normal</dd>
-<dt>sorted </dt>
-<dd class="description">Nodes sorted by score + text</dd>
-</dl>
-<h3 class="struct"><a name="help_node_s">help_node_s</a></h3>
-<p class="description">Help node structure...</p>
-<p class="code">struct help_node_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *anchor;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *filename;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;size_t length;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;time_t mtime;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;off_t offset;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int score;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *section;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *text;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_array_t *words;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>anchor </dt>
-<dd class="description">Anchor name (NULL if none)</dd>
-<dt>filename </dt>
-<dd class="description">Filename, relative to help dir</dd>
-<dt>length </dt>
-<dd class="description">Length in bytes</dd>
-<dt>mtime </dt>
-<dd class="description">Last modification time</dd>
-<dt>offset </dt>
-<dd class="description">Offset in file</dd>
-<dt>score </dt>
-<dd class="description">Search score</dd>
-<dt>section </dt>
-<dd class="description">Section name (NULL if none)</dd>
-<dt>text </dt>
-<dd class="description">Text in anchor</dd>
-<dt>words </dt>
-<dd class="description">Words after this node</dd>
-</dl>
-<h3 class="struct"><a name="help_word_s">help_word_s</a></h3>
-<p class="description">Help word structure...</p>
-<p class="code">struct help_word_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int count;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *text;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>count </dt>
-<dd class="description">Number of occurrences</dd>
-<dt>text </dt>
-<dd class="description">Word text</dd>
-</dl>
-</div>
-</body>
-</html>
index 1269182..a5ed7b6 100644 (file)
@@ -5,7 +5,7 @@
        <title>CUPS API </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
-
   CUPS API header for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
@@ -455,15 +453,10 @@ destination.">cupsGetDestMediaCount</a></li>
        <li><a href="#cupsGetJobs2" title="Get the jobs from the specified server.">cupsGetJobs2</a></li>
        <li><a href="#cupsGetNamedDest" title="Get options for the named destination.">cupsGetNamedDest</a></li>
        <li><a href="#cupsGetOption" title="Get an option value.">cupsGetOption</a></li>
-       <li><a href="#cupsGetPPD" title="Get the PPD file for a printer on the default server.">cupsGetPPD</a></li>
-       <li><a href="#cupsGetPPD2" title="Get the PPD file for a printer from the specified server.">cupsGetPPD2</a></li>
-       <li><a href="#cupsGetPPD3" title="Get the PPD file for a printer on the specified
-server if it has changed.">cupsGetPPD3</a></li>
        <li><a href="#cupsGetPassword" title="Get a password from the user.">cupsGetPassword</a></li>
        <li><a href="#cupsGetPassword2" title="Get a password from the user using the advanced
 password callback.">cupsGetPassword2</a></li>
        <li><a href="#cupsGetPrinters" title="Get a list of printers from the default server.">cupsGetPrinters</a></li>
-       <li><a href="#cupsGetServerPPD" title="Get an available PPD file from the server.">cupsGetServerPPD</a></li>
        <li><a href="#cupsLangDefault" title="Return the default language.">cupsLangDefault</a></li>
        <li><a href="#cupsLangEncoding" title="Return the character encoding (us-ascii, etc.)
 for the given language.">cupsLangEncoding</a></li>
@@ -525,8 +518,6 @@ attributes.">pwgInitSize</a></li>
        <li><a href="#cups_dest_cb_t" title="Destination enumeration callback
 ">cups_dest_cb_t</a></li>
        <li><a href="#cups_dest_t" title="Destination">cups_dest_t</a></li>
-       <li><a href="#cups_device_cb_t" title="Device callback
-">cups_device_cb_t</a></li>
        <li><a href="#cups_dinfo_t" title="Destination capability and status
 information ">cups_dinfo_t</a></li>
        <li><a href="#cups_job_t" title="Job">cups_job_t</a></li>
@@ -562,8 +553,6 @@ constants">cups_ptype_e</a></li>
 </ul></li>
 </ul>
 <!--
-  "$Id: api-cups.shtml 7337 2008-02-22 04:44:04Z mike $"
-
   API introduction for CUPS.
 
   Copyright 2007-2013 by Apple Inc.
@@ -1113,7 +1102,7 @@ int cupsAdminExportSamba (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsAdminGetServerSettings">cupsAdminGetServerSettings</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsAdminGetServerSettings">cupsAdminGetServerSettings</a></h3>
 <p class="description">Get settings from the server.</p>
 <p class="code">
 int cupsAdminGetServerSettings (<br>
@@ -1137,7 +1126,7 @@ int cupsAdminGetServerSettings (<br>
 you are done with them.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsAdminSetServerSettings">cupsAdminSetServerSettings</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsAdminSetServerSettings">cupsAdminSetServerSettings</a></h3>
 <p class="description">Set settings on the server.</p>
 <p class="code">
 int cupsAdminSetServerSettings (<br>
@@ -1177,8 +1166,9 @@ ipp_status_t cupsCancelDestJob (<br>
 <p class="description">Cancel a job on a destination.</p>
 <p class="discussion">The &quot;job_id&quot; is the number returned by cupsCreateDestJob.<br>
 <br>
-Returns IPP_STATUS_OK on success and IPP_NOT_AUTHORIZED or IPP_FORBIDDEN on
-failure.
+Returns <code>IPP_STATUS_OK</code> on success and
+<code>IPP_STATUS_ERRPR_NOT_AUTHORIZED</code> or
+<code>IPP_STATUS_ERROR_FORBIDDEN</code> on failure.
 
 </p>
 <h3 class="function"><a name="cupsCancelJob">cupsCancelJob</a></h3>
@@ -1203,7 +1193,7 @@ to cancel the current job on the named destination.<br>
 <br>
 Use the <a href="#cupsLastError"><code>cupsLastError</code></a> and <a href="#cupsLastErrorString"><code>cupsLastErrorString</code></a> functions to get
 the cause of any failure.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsCancelJob2">cupsCancelJob2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsCancelJob2">cupsCancelJob2</a></h3>
 <p class="description">Cancel or purge a print job.</p>
 <p class="code">
 ipp_status_t cupsCancelJob2 (<br>
@@ -1236,7 +1226,7 @@ Use the <a href="#cupsLastError"><code>cupsLastError</code></a> and <a href="#cu
 the cause of any failure.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsCheckDestSupported">cupsCheckDestSupported</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsCheckDestSupported">cupsCheckDestSupported</a></h3>
 <p class="description">Check that the option and value are supported
 by the destination.</p>
 <p class="code">
@@ -1266,7 +1256,7 @@ int cupsCheckDestSupported (<br>
 <p class="discussion">Returns 1 if supported, 0 otherwise.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsCloseDestJob">cupsCloseDestJob</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsCloseDestJob">cupsCloseDestJob</a></h3>
 <p class="description">Close a job and start printing.</p>
 <p class="code">
 ipp_status_t cupsCloseDestJob (<br>
@@ -1294,7 +1284,7 @@ ipp_status_t cupsCloseDestJob (<br>
 on success.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsConnectDest">cupsConnectDest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsConnectDest">cupsConnectDest</a></h3>
 <p class="description">Connect to the server for a destination.</p>
 <p class="code">
 http_t *cupsConnectDest (<br>
@@ -1336,7 +1326,7 @@ to by &quot;cancel&quot; is non-zero, or the callback function (or block) return
 The caller is responsible for calling httpClose() on the returned object.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsConnectDestBlock">cupsConnectDestBlock</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsConnectDestBlock">cupsConnectDestBlock</a></h3>
 <p class="description">Connect to the server for a destination.</p>
 <p class="code">
 http_t *cupsConnectDestBlock (<br>
@@ -1396,7 +1386,7 @@ copy) - for use with the cupsEnumDests* functions. The caller is responsible
 for calling cupsFreeDests() on the returned object(s).
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsCopyDestConflicts">cupsCopyDestConflicts</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsCopyDestConflicts">cupsCopyDestConflicts</a></h3>
 <p class="description">Get conflicts and resolutions for a new
 option/value pair.</p>
 <p class="code">
@@ -1457,7 +1447,7 @@ If cupsCopyDestConflicts returns 1 but &quot;num_resolved&quot; and &quot;resolv
 to 0 and <code>NULL</code>, respectively, then the conflict cannot be resolved.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsCopyDestInfo">cupsCopyDestInfo</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsCopyDestInfo">cupsCopyDestInfo</a></h3>
 <p class="description">Get the supported values/capabilities for the
 destination.</p>
 <p class="code">
@@ -1479,7 +1469,7 @@ destination.</p>
 value. <code>NULL</code> is returned on error.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsCreateDestJob">cupsCreateDestJob</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsCreateDestJob">cupsCreateDestJob</a></h3>
 <p class="description">Create a job on a destination.</p>
 <p class="code">
 ipp_status_t cupsCreateDestJob (<br>
@@ -1515,7 +1505,7 @@ ipp_status_t cupsCreateDestJob (<br>
 in the variable pointed to by &quot;job_id&quot;.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsCreateJob">cupsCreateJob</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsCreateJob">cupsCreateJob</a></h3>
 <p class="description">Create an empty job for streaming.</p>
 <p class="code">
 int cupsCreateJob (<br>
@@ -1564,7 +1554,7 @@ Note: The current encryption setting is tracked separately for each thread
 in a program. Multi-threaded programs that override the setting via the
 <a href="#cupsSetEncryption"><code>cupsSetEncryption</code></a> function need to do so in each thread for the same
 setting to be used.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsEnumDests">cupsEnumDests</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsEnumDests">cupsEnumDests</a></h3>
 <p class="description">Enumerate available destinations with a callback function.</p>
 <p class="code">
 int cupsEnumDests (<br>
@@ -1606,7 +1596,7 @@ Enumeration happens on the current thread and does not return until all
 destinations have been enumerated or the callback function returns 0.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsEnumDestsBlock">cupsEnumDestsBlock</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsEnumDestsBlock">cupsEnumDestsBlock</a></h3>
 <p class="description">Enumerate available destinations with a block.</p>
 <p class="code">
 int cupsEnumDestsBlock (<br>
@@ -1644,7 +1634,7 @@ Enumeration happens on the current thread and does not return until all
 destinations have been enumerated or the block returns 0.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="cupsFindDestDefault">cupsFindDestDefault</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="cupsFindDestDefault">cupsFindDestDefault</a></h3>
 <p class="description">Find the default value(s) for the given option.</p>
 <p class="code">
 ipp_attribute_t *cupsFindDestDefault (<br>
@@ -1674,7 +1664,7 @@ ipp_attribute_t *cupsFindDestDefault (<br>
 functions to inspect the default value(s) as needed.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="cupsFindDestReady">cupsFindDestReady</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="cupsFindDestReady">cupsFindDestReady</a></h3>
 <p class="description">Find the default value(s) for the given option.</p>
 <p class="code">
 ipp_attribute_t *cupsFindDestReady (<br>
@@ -1704,7 +1694,7 @@ ipp_attribute_t *cupsFindDestReady (<br>
 functions to inspect the default value(s) as needed.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="cupsFindDestSupported">cupsFindDestSupported</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="cupsFindDestSupported">cupsFindDestSupported</a></h3>
 <p class="description">Find the default value(s) for the given option.</p>
 <p class="code">
 ipp_attribute_t *cupsFindDestSupported (<br>
@@ -1734,7 +1724,7 @@ ipp_attribute_t *cupsFindDestSupported (<br>
 functions to inspect the default value(s) as needed.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsFinishDestDocument">cupsFinishDestDocument</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsFinishDestDocument">cupsFinishDestDocument</a></h3>
 <p class="description">Finish the current document.</p>
 <p class="code">
 ipp_status_t cupsFinishDestDocument (<br>
@@ -1757,7 +1747,7 @@ ipp_status_t cupsFinishDestDocument (<br>
 <p class="discussion">Returns <code>IPP_STATUS_OK</code> or <code>IPP_STATUS_OK_SUBST</code> on success.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsFinishDocument">cupsFinishDocument</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsFinishDocument">cupsFinishDocument</a></h3>
 <p class="description">Finish sending a document.</p>
 <p class="code">
 ipp_status_t cupsFinishDocument (<br>
@@ -1862,7 +1852,7 @@ variables are not set, the server default destination is returned.
 Applications should use the <a href="#cupsGetDests"><code>cupsGetDests</code></a> and <a href="#cupsGetDest"><code>cupsGetDest</code></a>
 functions to get the user-defined default printer, as this function does
 not support the lpoptions-defined default printer.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="cupsGetDefault2">cupsGetDefault2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="cupsGetDefault2">cupsGetDefault2</a></h3>
 <p class="description">Get the default printer or class for the specified server.</p>
 <p class="code">
 const char *cupsGetDefault2 (<br>
@@ -1909,7 +1899,7 @@ not support the lpoptions-defined default printer.
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">Use the <a href="#cupsGetDests"><code>cupsGetDests</code></a> or <a href="#cupsGetDests2"><code>cupsGetDests2</code></a> functions to get a
 list of supported destinations for the current user.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="cupsGetDestMediaByIndex">cupsGetDestMediaByIndex</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="cupsGetDestMediaByIndex">cupsGetDestMediaByIndex</a></h3>
 <p class="description">Get a media name, dimension, and margins for a
 specific size.</p>
 <p class="code">
@@ -1944,7 +1934,7 @@ example, passing <code>CUPS_MEDIA_FLAGS_BORDERLESS</code> will get the Nth
 borderless size supported by the printer.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsGetDestMediaByName">cupsGetDestMediaByName</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsGetDestMediaByName">cupsGetDestMediaByName</a></h3>
 <p class="description">Get media names, dimensions, and margins.</p>
 <p class="code">
 int cupsGetDestMediaByName (<br>
@@ -1988,7 +1978,7 @@ The matching result (if any) is returned in the &quot;cups_size_t&quot; structur
 Returns 1 when there is a match and 0 if there is not a match.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsGetDestMediaBySize">cupsGetDestMediaBySize</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsGetDestMediaBySize">cupsGetDestMediaBySize</a></h3>
 <p class="description">Get media names, dimensions, and margins.</p>
 <p class="code">
 int cupsGetDestMediaBySize (<br>
@@ -2037,7 +2027,7 @@ The matching result (if any) is returned in the &quot;cups_size_t&quot; structur
 Returns 1 when there is a match and 0 if there is not a match.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="cupsGetDestMediaCount">cupsGetDestMediaCount</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="cupsGetDestMediaCount">cupsGetDestMediaCount</a></h3>
 <p class="description">Get the number of sizes supported by a
 destination.</p>
 <p class="code">
@@ -2066,7 +2056,7 @@ counted.  For example, passing <code>CUPS_MEDIA_FLAGS_BORDERLESS</code> will ret
 the number of borderless sizes.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="cupsGetDestMediaDefault">cupsGetDestMediaDefault</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="cupsGetDestMediaDefault">cupsGetDestMediaDefault</a></h3>
 <p class="description">Get the default size for a destination.</p>
 <p class="code">
 int cupsGetDestMediaDefault (<br>
@@ -2097,7 +2087,7 @@ example, passing <code>CUPS_MEDIA_FLAGS_BORDERLESS</code> will return the defaul
 borderless size, typically US Letter or A4, but sometimes 4x6 photo media.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS X 10.10&nbsp;</span><a name="cupsGetDestWithURI">cupsGetDestWithURI</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/macOS 10.10&nbsp;</span><a name="cupsGetDestWithURI">cupsGetDestWithURI</a></h3>
 <p class="description">Get a destination associated with a URI.</p>
 <p class="code">
 <a href="#cups_dest_t">cups_dest_t</a> *cupsGetDestWithURI (<br>
@@ -2144,7 +2134,7 @@ marker-types, and printer-commands attributes as well.<br>
 <br>
 Use the <a href="#cupsFreeDests"><code>cupsFreeDests</code></a> function to free the destination list and
 the <a href="#cupsGetDest"><code>cupsGetDest</code></a> function to find a particular destination.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="cupsGetDests2">cupsGetDests2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="cupsGetDests2">cupsGetDests2</a></h3>
 <p class="description">Get the list of destinations from the specified server.</p>
 <p class="code">
 int cupsGetDests2 (<br>
@@ -2200,7 +2190,7 @@ int cupsGetJobs (<br>
 of state, while <code>CUPS_WHICHJOBS_ACTIVE</code> returns jobs that are
 pending, processing, or held and <code>CUPS_WHICHJOBS_COMPLETED</code> returns
 jobs that are stopped, canceled, aborted, or completed.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="cupsGetJobs2">cupsGetJobs2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="cupsGetJobs2">cupsGetJobs2</a></h3>
 <p class="description">Get the jobs from the specified server.</p>
 <p class="code">
 int cupsGetJobs2 (<br>
@@ -2232,7 +2222,7 @@ pending, processing, or held and <code>CUPS_WHICHJOBS_COMPLETED</code> returns
 jobs that are stopped, canceled, aborted, or completed.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsGetNamedDest">cupsGetNamedDest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsGetNamedDest">cupsGetNamedDest</a></h3>
 <p class="description">Get options for the named destination.</p>
 <p class="code">
 <a href="#cups_dest_t">cups_dest_t</a> *cupsGetNamedDest (<br>
@@ -2287,95 +2277,6 @@ const char *cupsGetOption (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Option value or <code>NULL</code></p>
-<h3 class="function"><a name="cupsGetPPD">cupsGetPPD</a></h3>
-<p class="description">Get the PPD file for a printer on the default server.</p>
-<p class="code">
-const char *cupsGetPPD (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>name</dt>
-<dd class="description">Destination name</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Filename for PPD file</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">For classes, <code>cupsGetPPD</code> returns the PPD file for the first printer
-in the class.<br>
-<br>
-The returned filename is stored in a static buffer and is overwritten with
-each call to <code>cupsGetPPD</code> or <a href="#cupsGetPPD2"><code>cupsGetPPD2</code></a>.  The caller &quot;owns&quot; the
-file that is created and must <code>unlink</code> the returned filename.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="cupsGetPPD2">cupsGetPPD2</a></h3>
-<p class="description">Get the PPD file for a printer from the specified server.</p>
-<p class="code">
-const char *cupsGetPPD2 (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
-<dt>name</dt>
-<dd class="description">Destination name</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Filename for PPD file</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">For classes, <code>cupsGetPPD2</code> returns the PPD file for the first printer
-in the class.<br>
-<br>
-The returned filename is stored in a static buffer and is overwritten with
-each call to <a href="#cupsGetPPD"><code>cupsGetPPD</code></a> or <code>cupsGetPPD2</code>.  The caller &quot;owns&quot; the
-file that is created and must <code>unlink</code> the returned filename.
-
-</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsGetPPD3">cupsGetPPD3</a></h3>
-<p class="description">Get the PPD file for a printer on the specified
-server if it has changed.</p>
-<p class="code">
-http_status_t cupsGetPPD3 (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;time_t *modtime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;size_t bufsize<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">HTTP connection or <code>CUPS_HTTP_DEFAULT</code></dd>
-<dt>name</dt>
-<dd class="description">Destination name</dd>
-<dt>modtime</dt>
-<dd class="description">Modification time</dd>
-<dt>buffer</dt>
-<dd class="description">Filename buffer</dd>
-<dt>bufsize</dt>
-<dd class="description">Size of filename buffer</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">HTTP status</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">The &quot;modtime&quot; parameter contains the modification time of any
-locally-cached content and is updated with the time from the PPD file on
-the server.<br>
-<br>
-The &quot;buffer&quot; parameter contains the local PPD filename.  If it contains
-the empty string, a new temporary file is created, otherwise the existing
-file will be overwritten as needed.  The caller &quot;owns&quot; the file that is
-created and must <code>unlink</code> the returned filename.<br>
-<br>
-On success, <code>HTTP_STATUS_OK</code> is returned for a new PPD file and
-<code>HTTP_STATUS_NOT_MODIFIED</code> if the existing PPD file is up-to-date.  Any other
-status is an error.<br>
-<br>
-For classes, <code>cupsGetPPD3</code> returns the PPD file for the first printer
-in the class.
-
-</p>
 <h3 class="function"><a name="cupsGetPassword">cupsGetPassword</a></h3>
 <p class="description">Get a password from the user.</p>
 <p class="code">
@@ -2397,7 +2298,7 @@ Note: The current password callback function is tracked separately for each
 thread in a program. Multi-threaded programs that override the setting via
 the <a href="#cupsSetPasswordCB"><code>cupsSetPasswordCB</code></a> or <a href="#cupsSetPasswordCB2"><code>cupsSetPasswordCB2</code></a> functions need to
 do so in each thread for the same function to be used.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsGetPassword2">cupsGetPassword2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsGetPassword2">cupsGetPassword2</a></h3>
 <p class="description">Get a password from the user using the advanced
 password callback.</p>
 <p class="code">
@@ -2448,33 +2349,6 @@ int cupsGetPrinters (<br>
 <a href="#cupsGetDests"><code>cupsGetDests</code></a> instead.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsGetServerPPD">cupsGetServerPPD</a></h3>
-<p class="description">Get an available PPD file from the server.</p>
-<p class="code">
-char *cupsGetServerPPD (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>http</dt>
-<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
-<dt>name</dt>
-<dd class="description">Name of PPD file (&quot;ppd-name&quot;)</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Name of PPD file or <code>NULL</code> on error</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">This function returns the named PPD file from the server.  The
-list of available PPDs is provided by the IPP <code>CUPS_GET_PPDS</code>
-operation.<br>
-<br>
-You must remove (unlink) the PPD file when you are finished with
-it. The PPD filename is stored in a static location that will be
-overwritten on the next call to <a href="#cupsGetPPD"><code>cupsGetPPD</code></a>, <a href="#cupsGetPPD2"><code>cupsGetPPD2</code></a>,
-or <a href="#cupsGetServerPPD"><code>cupsGetServerPPD</code></a>.
-
-</p>
 <h3 class="function"><a name="cupsLangDefault">cupsLangDefault</a></h3>
 <p class="description">Return the default language.</p>
 <p class="code">
@@ -2525,7 +2399,7 @@ cups_lang_t *cupsLangGet (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Language data</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 2.0/OS X 10.10&nbsp;</span><a name="cupsLocalizeDestMedia">cupsLocalizeDestMedia</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.0/macOS 10.10&nbsp;</span><a name="cupsLocalizeDestMedia">cupsLocalizeDestMedia</a></h3>
 <p class="description">Get the localized string for a destination media
 size.</p>
 <p class="code">
@@ -2556,7 +2430,7 @@ const char *cupsLocalizeDestMedia (<br>
 invalid if the destination information is deleted.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsLocalizeDestOption">cupsLocalizeDestOption</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsLocalizeDestOption">cupsLocalizeDestOption</a></h3>
 <p class="description">Get the localized string for a destination
 option.</p>
 <p class="code">
@@ -2584,7 +2458,7 @@ const char *cupsLocalizeDestOption (<br>
 invalid if the destination information is deleted.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsLocalizeDestValue">cupsLocalizeDestValue</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsLocalizeDestValue">cupsLocalizeDestValue</a></h3>
 <p class="description">Get the localized string for a destination
 option+value pair.</p>
 <p class="code">
@@ -2615,7 +2489,7 @@ const char *cupsLocalizeDestValue (<br>
 invalid if the destination information is deleted.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsNotifySubject">cupsNotifySubject</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsNotifySubject">cupsNotifySubject</a></h3>
 <p class="description">Return the subject for the given notification message.</p>
 <p class="code">
 char *cupsNotifySubject (<br>
@@ -2635,7 +2509,7 @@ char *cupsNotifySubject (<br>
 <p class="discussion">The returned string must be freed by the caller using <code>free</code>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsNotifyText">cupsNotifyText</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsNotifyText">cupsNotifyText</a></h3>
 <p class="description">Return the text for the given notification message.</p>
 <p class="code">
 char *cupsNotifyText (<br>
@@ -2705,7 +2579,7 @@ int cupsPrintFile (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Job ID or 0 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="cupsPrintFile2">cupsPrintFile2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="cupsPrintFile2">cupsPrintFile2</a></h3>
 <p class="description">Print a file to a printer or class on the specified
 server.</p>
 <p class="code">
@@ -2763,7 +2637,7 @@ int cupsPrintFiles (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Job ID or 0 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="cupsPrintFiles2">cupsPrintFiles2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="cupsPrintFiles2">cupsPrintFiles2</a></h3>
 <p class="description">Print one or more files to a printer or class on the
 specified server.</p>
 <p class="code">
@@ -2795,7 +2669,7 @@ int cupsPrintFiles2 (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Job ID or 0 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsRemoveDest">cupsRemoveDest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsRemoveDest">cupsRemoveDest</a></h3>
 <p class="description">Remove a destination from the destination list.</p>
 <p class="code">
 int cupsRemoveDest (<br>
@@ -2824,7 +2698,7 @@ queue, merely the lpoptions for that destination/instance.  Use the
 options for the user.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsRemoveOption">cupsRemoveOption</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsRemoveOption">cupsRemoveOption</a></h3>
 <p class="description">Remove an option from an option array.</p>
 <p class="code">
 int cupsRemoveOption (<br>
@@ -2862,7 +2736,7 @@ Note: The current server is tracked separately for each thread in a program.
 Multi-threaded programs that override the server via the
 <a href="#cupsSetServer"><code>cupsSetServer</code></a> function need to do so in each thread for the same
 server to be used.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="cupsSetClientCertCB">cupsSetClientCertCB</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="cupsSetClientCertCB">cupsSetClientCertCB</a></h3>
 <p class="description">Set the client certificate callback.</p>
 <p class="code">
 void cupsSetClientCertCB (<br>
@@ -2884,7 +2758,7 @@ in a program. Multi-threaded programs that override the callback need to do
 so in each thread for the same callback to be used.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="cupsSetCredentials">cupsSetCredentials</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="cupsSetCredentials">cupsSetCredentials</a></h3>
 <p class="description">Set the default credentials to be used for SSL/TLS
 connections.</p>
 <p class="code">
@@ -2904,7 +2778,7 @@ program. Multi-threaded programs that override the setting need to do so in
 each thread for the same setting to be used.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsSetDefaultDest">cupsSetDefaultDest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsSetDefaultDest">cupsSetDefaultDest</a></h3>
 <p class="description">Set the default destination.</p>
 <p class="code">
 void cupsSetDefaultDest (<br>
@@ -2941,7 +2815,7 @@ void cupsSetDests (<br>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">This function saves the destinations to /etc/cups/lpoptions when run
 as root and ~/.cups/lpoptions when run as a normal user.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="cupsSetDests2">cupsSetDests2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="cupsSetDests2">cupsSetDests2</a></h3>
 <p class="description">Save the list of destinations for the specified server.</p>
 <p class="code">
 int cupsSetDests2 (<br>
@@ -3005,7 +2879,7 @@ by a program per thread.<br>
 Note: The current password callback is tracked separately for each thread
 in a program. Multi-threaded programs that override the callback need to do
 so in each thread for the same callback to be used.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsSetPasswordCB2">cupsSetPasswordCB2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsSetPasswordCB2">cupsSetPasswordCB2</a></h3>
 <p class="description">Set the advanced password callback for CUPS.</p>
 <p class="code">
 void cupsSetPasswordCB2 (<br>
@@ -3051,7 +2925,7 @@ default server name and port.<br>
 Note: The current server is tracked separately for each thread in a program.
 Multi-threaded programs that override the server need to do so in each
 thread for the same server to be used.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="cupsSetServerCertCB">cupsSetServerCertCB</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="cupsSetServerCertCB">cupsSetServerCertCB</a></h3>
 <p class="description">Set the server certificate callback.</p>
 <p class="code">
 void cupsSetServerCertCB (<br>
@@ -3090,7 +2964,7 @@ void cupsSetUser (<br>
 Note: The current user name is tracked separately for each thread in a
 program. Multi-threaded programs that override the user name need to do so
 in each thread for the same user name to be used.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="cupsSetUserAgent">cupsSetUserAgent</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="cupsSetUserAgent">cupsSetUserAgent</a></h3>
 <p class="description">Set the default HTTP User-Agent string.</p>
 <p class="code">
 void cupsSetUserAgent (<br>
@@ -3106,7 +2980,7 @@ void cupsSetUserAgent (<br>
 version, IPP version, and operating system version and architecture.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cupsStartDestDocument">cupsStartDestDocument</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cupsStartDestDocument">cupsStartDestDocument</a></h3>
 <p class="description">Start a new document.</p>
 <p class="code">
 http_status_t cupsStartDestDocument (<br>
@@ -3152,7 +3026,7 @@ if this is the last document to be submitted in the job.  Returns
 <code>HTTP_CONTINUE</code> on success.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsStartDocument">cupsStartDocument</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsStartDocument">cupsStartDocument</a></h3>
 <p class="description">Add a document to a job created with cupsCreateJob().</p>
 <p class="code">
 http_status_t cupsStartDocument (<br>
@@ -3231,7 +3105,7 @@ This function is deprecated and will no longer generate a temporary
 filename - use <a href="#cupsTempFd"><code>cupsTempFd</code></a> or <a href="#cupsTempFile2"><code>cupsTempFile2</code></a> instead.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsTempFile2">cupsTempFile2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsTempFile2">cupsTempFile2</a></h3>
 <p class="description">Creates a temporary CUPS file.</p>
 <p class="code">
 cups_file_t *cupsTempFile2 (<br>
@@ -3263,13 +3137,13 @@ const char *cupsUser (void);</p>
 program. Multi-threaded programs that override the user name with the
 <a href="#cupsSetUser"><code>cupsSetUser</code></a> function need to do so in each thread for the same user
 name to be used.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="cupsUserAgent">cupsUserAgent</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="cupsUserAgent">cupsUserAgent</a></h3>
 <p class="description">Return the default HTTP User-Agent string.</p>
 <p class="code">
 const char *cupsUserAgent (void);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">User-Agent string</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="pwgFormatSizeName">pwgFormatSizeName</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="pwgFormatSizeName">pwgFormatSizeName</a></h3>
 <p class="description">Generate a PWG self-describing media size name.</p>
 <p class="code">
 int pwgFormatSizeName (<br>
@@ -3317,7 +3191,7 @@ units string is <code>NULL</code>, otherwise inches (&quot;in&quot;) or millimet
 are used.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="pwgInitSize">pwgInitSize</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="pwgInitSize">pwgInitSize</a></h3>
 <p class="description">Initialize a pwg_size_t structure using IPP Job Template
 attributes.</p>
 <p class="code">
@@ -3347,7 +3221,7 @@ member attribute was specified in the &quot;media-col&quot; Job Template attribu
 otherwise it is initialized to 0.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="pwgMediaForLegacy">pwgMediaForLegacy</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="pwgMediaForLegacy">pwgMediaForLegacy</a></h3>
 <p class="description">Find a PWG media size by ISO/IPP legacy name.</p>
 <p class="code">
 <a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForLegacy (<br>
@@ -3365,7 +3239,7 @@ otherwise it is initialized to 0.
 &quot;iso-a4&quot; or &quot;na-letter&quot;.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="pwgMediaForPPD">pwgMediaForPPD</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="pwgMediaForPPD">pwgMediaForPPD</a></h3>
 <p class="description">Find a PWG media size by Adobe PPD name.</p>
 <p class="code">
 <a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPPD (<br>
@@ -3389,7 +3263,7 @@ thread.  Custom names can be of the form &quot;Custom.WIDTHxLENGTH[units]&quot;
 &quot;WIDTHxLENGTH[units]&quot;.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="pwgMediaForPWG">pwgMediaForPWG</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="pwgMediaForPWG">pwgMediaForPWG</a></h3>
 <p class="description">Find a PWG media size by 5101.1 self-describing name.</p>
 <p class="code">
 <a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPWG (<br>
@@ -3411,7 +3285,7 @@ thread-local storage and is overwritten by each call to the function in the
 thread.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="pwgMediaForSize">pwgMediaForSize</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="pwgMediaForSize">pwgMediaForSize</a></h3>
 <p class="description">Get the PWG media size for the given dimensions.</p>
 <p class="code">
 <a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForSize (<br>
@@ -3437,19 +3311,19 @@ thread.
 
 </p>
 <h2 class="title"><a name="TYPES">Data Types</a></h2>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="cups_client_cert_cb_t">cups_client_cert_cb_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="cups_client_cert_cb_t">cups_client_cert_cb_t</a></h3>
 <p class="description">Client credentials callback
 </p>
 <p class="code">
 typedef int (*cups_client_cert_cb_t)(http_t *http, void *tls, cups_array_t *distinguished_names, void *user_data);
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cups_dest_block_t">cups_dest_block_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cups_dest_block_t">cups_dest_block_t</a></h3>
 <p class="description">Destination enumeration block
 </p>
 <p class="code">
 typedef int (*cups_dest_block_t(unsigned flags, <a href="#cups_dest_t">cups_dest_t</a> *dest);
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cups_dest_cb_t">cups_dest_cb_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cups_dest_cb_t">cups_dest_cb_t</a></h3>
 <p class="description">Destination enumeration callback
 </p>
 <p class="code">
@@ -3460,13 +3334,7 @@ typedef int (*cups_dest_cb_t)(void *user_data, unsigned flags, <a href="#cups_de
 <p class="code">
 typedef struct <a href="#cups_dest_s">cups_dest_s</a> cups_dest_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cups_device_cb_t">cups_device_cb_t</a></h3>
-<p class="description">Device callback
-</p>
-<p class="code">
-typedef void (*cups_device_cb_t)(const char *device_class, const char *device_id, const char *device_info, const char *device_make_and_model, const char *device_uri, const char *device_location, void *user_data);
-</p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cups_dinfo_t">cups_dinfo_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cups_dinfo_t">cups_dinfo_t</a></h3>
 <p class="description">Destination capability and status
 information </p>
 <p class="code">
@@ -3482,7 +3350,7 @@ typedef struct <a href="#cups_job_s">cups_job_s</a> cups_job_t;
 <p class="code">
 typedef struct <a href="#cups_option_s">cups_option_s</a> cups_option_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cups_password_cb2_t">cups_password_cb2_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cups_password_cb2_t">cups_password_cb2_t</a></h3>
 <p class="description">New password callback
 </p>
 <p class="code">
@@ -3498,13 +3366,13 @@ typedef const char *(*cups_password_cb_t)(const char *prompt);
 <p class="code">
 typedef unsigned cups_ptype_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="cups_server_cert_cb_t">cups_server_cert_cb_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="cups_server_cert_cb_t">cups_server_cert_cb_t</a></h3>
 <p class="description">Server credentials callback
 </p>
 <p class="code">
 typedef int (*cups_server_cert_cb_t)(http_t *http, void *tls, cups_array_t *certs, void *user_data);
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cups_size_t">cups_size_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cups_size_t">cups_size_t</a></h3>
 <p class="description">Media Size </p>
 <p class="code">
 typedef struct <a href="#cups_size_s">cups_size_s</a> cups_size_t;
@@ -3597,7 +3465,7 @@ typedef struct <a href="#pwg_size_s">pwg_size_s</a> pwg_size_t;
 <dt>value </dt>
 <dd class="description">Value of option</dd>
 </dl>
-<h3 class="struct"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="cups_size_s">cups_size_s</a></h3>
+<h3 class="struct"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="cups_size_s">cups_size_s</a></h3>
 <p class="description">Media Size </p>
 <p class="code">struct cups_size_s {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char media[128];<br>
@@ -3676,8 +3544,8 @@ constants</p>
 <h4 class="constants">Constants</h4>
 <dl>
 <dt>CUPS_PRINTER_3D <span class="info">&nbsp;CUPS 2.1&nbsp;</span></dt>
-<dd class="description">3D Printing </dd>
-<dt>CUPS_PRINTER_AUTHENTICATED <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dd class="description">Printer with 3D capabilities </dd>
+<dt>CUPS_PRINTER_AUTHENTICATED <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Printer requires authentication
 </dd>
 <dt>CUPS_PRINTER_BIND </dt>
@@ -3690,7 +3558,7 @@ constants</p>
 <dd class="description">Can collage copies</dd>
 <dt>CUPS_PRINTER_COLOR </dt>
 <dd class="description">Can do color printing</dd>
-<dt>CUPS_PRINTER_COMMANDS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>CUPS_PRINTER_COMMANDS <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Printer supports maintenance commands
 </dd>
 <dt>CUPS_PRINTER_COPIES </dt>
@@ -3699,7 +3567,7 @@ constants</p>
 <dd class="description">Can cover output</dd>
 <dt>CUPS_PRINTER_DEFAULT </dt>
 <dd class="description">Default printer on network</dd>
-<dt>CUPS_PRINTER_DELETE <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>CUPS_PRINTER_DELETE <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Delete printer
 </dd>
 <dt>CUPS_PRINTER_DUPLEX </dt>
@@ -3712,10 +3580,10 @@ constants</p>
 <dd class="description">Local printer or class</dd>
 <dt>CUPS_PRINTER_MEDIUM </dt>
 <dd class="description">Can do Tabloid/B/C/A3/A2</dd>
-<dt>CUPS_PRINTER_MFP <span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span></dt>
+<dt>CUPS_PRINTER_MFP <span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span></dt>
 <dd class="description">Printer with scanning capabilities
 </dd>
-<dt>CUPS_PRINTER_NOT_SHARED <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>CUPS_PRINTER_NOT_SHARED <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Printer is not shared
 </dd>
 <dt>CUPS_PRINTER_PUNCH </dt>
@@ -3724,7 +3592,7 @@ constants</p>
 <dd class="description">Printer is rejecting jobs</dd>
 <dt>CUPS_PRINTER_REMOTE </dt>
 <dd class="description">Remote printer or class</dd>
-<dt>CUPS_PRINTER_SCANNER <span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span></dt>
+<dt>CUPS_PRINTER_SCANNER <span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span></dt>
 <dd class="description">Scanner-only device
 </dd>
 <dt>CUPS_PRINTER_SMALL </dt>
diff --git a/doc/help/api-driver.html b/doc/help/api-driver.html
deleted file mode 100644 (file)
index d0e4a55..0000000
+++ /dev/null
@@ -1,1156 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Programming -->
-<head>
-       <title>Printer Driver API       </title>
-       <meta name="keywords" content="Programming">
-       <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
-<style type="text/css"><!--
-BODY {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1, H2, H3, H4, H5, H6, P, TD, TH {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-KBD {
-  font-family: monaco, courier, monospace;
-  font-weight: bold;
-}
-
-PRE {
-  font-family: monaco, courier, monospace;
-}
-
-PRE.command {
-  border: dotted thin #7f7f7f;
-  margin-left: 36pt;
-  padding: 10px;
-}
-
-P.compact {
-  margin: 0;
-}
-
-P.example {
-  font-style: italic;
-  margin-left: 36pt;
-}
-  
-PRE.example {
-  background: #eeeeee;
-  border: dotted thin #999999;
-  margin-left: 36pt;
-  padding: 10pt;
-}
-
-PRE.command EM, PRE.example EM {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-P.command {
-  font-family: monaco, courier, monospace;
-  margin-left: 36pt;
-}
-
-P.formula {
-  font-style: italic;
-  margin-left: 36pt;
-}
-
-BLOCKQUOTE {
-  background: #eeeeee;
-  border: solid thin #999999;
-  padding: 10pt;
-}
-
-A IMG {
-  border: none;
-}
-
-A:link:hover IMG {
-  background: #f0f0f0;
-  border-radius: 10px;
-  -moz-border-radius: 10px;
-}
-
-A:link, A:visited {
-  font-weight: normal;
-  text-decoration: none;
-}
-
-A:link:hover, A:visited:hover, A:active {
-  text-decoration: underline;
-}
-
-SUB, SUP {
-  font-size: 50%;
-}
-
-TR.data, TD.data, TR.data TD {
-  margin-top: 10pt;
-  padding: 5pt;
-  border-bottom: solid 1pt #999999;
-}
-
-TR.data TH {
-  border-bottom: solid 1pt #999999;
-  padding-top: 10pt;
-  padding-left: 5pt;
-  text-align: left;
-}
-
-DIV.table TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table CAPTION {
-  caption-side: top;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table TABLE TD {
-  border: solid thin #cccccc;
-  padding-top: 5pt;
-}
-
-DIV.table TABLE TH {
-  background: #cccccc;
-  border: none;
-  border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.figure CAPTION {
-  caption-side: bottom;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-TH.label {
-  text-align: right;
-  vertical-align: top;
-}
-
-TH.sublabel {
-  text-align: right;
-  font-weight: normal;
-}
-
-HR {
-  border: solid thin;
-}
-
-SPAN.info {
-  background: black;
-  border: thin solid black;
-  color: white;
-  font-size: 80%;
-  font-style: italic;
-  font-weight: bold;
-  white-space: nowrap;
-}
-
-H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
-  float: right;
-  font-size: 100%;
-}
-
-H1.title {
-}
-
-H2.title, H3.title {
-  border-bottom: solid 2pt #000000;
-}
-
-DIV.indent, TABLE.indent {
-  margin-top: 2em;
-  margin-left: auto;
-  margin-right: auto;
-  width: 90%;
-}
-
-TABLE.indent {
-  border-collapse: collapse;
-}
-
-TABLE.indent TD, TABLE.indent TH {
-  padding: 0;
-}
-
-TABLE.list {
-  border-collapse: collapse;
-  margin-left: auto;
-  margin-right: auto;
-  width: 90%;
-}
-
-TABLE.list TH {
-  background: white;
-  border-bottom: solid thin #cccccc;
-  color: #444444;
-  padding-top: 10pt;
-  padding-left: 5pt;
-  text-align: left;
-  vertical-align: bottom;
-  white-space: nowrap;
-}
-
-TABLE.list TH A {
-  color: #4444cc;
-}
-
-TABLE.list TD {
-  border-bottom: solid thin #eeeeee;
-  padding-top: 5pt;
-  padding-left: 5pt;
-}
-
-TABLE.list TR:nth-child(even) {
-  background: #f8f8f8;
-}
-
-TABLE.list TR:nth-child(odd) {
-  background: #f4f4f4;
-}
-
-DT {
-  margin-left: 36pt;
-  margin-top: 12pt;
-}
-
-DD {
-  margin-left: 54pt;
-}
-
-DL.category DT {
-  font-weight: bold;
-}
-
-P.summary {
-  margin-left: 36pt;
-  font-family: monaco, courier, monospace;
-}
-
-DIV.summary TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin: 10px;
-}
-
-DIV.summary TABLE TD, DIV.summary TABLE TH {
-  border: solid thin #999999;
-  padding: 5px;
-  text-align: left;
-  vertical-align: top;
-}
-
-DIV.summary TABLE THEAD TH {
-  background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
-  margin: 0;
-}
-div.body h2 {
-  margin-top: 1.5em;
-}
-div.body h3, div.body h4, div.body h5 {
-  margin-bottom: 0.5em;
-  margin-top: 1.5em;
-}
-.class, .enumeration, .function, .struct, .typedef, .union {
-  border-bottom: solid thin #999999;
-  margin-bottom: 0;
-  margin-top: 2em;
-}
-.description {
-  margin-top: 0.5em;
-}
-code, p.code, pre, ul.code li {
-  font-family: monaco, courier, monospace;
-  font-size: 90%;
-}
-ul.code, ul.contents, ul.subcontents {
-  list-style-type: none;
-  margin: 0;
-  padding-left: 0;
-}
-ul.code li {
-  margin: 0;
-}
-ul.contents > li {
-  margin-top: 1em;
-}
-ul.contents li ul.code, ul.contents li ul.subcontents {
-  padding-left: 2em;
-}
-div.body dl {
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dt {
-  font-style: italic;
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dd {
-  margin-bottom: 0.5em;
-}
-
-/* This is just for the HTML files generated with the framedhelp target */
-div.contents {
-  background: #e8e8e8;
-  border: solid thin black;
-  padding: 10px;
-}
-div.contents h1 {
-  font-size: 110%;
-}
-div.contents h2 {
-  font-size: 100%;
-}
-div.contents ul.contents {
-  font-size: 80%;
-}
-div.contents ul.subcontents li {
-  margin-left: 1em;
-  text-indent: -1em;
-}
---></style>
-</head>
-<body>
-<div class='body'>
-<!--
-  "$Id$"
-
-  Driver API header for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h1 class='title'>Driver API</h1>
-
-<div class='summary'><table summary='General Information'>
-<thead>
-<tr>
-       <th>Header</th>
-       <th>cups/driver.h</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-       <th>Library</th>
-       <td>-lcupsdriver</td>
-</tr>
-<tr>
-       <th>See Also</th>
-       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
-</tr>
-</tbody>
-</table></div>
-<h2 class="title">Contents</h2>
-<ul class="contents">
-<li><a href="#OVERVIEW">Overview</a></li>
-<li><a href="#FUNCTIONS">Functions</a><ul class="code">
-       <li><a href="#cupsCMYKDelete" title="Delete a color separation.">cupsCMYKDelete</a></li>
-       <li><a href="#cupsCMYKDoBlack" title="Do a black separation...">cupsCMYKDoBlack</a></li>
-       <li><a href="#cupsCMYKDoCMYK" title="Do a CMYK separation...">cupsCMYKDoCMYK</a></li>
-       <li><a href="#cupsCMYKDoGray" title="Do a grayscale separation...">cupsCMYKDoGray</a></li>
-       <li><a href="#cupsCMYKDoRGB" title="Do an sRGB separation...">cupsCMYKDoRGB</a></li>
-       <li><a href="#cupsCMYKLoad" title="Load a CMYK color profile from PPD attributes.">cupsCMYKLoad</a></li>
-       <li><a href="#cupsCMYKNew" title="Create a new CMYK color separation.">cupsCMYKNew</a></li>
-       <li><a href="#cupsCMYKSetBlack" title="Set the transition range for CMY to black.">cupsCMYKSetBlack</a></li>
-       <li><a href="#cupsCMYKSetCurve" title="Set a color transform curve using points.">cupsCMYKSetCurve</a></li>
-       <li><a href="#cupsCMYKSetGamma" title="Set a color transform curve using gamma and density.">cupsCMYKSetGamma</a></li>
-       <li><a href="#cupsCMYKSetInkLimit" title="Set the limit on the amount of ink.">cupsCMYKSetInkLimit</a></li>
-       <li><a href="#cupsCMYKSetLtDk" title="Set light/dark ink transforms.">cupsCMYKSetLtDk</a></li>
-       <li><a href="#cupsCheckBytes" title="Check to see if all bytes are zero.">cupsCheckBytes</a></li>
-       <li><a href="#cupsCheckValue" title="Check to see if all bytes match the given value.">cupsCheckValue</a></li>
-       <li><a href="#cupsDitherDelete" title="Free a dithering buffer.">cupsDitherDelete</a></li>
-       <li><a href="#cupsDitherLine" title="Dither a line of pixels...">cupsDitherLine</a></li>
-       <li><a href="#cupsDitherNew" title="Create an error-diffusion dithering buffer.">cupsDitherNew</a></li>
-       <li><a href="#cupsFindAttr" title="Find a PPD attribute based on the colormodel,
-media, and resolution.">cupsFindAttr</a></li>
-       <li><a href="#cupsLutDelete" title="Free the memory used by a lookup table.">cupsLutDelete</a></li>
-       <li><a href="#cupsLutLoad" title="Load a LUT from a PPD file.">cupsLutLoad</a></li>
-       <li><a href="#cupsLutNew" title="Make a lookup table from a list of pixel values.">cupsLutNew</a></li>
-       <li><a href="#cupsPackHorizontal" title="Pack pixels horizontally...">cupsPackHorizontal</a></li>
-       <li><a href="#cupsPackHorizontal2" title="Pack 2-bit pixels horizontally...">cupsPackHorizontal2</a></li>
-       <li><a href="#cupsPackHorizontalBit" title="Pack pixels horizontally by bit...">cupsPackHorizontalBit</a></li>
-       <li><a href="#cupsPackVertical" title="Pack pixels vertically...">cupsPackVertical</a></li>
-       <li><a href="#cupsRGBDelete" title="Delete a color separation.">cupsRGBDelete</a></li>
-       <li><a href="#cupsRGBDoGray" title="Do a grayscale separation...">cupsRGBDoGray</a></li>
-       <li><a href="#cupsRGBDoRGB" title="Do a RGB separation...">cupsRGBDoRGB</a></li>
-       <li><a href="#cupsRGBLoad" title="Load a RGB color profile from a PPD file.">cupsRGBLoad</a></li>
-       <li><a href="#cupsRGBNew" title="Create a new RGB color separation.">cupsRGBNew</a></li>
-</ul></li>
-<li><a href="#TYPES">Data Types</a><ul class="code">
-       <li><a href="#cups_cmyk_t" title="Simple CMYK lookup table">cups_cmyk_t</a></li>
-       <li><a href="#cups_dither_t" title="Dithering State">cups_dither_t</a></li>
-       <li><a href="#cups_lut_t" title="Lookup Table for Dithering">cups_lut_t</a></li>
-       <li><a href="#cups_rgb_t" title="Color separation lookup table">cups_rgb_t</a></li>
-       <li><a href="#cups_sample_t" title="Color sample point">cups_sample_t</a></li>
-</ul></li>
-<li><a href="#STRUCTURES">Structures</a><ul class="code">
-       <li><a href="#cups_cmyk_s" title="Simple CMYK lookup table">cups_cmyk_s</a></li>
-       <li><a href="#cups_dither_s" title="Dithering State">cups_dither_s</a></li>
-       <li><a href="#cups_lut_s" title="Lookup Table for Dithering">cups_lut_s</a></li>
-       <li><a href="#cups_rgb_s" title="Color separation lookup table">cups_rgb_s</a></li>
-       <li><a href="#cups_sample_s" title="Color sample point">cups_sample_s</a></li>
-</ul></li>
-<li><a href="#VARIABLES">Variables</a><ul class="code">
-       <li><a href="#cups_scmy_lut[256]" title="sRGB gamma lookup table (inverted)">cups_scmy_lut[256]</a></li>
-       <li><a href="#cups_srgb_lut[256]" title="sRGB gamma lookup table">cups_srgb_lut[256]</a></li>
-</ul></li>
-</ul>
-<!--
-  "$Id$"
-
-  Driver API introduction for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
-
-<p>The driver API provides common dithering, color conversion, and utility
-functions for CUPS drivers.</p>
-<h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
-<h3 class="function"><a name="cupsCMYKDelete">cupsCMYKDelete</a></h3>
-<p class="description">Delete a color separation.</p>
-<p class="code">
-void cupsCMYKDelete (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">Color separation</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKDoBlack">cupsCMYKDoBlack</a></h3>
-<p class="description">Do a black separation...</p>
-<p class="code">
-void cupsCMYKDoBlack (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const <a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *input,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;short *output,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_pixels<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">Color separation</dd>
-<dt>input</dt>
-<dd class="description">Input grayscale pixels</dd>
-<dt>output</dt>
-<dd class="description">Output Device-N pixels</dd>
-<dt>num_pixels</dt>
-<dd class="description">Number of pixels</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKDoCMYK">cupsCMYKDoCMYK</a></h3>
-<p class="description">Do a CMYK separation...</p>
-<p class="code">
-void cupsCMYKDoCMYK (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const <a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *input,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;short *output,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_pixels<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">Color separation</dd>
-<dt>input</dt>
-<dd class="description">Input grayscale pixels</dd>
-<dt>output</dt>
-<dd class="description">Output Device-N pixels</dd>
-<dt>num_pixels</dt>
-<dd class="description">Number of pixels</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKDoGray">cupsCMYKDoGray</a></h3>
-<p class="description">Do a grayscale separation...</p>
-<p class="code">
-void cupsCMYKDoGray (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const <a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *input,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;short *output,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_pixels<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">Color separation</dd>
-<dt>input</dt>
-<dd class="description">Input grayscale pixels</dd>
-<dt>output</dt>
-<dd class="description">Output Device-N pixels</dd>
-<dt>num_pixels</dt>
-<dd class="description">Number of pixels</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKDoRGB">cupsCMYKDoRGB</a></h3>
-<p class="description">Do an sRGB separation...</p>
-<p class="code">
-void cupsCMYKDoRGB (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const <a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *input,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;short *output,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_pixels<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">Color separation</dd>
-<dt>input</dt>
-<dd class="description">Input grayscale pixels</dd>
-<dt>output</dt>
-<dd class="description">Output Device-N pixels</dd>
-<dt>num_pixels</dt>
-<dd class="description">Number of pixels</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKLoad">cupsCMYKLoad</a></h3>
-<p class="description">Load a CMYK color profile from PPD attributes.</p>
-<p class="code">
-<a href="#cups_cmyk_t">cups_cmyk_t</a> *cupsCMYKLoad (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ppd_file_t *ppd,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *colormodel,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *media,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *resolution<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ppd</dt>
-<dd class="description">PPD file</dd>
-<dt>colormodel</dt>
-<dd class="description">ColorModel value</dd>
-<dt>media</dt>
-<dd class="description">MediaType value</dd>
-<dt>resolution</dt>
-<dd class="description">Resolution value</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">CMYK color separation</p>
-<h3 class="function"><a name="cupsCMYKNew">cupsCMYKNew</a></h3>
-<p class="description">Create a new CMYK color separation.</p>
-<p class="code">
-<a href="#cups_cmyk_t">cups_cmyk_t</a> *cupsCMYKNew (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_channels<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>num_channels</dt>
-<dd class="description">Number of color components</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New CMYK separation or NULL</p>
-<h3 class="function"><a name="cupsCMYKSetBlack">cupsCMYKSetBlack</a></h3>
-<p class="description">Set the transition range for CMY to black.</p>
-<p class="code">
-void cupsCMYKSetBlack (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float lower,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float upper<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">CMYK color separation</dd>
-<dt>lower</dt>
-<dd class="description">No black ink</dd>
-<dt>upper</dt>
-<dd class="description">Only black ink</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKSetCurve">cupsCMYKSetCurve</a></h3>
-<p class="description">Set a color transform curve using points.</p>
-<p class="code">
-void cupsCMYKSetCurve (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int channel,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_xypoints,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const float *xypoints<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">CMYK color separation</dd>
-<dt>channel</dt>
-<dd class="description">Color channel</dd>
-<dt>num_xypoints</dt>
-<dd class="description">Number of X,Y points</dd>
-<dt>xypoints</dt>
-<dd class="description">X,Y points</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKSetGamma">cupsCMYKSetGamma</a></h3>
-<p class="description">Set a color transform curve using gamma and density.</p>
-<p class="code">
-void cupsCMYKSetGamma (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int channel,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float gamval,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float density<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">CMYK color separation</dd>
-<dt>channel</dt>
-<dd class="description">Ink channel</dd>
-<dt>gamval</dt>
-<dd class="description">Gamma correction</dd>
-<dt>density</dt>
-<dd class="description">Maximum density</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKSetInkLimit">cupsCMYKSetInkLimit</a></h3>
-<p class="description">Set the limit on the amount of ink.</p>
-<p class="code">
-void cupsCMYKSetInkLimit (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float limit<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">CMYK color separation</dd>
-<dt>limit</dt>
-<dd class="description">Limit of ink</dd>
-</dl>
-<h3 class="function"><a name="cupsCMYKSetLtDk">cupsCMYKSetLtDk</a></h3>
-<p class="description">Set light/dark ink transforms.</p>
-<p class="code">
-void cupsCMYKSetLtDk (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_cmyk_t">cups_cmyk_t</a> *cmyk,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int channel,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float light,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float dark<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>cmyk</dt>
-<dd class="description">CMYK color separation</dd>
-<dt>channel</dt>
-<dd class="description">Dark ink channel (+1 for light)</dd>
-<dt>light</dt>
-<dd class="description">Light ink only level</dd>
-<dt>dark</dt>
-<dd class="description">Dark ink only level</dd>
-</dl>
-<h3 class="function"><a name="cupsCheckBytes">cupsCheckBytes</a></h3>
-<p class="description">Check to see if all bytes are zero.</p>
-<p class="code">
-int cupsCheckBytes (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *bytes,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int length<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>bytes</dt>
-<dd class="description">Bytes to check</dd>
-<dt>length</dt>
-<dd class="description">Number of bytes to check</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">1 if they match</p>
-<h3 class="function"><a name="cupsCheckValue">cupsCheckValue</a></h3>
-<p class="description">Check to see if all bytes match the given value.</p>
-<p class="code">
-int cupsCheckValue (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *bytes,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int length,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char value<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>bytes</dt>
-<dd class="description">Bytes to check</dd>
-<dt>length</dt>
-<dd class="description">Number of bytes to check</dd>
-<dt>value</dt>
-<dd class="description">Value to check</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">1 if they match</p>
-<h3 class="function"><a name="cupsDitherDelete">cupsDitherDelete</a></h3>
-<p class="description">Free a dithering buffer.</p>
-<p class="code">
-void cupsDitherDelete (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_dither_t">cups_dither_t</a> *d<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>d</dt>
-<dd class="description">Dithering buffer</dd>
-</dl>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">Returns 0 on success, -1 on failure.</p>
-<h3 class="function"><a name="cupsDitherLine">cupsDitherLine</a></h3>
-<p class="description">Dither a line of pixels...</p>
-<p class="code">
-void cupsDitherLine (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_dither_t">cups_dither_t</a> *d,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const <a href="#cups_lut_t">cups_lut_t</a> *lut,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const short *data,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_channels,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *p<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>d</dt>
-<dd class="description">Dither data</dd>
-<dt>lut</dt>
-<dd class="description">Lookup table</dd>
-<dt>data</dt>
-<dd class="description">Separation data</dd>
-<dt>num_channels</dt>
-<dd class="description">Number of components</dd>
-<dt>p</dt>
-<dd class="description">Pixels</dd>
-</dl>
-<h3 class="function"><a name="cupsDitherNew">cupsDitherNew</a></h3>
-<p class="description">Create an error-diffusion dithering buffer.</p>
-<p class="code">
-<a href="#cups_dither_t">cups_dither_t</a> *cupsDitherNew (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int width<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>width</dt>
-<dd class="description">Width of output in pixels</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New state array</p>
-<h3 class="function"><a name="cupsFindAttr">cupsFindAttr</a></h3>
-<p class="description">Find a PPD attribute based on the colormodel,
-media, and resolution.</p>
-<p class="code">
-ppd_attr_t *cupsFindAttr (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ppd_file_t *ppd,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *colormodel,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *media,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *resolution,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *spec,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int specsize<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ppd</dt>
-<dd class="description">PPD file</dd>
-<dt>name</dt>
-<dd class="description">Attribute name</dd>
-<dt>colormodel</dt>
-<dd class="description">Color model</dd>
-<dt>media</dt>
-<dd class="description">Media type</dd>
-<dt>resolution</dt>
-<dd class="description">Resolution</dd>
-<dt>spec</dt>
-<dd class="description">Final selection string</dd>
-<dt>specsize</dt>
-<dd class="description">Size of string buffer</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Matching attribute or NULL</p>
-<h3 class="function"><a name="cupsLutDelete">cupsLutDelete</a></h3>
-<p class="description">Free the memory used by a lookup table.</p>
-<p class="code">
-void cupsLutDelete (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_lut_t">cups_lut_t</a> *lut<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>lut</dt>
-<dd class="description">Lookup table to free</dd>
-</dl>
-<h3 class="function"><a name="cupsLutLoad">cupsLutLoad</a></h3>
-<p class="description">Load a LUT from a PPD file.</p>
-<p class="code">
-<a href="#cups_lut_t">cups_lut_t</a> *cupsLutLoad (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ppd_file_t *ppd,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *colormodel,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *media,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *resolution,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *ink<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ppd</dt>
-<dd class="description">PPD file</dd>
-<dt>colormodel</dt>
-<dd class="description">Color model</dd>
-<dt>media</dt>
-<dd class="description">Media type</dd>
-<dt>resolution</dt>
-<dd class="description">Resolution</dd>
-<dt>ink</dt>
-<dd class="description">Ink name</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New lookup table</p>
-<h3 class="function"><a name="cupsLutNew">cupsLutNew</a></h3>
-<p class="description">Make a lookup table from a list of pixel values.</p>
-<p class="code">
-<a href="#cups_lut_t">cups_lut_t</a> *cupsLutNew (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_values,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const float *values<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>num_values</dt>
-<dd class="description">Number of values</dd>
-<dt>values</dt>
-<dd class="description">Lookup table values</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New lookup table</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">Returns a pointer to the lookup table on success, NULL on failure.</p>
-<h3 class="function"><a name="cupsPackHorizontal">cupsPackHorizontal</a></h3>
-<p class="description">Pack pixels horizontally...</p>
-<p class="code">
-void cupsPackHorizontal (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *ipixels,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *obytes,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int width,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char clearto,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const int step<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ipixels</dt>
-<dd class="description">Input pixels</dd>
-<dt>obytes</dt>
-<dd class="description">Output bytes</dd>
-<dt>width</dt>
-<dd class="description">Number of pixels</dd>
-<dt>clearto</dt>
-<dd class="description">Initial value of bytes</dd>
-<dt>step</dt>
-<dd class="description">Step value between pixels</dd>
-</dl>
-<h3 class="function"><a name="cupsPackHorizontal2">cupsPackHorizontal2</a></h3>
-<p class="description">Pack 2-bit pixels horizontally...</p>
-<p class="code">
-void cupsPackHorizontal2 (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *ipixels,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *obytes,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int width,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const int step<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ipixels</dt>
-<dd class="description">Input pixels</dd>
-<dt>obytes</dt>
-<dd class="description">Output bytes</dd>
-<dt>width</dt>
-<dd class="description">Number of pixels</dd>
-<dt>step</dt>
-<dd class="description">Stepping value</dd>
-</dl>
-<h3 class="function"><a name="cupsPackHorizontalBit">cupsPackHorizontalBit</a></h3>
-<p class="description">Pack pixels horizontally by bit...</p>
-<p class="code">
-void cupsPackHorizontalBit (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *ipixels,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *obytes,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int width,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char clearto,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char bit<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ipixels</dt>
-<dd class="description">Input pixels</dd>
-<dt>obytes</dt>
-<dd class="description">Output bytes</dd>
-<dt>width</dt>
-<dd class="description">Number of pixels</dd>
-<dt>clearto</dt>
-<dd class="description">Initial value of bytes</dd>
-<dt>bit</dt>
-<dd class="description">Bit to check</dd>
-</dl>
-<h3 class="function"><a name="cupsPackVertical">cupsPackVertical</a></h3>
-<p class="description">Pack pixels vertically...</p>
-<p class="code">
-void cupsPackVertical (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *ipixels,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *obytes,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int width,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char bit,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const int step<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ipixels</dt>
-<dd class="description">Input pixels</dd>
-<dt>obytes</dt>
-<dd class="description">Output bytes</dd>
-<dt>width</dt>
-<dd class="description">Number of input pixels</dd>
-<dt>bit</dt>
-<dd class="description">Output bit</dd>
-<dt>step</dt>
-<dd class="description">Number of bytes between columns</dd>
-</dl>
-<h3 class="function"><a name="cupsRGBDelete">cupsRGBDelete</a></h3>
-<p class="description">Delete a color separation.</p>
-<p class="code">
-void cupsRGBDelete (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_rgb_t">cups_rgb_t</a> *rgbptr<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>rgbptr</dt>
-<dd class="description">Color separation</dd>
-</dl>
-<h3 class="function"><a name="cupsRGBDoGray">cupsRGBDoGray</a></h3>
-<p class="description">Do a grayscale separation...</p>
-<p class="code">
-void cupsRGBDoGray (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_rgb_t">cups_rgb_t</a> *rgbptr,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *input,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *output,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_pixels<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>rgbptr</dt>
-<dd class="description">Color separation</dd>
-<dt>input</dt>
-<dd class="description">Input grayscale pixels</dd>
-<dt>output</dt>
-<dd class="description">Output Device-N pixels</dd>
-<dt>num_pixels</dt>
-<dd class="description">Number of pixels</dd>
-</dl>
-<h3 class="function"><a name="cupsRGBDoRGB">cupsRGBDoRGB</a></h3>
-<p class="description">Do a RGB separation...</p>
-<p class="code">
-void cupsRGBDoRGB (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_rgb_t">cups_rgb_t</a> *rgbptr,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const unsigned char *input,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char *output,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_pixels<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>rgbptr</dt>
-<dd class="description">Color separation</dd>
-<dt>input</dt>
-<dd class="description">Input RGB pixels</dd>
-<dt>output</dt>
-<dd class="description">Output Device-N pixels</dd>
-<dt>num_pixels</dt>
-<dd class="description">Number of pixels</dd>
-</dl>
-<h3 class="function"><a name="cupsRGBLoad">cupsRGBLoad</a></h3>
-<p class="description">Load a RGB color profile from a PPD file.</p>
-<p class="code">
-<a href="#cups_rgb_t">cups_rgb_t</a> *cupsRGBLoad (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;ppd_file_t *ppd,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *colormodel,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *media,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *resolution<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ppd</dt>
-<dd class="description">PPD file</dd>
-<dt>colormodel</dt>
-<dd class="description">Color model</dd>
-<dt>media</dt>
-<dd class="description">Media type</dd>
-<dt>resolution</dt>
-<dd class="description">Resolution</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New color profile</p>
-<h3 class="function"><a name="cupsRGBNew">cupsRGBNew</a></h3>
-<p class="description">Create a new RGB color separation.</p>
-<p class="code">
-<a href="#cups_rgb_t">cups_rgb_t</a> *cupsRGBNew (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_samples,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_sample_t">cups_sample_t</a> *samples,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int cube_size,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_channels<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>num_samples</dt>
-<dd class="description">Number of samples</dd>
-<dt>samples</dt>
-<dd class="description">Samples</dd>
-<dt>cube_size</dt>
-<dd class="description">Size of LUT cube</dd>
-<dt>num_channels</dt>
-<dd class="description">Number of color components</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New color separation or NULL</p>
-<h2 class="title"><a name="TYPES">Data Types</a></h2>
-<h3 class="typedef"><a name="cups_cmyk_t">cups_cmyk_t</a></h3>
-<p class="description">Simple CMYK lookup table</p>
-<p class="code">
-typedef struct <a href="#cups_cmyk_s">cups_cmyk_s</a> cups_cmyk_t;
-</p>
-<h3 class="typedef"><a name="cups_dither_t">cups_dither_t</a></h3>
-<p class="description">Dithering State</p>
-<p class="code">
-typedef struct <a href="#cups_dither_s">cups_dither_s</a> cups_dither_t;
-</p>
-<h3 class="typedef"><a name="cups_lut_t">cups_lut_t</a></h3>
-<p class="description">Lookup Table for Dithering</p>
-<p class="code">
-typedef struct <a href="#cups_lut_s">cups_lut_s</a> cups_lut_t;
-</p>
-<h3 class="typedef"><a name="cups_rgb_t">cups_rgb_t</a></h3>
-<p class="description">Color separation lookup table</p>
-<p class="code">
-typedef struct <a href="#cups_rgb_s">cups_rgb_s</a> cups_rgb_t;
-</p>
-<h3 class="typedef"><a name="cups_sample_t">cups_sample_t</a></h3>
-<p class="description">Color sample point</p>
-<p class="code">
-typedef struct <a href="#cups_sample_s">cups_sample_s</a> cups_sample_t;
-</p>
-<h2 class="title"><a name="STRUCTURES">Structures</a></h2>
-<h3 class="struct"><a name="cups_cmyk_s">cups_cmyk_s</a></h3>
-<p class="description">Simple CMYK lookup table</p>
-<p class="code">struct cups_cmyk_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char black_lut[256];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;short *channels[CUPS_MAX_CHAN];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char color_lut[256];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int ink_limit;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_channels;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>black_lut[256] </dt>
-<dd class="description">Black generation LUT</dd>
-<dt>channels[CUPS_MAX_CHAN] </dt>
-<dd class="description">Lookup tables</dd>
-<dt>color_lut[256] </dt>
-<dd class="description">Color removal LUT</dd>
-<dt>ink_limit </dt>
-<dd class="description">Ink limit</dd>
-<dt>num_channels </dt>
-<dd class="description">Number of components</dd>
-</dl>
-<h3 class="struct"><a name="cups_dither_s">cups_dither_s</a></h3>
-<p class="description">Dithering State</p>
-<p class="code">struct cups_dither_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int errors[96];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int row;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int width;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>errors[96] </dt>
-<dd class="description">Error values</dd>
-<dt>row </dt>
-<dd class="description">Current row</dd>
-<dt>width </dt>
-<dd class="description">Width of buffer</dd>
-</dl>
-<h3 class="struct"><a name="cups_lut_s">cups_lut_s</a></h3>
-<p class="description">Lookup Table for Dithering</p>
-<p class="code">struct cups_lut_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int error;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;short intensity;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;short pixel;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>error </dt>
-<dd class="description">Error from desired value</dd>
-<dt>intensity </dt>
-<dd class="description">Adjusted intensity</dd>
-<dt>pixel </dt>
-<dd class="description">Output pixel value</dd>
-</dl>
-<h3 class="struct"><a name="cups_rgb_s">cups_rgb_s</a></h3>
-<p class="description">Color separation lookup table</p>
-<p class="code">struct cups_rgb_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char black[CUPS_MAX_RGB];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int cache_init;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char ****colors;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int cube_index[256];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int cube_mult[256];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int cube_size;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int num_channels;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char white[CUPS_MAX_RGB];<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>black[CUPS_MAX_RGB] </dt>
-<dd class="description">Cached black (sRGB = 0,0,0)</dd>
-<dt>cache_init </dt>
-<dd class="description">Are cached values initialized?</dd>
-<dt>colors </dt>
-<dd class="description">4-D array of sample values</dd>
-<dt>cube_index[256] </dt>
-<dd class="description">Index into cube for a given sRGB value</dd>
-<dt>cube_mult[256] </dt>
-<dd class="description">Multiplier value for a given sRGB value</dd>
-<dt>cube_size </dt>
-<dd class="description">Size of color cube (2-N) on a side</dd>
-<dt>num_channels </dt>
-<dd class="description">Number of colors per sample</dd>
-<dt>white[CUPS_MAX_RGB] </dt>
-<dd class="description">Cached white (sRGB = 255,255,255)</dd>
-</dl>
-<h3 class="struct"><a name="cups_sample_s">cups_sample_s</a></h3>
-<p class="description">Color sample point</p>
-<p class="code">struct cups_sample_s {<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char colors[CUPS_MAX_RGB];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;unsigned char rgb[3];<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>colors[CUPS_MAX_RGB] </dt>
-<dd class="description">Color values</dd>
-<dt>rgb[3] </dt>
-<dd class="description">sRGB values</dd>
-</dl>
-<h2 class="title"><a name="VARIABLES">Variables</a></h2>
-<h3 class="variable"><a name="cups_scmy_lut[256]">cups_scmy_lut[256]</a></h3>
-<p class="description">sRGB gamma lookup table (inverted)</p>
-<p class="code">extern const unsigned char cups_scmy_lut[256];</p>
-<h3 class="variable"><a name="cups_srgb_lut[256]">cups_srgb_lut[256]</a></h3>
-<p class="description">sRGB gamma lookup table</p>
-<p class="code">extern const unsigned char cups_srgb_lut[256];</p>
-</div>
-</body>
-</html>
index 309d09d..218d433 100644 (file)
@@ -5,7 +5,7 @@
        <title>File and Directory APIs  </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id: api-filedir.header 7279 2008-01-31 01:50:44Z mike $"
-
   File and Directory API header for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
@@ -436,8 +434,6 @@ file.">cupsFileRewind</a></li>
 </ul></li>
 </ul>
 <!--
-  "$Id: api-filedir.shtml 7279 2008-01-31 01:50:44Z mike $"
-
   File and directory API introduction for CUPS.
 
   Copyright 2007-2011 by Apple Inc.
@@ -467,7 +463,7 @@ details of directory access/listing and provide a convenient way
 to get both a list of files and the information (permissions,
 size, timestamp, etc.) for each of those files.</p>
 <h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsDirClose">cupsDirClose</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsDirClose">cupsDirClose</a></h3>
 <p class="description">Close a directory.</p>
 <p class="code">
 void cupsDirClose (<br>
@@ -478,7 +474,7 @@ void cupsDirClose (<br>
 <dt>dp</dt>
 <dd class="description">Directory pointer</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsDirOpen">cupsDirOpen</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsDirOpen">cupsDirOpen</a></h3>
 <p class="description">Open a directory.</p>
 <p class="code">
 <a href="#cups_dir_t">cups_dir_t</a> *cupsDirOpen (<br>
@@ -491,7 +487,7 @@ void cupsDirClose (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Directory pointer or <code>NULL</code> if the directory could not be opened.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsDirRead">cupsDirRead</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsDirRead">cupsDirRead</a></h3>
 <p class="description">Read the next directory entry.</p>
 <p class="code">
 <a href="#cups_dentry_t">cups_dentry_t</a> *cupsDirRead (<br>
@@ -504,7 +500,7 @@ void cupsDirClose (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Directory entry or <code>NULL</code> when there are no more</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsDirRewind">cupsDirRewind</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsDirRewind">cupsDirRewind</a></h3>
 <p class="description">Rewind to the start of the directory.</p>
 <p class="code">
 void cupsDirRewind (<br>
@@ -515,7 +511,7 @@ void cupsDirRewind (<br>
 <dt>dp</dt>
 <dd class="description">Directory pointer</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileClose">cupsFileClose</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileClose">cupsFileClose</a></h3>
 <p class="description">Close a CUPS file.</p>
 <p class="code">
 int cupsFileClose (<br>
@@ -528,7 +524,7 @@ int cupsFileClose (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileCompression">cupsFileCompression</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileCompression">cupsFileCompression</a></h3>
 <p class="description">Return whether a file is compressed.</p>
 <p class="code">
 int cupsFileCompression (<br>
@@ -541,7 +537,7 @@ int cupsFileCompression (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description"><code>CUPS_FILE_NONE</code> or <code>CUPS_FILE_GZIP</code></p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileEOF">cupsFileEOF</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileEOF">cupsFileEOF</a></h3>
 <p class="description">Return the end-of-file status.</p>
 <p class="code">
 int cupsFileEOF (<br>
@@ -554,7 +550,7 @@ int cupsFileEOF (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on end of file, 0 otherwise</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileFind">cupsFileFind</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileFind">cupsFileFind</a></h3>
 <p class="description">Find a file using the specified path.</p>
 <p class="code">
 const char *cupsFileFind (<br>
@@ -587,7 +583,7 @@ the supplied paths, <code>NULL</code> is returned. A <code>NULL</code> path only
 matches the current directory.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileFlush">cupsFileFlush</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileFlush">cupsFileFlush</a></h3>
 <p class="description">Flush pending output.</p>
 <p class="code">
 int cupsFileFlush (<br>
@@ -600,7 +596,7 @@ int cupsFileFlush (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileGetChar">cupsFileGetChar</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileGetChar">cupsFileGetChar</a></h3>
 <p class="description">Get a single character from a file.</p>
 <p class="code">
 int cupsFileGetChar (<br>
@@ -613,7 +609,7 @@ int cupsFileGetChar (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Character or -1 on end of file</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileGetConf">cupsFileGetConf</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileGetConf">cupsFileGetConf</a></h3>
 <p class="description">Get a line from a configuration file.</p>
 <p class="code">
 char *cupsFileGetConf (<br>
@@ -638,7 +634,7 @@ char *cupsFileGetConf (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Line read or <code>NULL</code> on end of file or error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileGetLine">cupsFileGetLine</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileGetLine">cupsFileGetLine</a></h3>
 <p class="description">Get a CR and/or LF-terminated line that may
 contain binary data.</p>
 <p class="code">
@@ -665,7 +661,7 @@ nul-terminated, however you should use the returned length to determine
 the number of bytes on the line.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileGets">cupsFileGets</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileGets">cupsFileGets</a></h3>
 <p class="description">Get a CR and/or LF-terminated line.</p>
 <p class="code">
 char *cupsFileGets (<br>
@@ -684,7 +680,7 @@ char *cupsFileGets (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Line read or <code>NULL</code> on end of file or error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileLock">cupsFileLock</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileLock">cupsFileLock</a></h3>
 <p class="description">Temporarily lock access to a file.</p>
 <p class="code">
 int cupsFileLock (<br>
@@ -700,7 +696,7 @@ int cupsFileLock (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileNumber">cupsFileNumber</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileNumber">cupsFileNumber</a></h3>
 <p class="description">Return the file descriptor associated with a CUPS file.</p>
 <p class="code">
 int cupsFileNumber (<br>
@@ -713,7 +709,7 @@ int cupsFileNumber (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">File descriptor</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileOpen">cupsFileOpen</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileOpen">cupsFileOpen</a></h3>
 <p class="description">Open a CUPS file.</p>
 <p class="code">
 <a href="#cups_file_t">cups_file_t</a> *cupsFileOpen (<br>
@@ -744,7 +740,7 @@ connection as needed, generally preferring IPv6 connections when there is
 a choice.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileOpenFd">cupsFileOpenFd</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileOpenFd">cupsFileOpenFd</a></h3>
 <p class="description">Open a CUPS file using a file descriptor.</p>
 <p class="code">
 <a href="#cups_file_t">cups_file_t</a> *cupsFileOpenFd (<br>
@@ -769,7 +765,7 @@ supplied which enables Flate compression of the file.  Compression is
 not supported for the &quot;a&quot; (append) mode.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFilePeekChar">cupsFilePeekChar</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFilePeekChar">cupsFilePeekChar</a></h3>
 <p class="description">Peek at the next character from a file.</p>
 <p class="code">
 int cupsFilePeekChar (<br>
@@ -782,7 +778,7 @@ int cupsFilePeekChar (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Character or -1 on end of file</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFilePrintf">cupsFilePrintf</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFilePrintf">cupsFilePrintf</a></h3>
 <p class="description">Write a formatted string.</p>
 <p class="code">
 int cupsFilePrintf (<br>
@@ -801,7 +797,7 @@ int cupsFilePrintf (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of bytes written or -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFilePutChar">cupsFilePutChar</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFilePutChar">cupsFilePutChar</a></h3>
 <p class="description">Write a character.</p>
 <p class="code">
 int cupsFilePutChar (<br>
@@ -817,7 +813,7 @@ int cupsFilePutChar (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsFilePutConf">cupsFilePutConf</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsFilePutConf">cupsFilePutConf</a></h3>
 <p class="description">Write a configuration line.</p>
 <p class="code">
 ssize_t cupsFilePutConf (<br>
@@ -840,7 +836,7 @@ ssize_t cupsFilePutConf (<br>
 <p class="discussion">This function handles any comment escaping of the value.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFilePuts">cupsFilePuts</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFilePuts">cupsFilePuts</a></h3>
 <p class="description">Write a string.</p>
 <p class="code">
 int cupsFilePuts (<br>
@@ -860,7 +856,7 @@ int cupsFilePuts (<br>
 <p class="discussion">Like the <code>fputs</code> function, no newline is appended to the string.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileRead">cupsFileRead</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileRead">cupsFileRead</a></h3>
 <p class="description">Read from a file.</p>
 <p class="code">
 ssize_t cupsFileRead (<br>
@@ -879,7 +875,7 @@ ssize_t cupsFileRead (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of bytes read or -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileRewind">cupsFileRewind</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileRewind">cupsFileRewind</a></h3>
 <p class="description">Set the current file position to the beginning of the
 file.</p>
 <p class="code">
@@ -893,7 +889,7 @@ off_t cupsFileRewind (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New file position or -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileSeek">cupsFileSeek</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileSeek">cupsFileSeek</a></h3>
 <p class="description">Seek in a file.</p>
 <p class="code">
 off_t cupsFileSeek (<br>
@@ -909,25 +905,25 @@ off_t cupsFileSeek (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New file position or -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileStderr">cupsFileStderr</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileStderr">cupsFileStderr</a></h3>
 <p class="description">Return a CUPS file associated with stderr.</p>
 <p class="code">
 <a href="#cups_file_t">cups_file_t</a> *cupsFileStderr (void);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">CUPS file</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileStdin">cupsFileStdin</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileStdin">cupsFileStdin</a></h3>
 <p class="description">Return a CUPS file associated with stdin.</p>
 <p class="code">
 <a href="#cups_file_t">cups_file_t</a> *cupsFileStdin (void);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">CUPS file</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileStdout">cupsFileStdout</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileStdout">cupsFileStdout</a></h3>
 <p class="description">Return a CUPS file associated with stdout.</p>
 <p class="code">
 <a href="#cups_file_t">cups_file_t</a> *cupsFileStdout (void);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">CUPS file</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileTell">cupsFileTell</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileTell">cupsFileTell</a></h3>
 <p class="description">Return the current file position.</p>
 <p class="code">
 off_t cupsFileTell (<br>
@@ -940,7 +936,7 @@ off_t cupsFileTell (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">File position</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileUnlock">cupsFileUnlock</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileUnlock">cupsFileUnlock</a></h3>
 <p class="description">Unlock access to a file.</p>
 <p class="code">
 int cupsFileUnlock (<br>
@@ -953,7 +949,7 @@ int cupsFileUnlock (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsFileWrite">cupsFileWrite</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsFileWrite">cupsFileWrite</a></h3>
 <p class="description">Write to a file.</p>
 <p class="code">
 ssize_t cupsFileWrite (<br>
index 1ab935b..300c3a9 100644 (file)
@@ -5,7 +5,7 @@
        <title>Filter and Backend Programming   </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,11 +353,9 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id: api-filter.header 7616 2008-05-28 00:34:13Z mike $"
-
   Filter and backend programming header for CUPS.
 
-  Copyright 2008-2014 by Apple Inc.
+  Copyright 2008-2016 by Apple Inc.
 
   These coded instructions, statements, and computer programs are the
   property of Apple Inc. and are protected by Federal copyright
@@ -373,6 +371,7 @@ div.contents ul.subcontents li {
 <tr>
        <th>Headers</th>
        <th>cups/backend.h<br>
+       cups/ppd.h<br>
        cups/sidechannel.h</th>
 </tr>
 </thead>
@@ -408,7 +407,7 @@ div.contents ul.subcontents li {
        <li><a href="#COMMUNICATING_FILTER">Communicating with Filters</a></li>
        <li><a href="#SNMP">Doing SNMP Queries with Network Printers</a></li>
 </ul></li>
-<li><a href="#SANDBOXING">Sandboxing on OS X</a></li>
+<li><a href="#SANDBOXING">Sandboxing on macOS</a></li>
 <li><a href="#FUNCTIONS">Functions</a><ul class="code">
        <li><a href="#cupsBackChannelRead" title="Read data from the backchannel.">cupsBackChannelRead</a></li>
        <li><a href="#cupsBackChannelWrite" title="Write data to the backchannel.">cupsBackChannelWrite</a></li>
@@ -439,11 +438,9 @@ div.contents ul.subcontents li {
 </ul></li>
 </ul>
 <!--
-  "$Id: api-filter.shtml 7677 2008-06-19 23:22:19Z mike $"
-
   Filter and backend programming introduction for CUPS.
 
-  Copyright 2007-2014 by Apple Inc.
+  Copyright 2007-2016 by Apple Inc.
   Copyright 1997-2006 by Easy Software Products, all rights reserved.
 
   These coded instructions, statements, and computer programs are the
@@ -521,7 +518,7 @@ directory to write to.</p>
 
 <p>In addition, some operating systems provide additional security mechanisms
 that further limit file system access, even for backends running as root. On
-OS X, for example, no backend may write to a user's home directory. See the <a href="#SANDBOXING">Sandboxing on OS X</a> section for more information.</p>
+macOS, for example, no backend may write to a user's home directory. See the <a href="#SANDBOXING">Sandboxing on macOS</a> section for more information.</p>
 </blockquote>
 
 <h3><a name="SIGNALS">Canceled Jobs and Signal Handling</a></h3>
@@ -593,7 +590,7 @@ when running print filters and backends:</p>
 
        <dt>APPLE_LANGUAGE</dt>
        <dd>The Apple language identifier associated with the job
-       (OS X only).</dd>
+       (macOS only).</dd>
 
        <dt>CHARSET</dt>
        <dd>The job character set, typically "utf-8".</dd>
@@ -727,7 +724,7 @@ prefix strings:</p>
        <dd>Sets or clears printer-state-reason keywords for the current queue.
        Typically this is used to indicate persistent media, ink, toner, and
        configuration conditions or errors on a printer.
-       <a href='#TABLE2'>Table 2</a> lists the standard state keywords -
+       <a href='#TABLE2'>Table 2</a> lists some of the standard "printer-state-reasons" keywords from the <a href="http://www.iana.org/assignments/ipp-registrations/ipp-registrations.xhtml#ipp-registrations-4">IANA IPP Registry</a> -
        use vendor-prefixed ("com.example.foo") keywords for custom states. See
        <a href="#MANAGING_STATE">Managing Printer State in a Filter</a> for more
        information.
@@ -1003,7 +1000,7 @@ sub-state and not an issue that applies when a job is not printing.</p>
 <blockquote><b>Note:</b>
 
 <p>"STATE:" messages often provide visible alerts to the user. For example,
-on OS X setting a printer-state-reason value with an "-error" or
+on macOS setting a printer-state-reason value with an "-error" or
 "-warning" suffix will cause the printer's dock item to bounce if the
 corresponding reason is localized with a cupsIPPReason keyword in the
 printer's PPD file.</p>
@@ -1293,9 +1290,9 @@ void *my_data;
 <a href="#cupsSideChannelSNMPWalk">cupsSNMPSideChannelWalk</a>(".1.3.6.1.2.1.43", 5.0, my_callback, my_data);
 </pre>
 
-<h2><a name="SANDBOXING">Sandboxing on OS X</a></h2>
+<h2><a name="SANDBOXING">Sandboxing on macOS</a></h2>
 
-<p>Starting with OS X 10.6, filters and backends are run inside a security "sandbox" which further limits (beyond the normal UNIX user/group permissions) what a filter or backend can do. This helps to both secure the printing system from malicious software and enforce the functional separation of components in the CUPS filter chain. What follows is a list of actions that are explicitly allowed for all filters and backends:</p>
+<p>Starting with macOS 10.6, filters and backends are run inside a security "sandbox" which further limits (beyond the normal UNIX user/group permissions) what a filter or backend can do. This helps to both secure the printing system from malicious software and enforce the functional separation of components in the CUPS filter chain. What follows is a list of actions that are explicitly allowed for all filters and backends:</p>
 
 <ol>
 
@@ -1315,7 +1312,7 @@ void *my_data;
 
 <blockquote><b>Note:</b> The sandbox profile used in CUPS 2.0 still allows some actions that are not listed above - these privileges will be removed over time until the profile matches the list above.</blockquote>
 <h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsBackChannelRead">cupsBackChannelRead</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsBackChannelRead">cupsBackChannelRead</a></h3>
 <p class="description">Read data from the backchannel.</p>
 <p class="code">
 ssize_t cupsBackChannelRead (<br>
@@ -1340,7 +1337,7 @@ parameter controls how many seconds to wait for the data - use 0.0 to
 return immediately if there is no data, -1.0 to wait for data indefinitely.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsBackChannelWrite">cupsBackChannelWrite</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsBackChannelWrite">cupsBackChannelWrite</a></h3>
 <p class="description">Write data to the backchannel.</p>
 <p class="code">
 ssize_t cupsBackChannelWrite (<br>
@@ -1366,7 +1363,7 @@ controls how many seconds to wait for the data to be written - use
 indefinitely.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsBackendDeviceURI">cupsBackendDeviceURI</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsBackendDeviceURI">cupsBackendDeviceURI</a></h3>
 <p class="description">Get the device URI for a backend.</p>
 <p class="code">
 const char *cupsBackendDeviceURI (<br>
@@ -1386,7 +1383,7 @@ variable or the device URI passed in argv[0], whichever is found
 first.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsBackendReport">cupsBackendReport</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsBackendReport">cupsBackendReport</a></h3>
 <p class="description">Write a device line from a backend.</p>
 <p class="code">
 void cupsBackendReport (<br>
@@ -1418,7 +1415,7 @@ It handles quoting of special characters in the device-make-and-model,
 device-info, device-id, and device-location strings.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsSideChannelDoRequest">cupsSideChannelDoRequest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsSideChannelDoRequest">cupsSideChannelDoRequest</a></h3>
 <p class="description">Send a side-channel command to a backend and wait for a response.</p>
 <p class="code">
 <a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelDoRequest (<br>
@@ -1452,7 +1449,7 @@ pointed to by the &quot;data&quot; parameter.  cupsSideChannelDoRequest() will
 update the value to contain the number of data bytes in the buffer.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsSideChannelRead">cupsSideChannelRead</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsSideChannelRead">cupsSideChannelRead</a></h3>
 <p class="description">Read a side-channel message.</p>
 <p class="code">
 int cupsSideChannelRead (<br>
@@ -1488,7 +1485,7 @@ pointed to by the &quot;data&quot; parameter.  cupsSideChannelDoRequest() will
 update the value to contain the number of data bytes in the buffer.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsSideChannelSNMPGet">cupsSideChannelSNMPGet</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsSideChannelSNMPGet">cupsSideChannelSNMPGet</a></h3>
 <p class="description">Query a SNMP OID's value.</p>
 <p class="code">
 <a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelSNMPGet (<br>
@@ -1529,7 +1526,7 @@ support SNMP queries.  <code>CUPS_SC_STATUS_NO_RESPONSE</code> is returned when
 the printer does not respond to the SNMP query.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsSideChannelSNMPWalk">cupsSideChannelSNMPWalk</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsSideChannelSNMPWalk">cupsSideChannelSNMPWalk</a></h3>
 <p class="description">Query multiple SNMP OID values.</p>
 <p class="code">
 <a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelSNMPWalk (<br>
@@ -1575,7 +1572,7 @@ support SNMP queries.  <code>CUPS_SC_STATUS_NO_RESPONSE</code> is returned when
 the printer does not respond to the first SNMP query.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsSideChannelWrite">cupsSideChannelWrite</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsSideChannelWrite">cupsSideChannelWrite</a></h3>
 <p class="description">Write a side-channel message.</p>
 <p class="code">
 int cupsSideChannelWrite (<br>
@@ -1680,15 +1677,15 @@ typedef void (*cups_sc_walk_func_t)(const char *oid, const char *data, int datal
 <dd class="description">Drain all pending output</dd>
 <dt>CUPS_SC_CMD_GET_BIDI </dt>
 <dd class="description">Return bidirectional capabilities</dd>
-<dt>CUPS_SC_CMD_GET_CONNECTED <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
+<dt>CUPS_SC_CMD_GET_CONNECTED <span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span></dt>
 <dd class="description">Return whether the backend is &quot;connected&quot; to the printer </dd>
 <dt>CUPS_SC_CMD_GET_DEVICE_ID </dt>
 <dd class="description">Return the IEEE-1284 device ID</dd>
 <dt>CUPS_SC_CMD_GET_STATE </dt>
 <dd class="description">Return the device state</dd>
-<dt>CUPS_SC_CMD_SNMP_GET <span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span></dt>
+<dt>CUPS_SC_CMD_SNMP_GET <span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span></dt>
 <dd class="description">Query an SNMP OID </dd>
-<dt>CUPS_SC_CMD_SNMP_GET_NEXT <span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span></dt>
+<dt>CUPS_SC_CMD_SNMP_GET_NEXT <span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span></dt>
 <dd class="description">Query the next SNMP OID </dd>
 <dt>CUPS_SC_CMD_SOFT_RESET </dt>
 <dd class="description">Do a soft reset</dd>
index 7fc0c06..f67736c 100644 (file)
@@ -5,7 +5,7 @@
        <title>HTTP and IPP APIs        </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,11 +353,9 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id: api-httpipp.header 7258 2008-01-28 00:15:05Z mike $"
-
   HTTP and IPP API header for CUPS.
 
-  Copyright 2007-2011 by Apple Inc.
+  Copyright 2007-2016 by Apple Inc.
   Copyright 1997-2006 by Easy Software Products, all rights reserved.
 
   These coded instructions, statements, and computer programs are the
@@ -372,8 +370,10 @@ div.contents ul.subcontents li {
 <div class='summary'><table summary='General Information'>
 <thead>
 <tr>
-       <th>Header</th>
-       <th>cups/cups.h</th>
+       <th>Headers</th>
+       <th>cups/cups.h<br>
+       cups/http.h<br>
+       cups/ipp.h</th>
 </tr>
 </thead>
 <tbody>
@@ -659,7 +659,7 @@ are server-oriented...">http_state_t</a></li>
        <li><a href="#http_uri_status_t" title="URI separation status ">http_uri_status_t</a></li>
        <li><a href="#http_version_t" title="HTTP version numbers">http_version_t</a></li>
        <li><a href="#ipp_attribute_t" title="IPP attribute">ipp_attribute_t</a></li>
-       <li><a href="#ipp_copycb_t" title="The following structures are PRIVATE starting with CUPS 1.6/OS X 10.8.
+       <li><a href="#ipp_copycb_t" title="The following structures are PRIVATE starting with CUPS 1.6/macOS 10.8.
 Please use the new accessor functions available in CUPS 1.6 and later, as
 these definitions will be moved to a private header file in a future release.">ipp_copycb_t</a></li>
        <li><a href="#ipp_dstate_t" title="Document states">ipp_dstate_t</a></li>
@@ -711,8 +711,6 @@ are server-oriented...">http_state_e</a></li>
 </ul></li>
 </ul>
 <!--
-  "$Id: api-httpipp.shtml 7684 2008-06-23 16:47:38Z mike $"
-
   HTTP and IPP API introduction for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -1028,7 +1026,7 @@ if (status == HTTP_CONTINUE)
 <a href='#ippDelete'>ippDelete</a>(request);
 </pre>
 <h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsDoAuthentication">cupsDoAuthentication</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/macOS 10.4&nbsp;</span><a name="cupsDoAuthentication">cupsDoAuthentication</a></h3>
 <p class="description">Authenticate a request.</p>
 <p class="code">
 int cupsDoAuthentication (<br>
@@ -1078,7 +1076,7 @@ status, prior to resubmitting your request.
 <p class="discussion">This function sends the IPP request and attached file to the specified
 server, retrying and authenticating as necessary.  The request is freed with
 <a href="#ippDelete"><code>ippDelete</code></a>.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="cupsDoIORequest">cupsDoIORequest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsDoIORequest">cupsDoIORequest</a></h3>
 <p class="description">Do an IPP request with file descriptors.</p>
 <p class="code">
 <a href="#ipp_t">ipp_t</a> *cupsDoIORequest (<br>
@@ -1158,7 +1156,7 @@ void cupsEncodeOptions (<br>
 <p class="discussion">This function adds operation, job, and then subscription attributes,
 in that order. Use the cupsEncodeOptions2() function to add attributes
 for a single group.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsEncodeOptions2">cupsEncodeOptions2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsEncodeOptions2">cupsEncodeOptions2</a></h3>
 <p class="description">Encode printer options into IPP attributes for a group.</p>
 <p class="code">
 void cupsEncodeOptions2 (<br>
@@ -1184,7 +1182,7 @@ function multiple times for each group, or use cupsEncodeOptions()
 to add the standard groups.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsGetDevices">cupsGetDevices</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsGetDevices">cupsGetDevices</a></h3>
 <p class="description">Get available printer devices.</p>
 <p class="code">
 ipp_status_t cupsGetDevices (<br>
@@ -1220,7 +1218,7 @@ parameters provide comma-delimited lists of backends to include or omit from
 the request respectively.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsGetFd">cupsGetFd</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/macOS 10.4&nbsp;</span><a name="cupsGetFd">cupsGetFd</a></h3>
 <p class="description">Get a file from the server.</p>
 <p class="code">
 http_status_t cupsGetFd (<br>
@@ -1243,7 +1241,7 @@ http_status_t cupsGetFd (<br>
 <p class="discussion">This function returns <code>HTTP_STATUS_OK</code> when the file is successfully retrieved.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsGetFile">cupsGetFile</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/macOS 10.4&nbsp;</span><a name="cupsGetFile">cupsGetFile</a></h3>
 <p class="description">Get a file from the server.</p>
 <p class="code">
 http_status_t cupsGetFile (<br>
@@ -1266,7 +1264,7 @@ http_status_t cupsGetFile (<br>
 <p class="discussion">This function returns <code>HTTP_STATUS_OK</code> when the file is successfully retrieved.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsGetResponse">cupsGetResponse</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsGetResponse">cupsGetResponse</a></h3>
 <p class="description">Get a response to an IPP request.</p>
 <p class="code">
 <a href="#ipp_t">ipp_t</a> *cupsGetResponse (<br>
@@ -1296,14 +1294,14 @@ thread.</p>
 ipp_status_t cupsLastError (void);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">IPP status code from last request</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsLastErrorString">cupsLastErrorString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsLastErrorString">cupsLastErrorString</a></h3>
 <p class="description">Return the last IPP status-message received on the
 current thread.</p>
 <p class="code">
 const char *cupsLastErrorString (void);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">status-message text from last request</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsPutFd">cupsPutFd</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/macOS 10.4&nbsp;</span><a name="cupsPutFd">cupsPutFd</a></h3>
 <p class="description">Put a file on the server.</p>
 <p class="code">
 http_status_t cupsPutFd (<br>
@@ -1327,7 +1325,7 @@ http_status_t cupsPutFd (<br>
 successfully.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="cupsPutFile">cupsPutFile</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/macOS 10.4&nbsp;</span><a name="cupsPutFile">cupsPutFile</a></h3>
 <p class="description">Put a file on the server.</p>
 <p class="code">
 http_status_t cupsPutFile (<br>
@@ -1351,7 +1349,7 @@ http_status_t cupsPutFile (<br>
 successfully.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsReadResponseData">cupsReadResponseData</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsReadResponseData">cupsReadResponseData</a></h3>
 <p class="description">Read additional data after the IPP response.</p>
 <p class="code">
 ssize_t cupsReadResponseData (<br>
@@ -1376,7 +1374,7 @@ files from <code>CUPS_GET_PPD</code> and <code>CUPS_GET_DOCUMENT</code> requests
 respectively.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsSendRequest">cupsSendRequest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsSendRequest">cupsSendRequest</a></h3>
 <p class="description">Send an IPP request.</p>
 <p class="code">
 http_status_t cupsSendRequest (<br>
@@ -1412,7 +1410,7 @@ Note: Unlike <a href="#cupsDoFileRequest"><code>cupsDoFileRequest</code></a>, <a
 <a href="#cupsDoRequest"><code>cupsDoRequest</code></a>, the request is NOT freed with <a href="#ippDelete"><code>ippDelete</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsWriteRequestData">cupsWriteRequestData</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsWriteRequestData">cupsWriteRequestData</a></h3>
 <p class="description">Write additional data after an IPP request.</p>
 <p class="code">
 http_status_t cupsWriteRequestData (<br>
@@ -1436,7 +1434,7 @@ http_status_t cupsWriteRequestData (<br>
 after <a href="#cupsStartDocument"><code>cupsStartDocument</code></a> to provide a document file.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpAcceptConnection">httpAcceptConnection</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpAcceptConnection">httpAcceptConnection</a></h3>
 <p class="description">Accept a new HTTP client connection from the
 specified listening socket.</p>
 <p class="code">
@@ -1454,7 +1452,7 @@ blocking, 0 otherwise</dd>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">HTTP connection or <code>NULL</code></p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="httpAddCredential">httpAddCredential</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="httpAddCredential">httpAddCredential</a></h3>
 <p class="description">Allocates and adds a single credential to an array.</p>
 <p class="code">
 int httpAddCredential (<br>
@@ -1477,7 +1475,7 @@ int httpAddCredential (<br>
 <p class="discussion">Use <code>cupsArrayNew(NULL, NULL)</code> to create a credentials array.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrAny">httpAddrAny</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpAddrAny">httpAddrAny</a></h3>
 <p class="description">Check for the &quot;any&quot; address.</p>
 <p class="code">
 int httpAddrAny (<br>
@@ -1513,7 +1511,7 @@ listen address for sockets created with <a href="#httpAddrListen"><code>httpAddr
 ensure that domain sockets are removed when closed.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrEqual">httpAddrEqual</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpAddrEqual">httpAddrEqual</a></h3>
 <p class="description">Compare two addresses.</p>
 <p class="code">
 int httpAddrEqual (<br>
@@ -1542,7 +1540,7 @@ int httpAddrFamily (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Address family</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrLength">httpAddrLength</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpAddrLength">httpAddrLength</a></h3>
 <p class="description">Return the length of the address in bytes.</p>
 <p class="code">
 int httpAddrLength (<br>
@@ -1555,7 +1553,7 @@ int httpAddrLength (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Length in bytes</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpAddrListen">httpAddrListen</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpAddrListen">httpAddrListen</a></h3>
 <p class="description">Create a listening socket bound to the specified
 address and port.</p>
 <p class="code">
@@ -1572,7 +1570,7 @@ int httpAddrListen (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Socket or -1 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrLocalhost">httpAddrLocalhost</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpAddrLocalhost">httpAddrLocalhost</a></h3>
 <p class="description">Check for the local loopback address.</p>
 <p class="code">
 int httpAddrLocalhost (<br>
@@ -1585,7 +1583,7 @@ int httpAddrLocalhost (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 if local host, 0 otherwise</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrLookup">httpAddrLookup</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpAddrLookup">httpAddrLookup</a></h3>
 <p class="description">Lookup the hostname associated with the address.</p>
 <p class="code">
 char *httpAddrLookup (<br>
@@ -1604,7 +1602,7 @@ char *httpAddrLookup (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Host name</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpAddrPort">httpAddrPort</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpAddrPort">httpAddrPort</a></h3>
 <p class="description">Get the port number associated with an address.</p>
 <p class="code">
 int httpAddrPort (<br>
@@ -1617,7 +1615,7 @@ int httpAddrPort (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Port number</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAddrString">httpAddrString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpAddrString">httpAddrString</a></h3>
 <p class="description">Convert an address to a numeric string.</p>
 <p class="code">
 char *httpAddrString (<br>
@@ -1636,7 +1634,7 @@ char *httpAddrString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Numeric address string</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAssembleURI">httpAssembleURI</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpAssembleURI">httpAssembleURI</a></h3>
 <p class="description">Assemble a uniform resource identifier from its
 components.</p>
 <p class="code">
@@ -1678,7 +1676,7 @@ place of traditional string functions whenever you need to create a
 URI string.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpAssembleURIf">httpAssembleURIf</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpAssembleURIf">httpAssembleURIf</a></h3>
 <p class="description">Assemble a uniform resource identifier from its
 components with a formatted resource.</p>
 <p class="code">
@@ -1724,7 +1722,7 @@ this function in place of traditional string functions whenever
 you need to create a URI string.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpAssembleUUID">httpAssembleUUID</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpAssembleUUID">httpAssembleUUID</a></h3>
 <p class="description">Assemble a name-based UUID URN conforming to RFC 4122.</p>
 <p class="code">
 char *httpAssembleUUID (<br>
@@ -1787,7 +1785,7 @@ int httpCheck (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 = no data, 1 = data available</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="httpClearCookie">httpClearCookie</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="httpClearCookie">httpClearCookie</a></h3>
 <p class="description">Clear the cookie value(s).</p>
 <p class="code">
 void httpClearCookie (<br>
@@ -1856,7 +1854,7 @@ int httpCompareCredentials (<br>
 <p class="discussion">This function is deprecated - use <a href="#httpConnect2"><code>httpConnect2</code></a> instead.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpConnect2">httpConnect2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpConnect2">httpConnect2</a></h3>
 <p class="description">Connect to a HTTP server.</p>
 <p class="code">
 <a href="#http_t">http_t</a> *httpConnect2 (<br>
@@ -1935,7 +1933,7 @@ char *httpDecode64 (<br>
 which provides buffer length arguments.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="httpDecode64_2">httpDecode64_2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="httpDecode64_2">httpDecode64_2</a></h3>
 <p class="description">Base64-decode a string.</p>
 <p class="code">
 char *httpDecode64_2 (<br>
@@ -1991,7 +1989,7 @@ char *httpEncode64 (<br>
 which provides buffer length arguments.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="httpEncode64_2">httpEncode64_2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="httpEncode64_2">httpEncode64_2</a></h3>
 <p class="description">Base64-encode a string.</p>
 <p class="code">
 char *httpEncode64_2 (<br>
@@ -2067,7 +2065,7 @@ void httpFlush (<br>
 <dt>http</dt>
 <dd class="description">HTTP connection</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpFlushWrite">httpFlushWrite</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpFlushWrite">httpFlushWrite</a></h3>
 <p class="description">Flush data in write buffer.</p>
 <p class="code">
 int httpFlushWrite (<br>
@@ -2141,7 +2139,7 @@ time_t httpGetActivity (<br>
 <p class="discussion">Returns <code>NULL</code> if the socket is currently unconnected.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="httpGetAuthString">httpGetAuthString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="httpGetAuthString">httpGetAuthString</a></h3>
 <p class="description">Get the current authorization string.</p>
 <p class="code">
 char *httpGetAuthString (<br>
@@ -2161,7 +2159,7 @@ string to use with httpSetField() for the HTTP_FIELD_AUTHORIZATION
 value.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetBlocking">httpGetBlocking</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpGetBlocking">httpGetBlocking</a></h3>
 <p class="description">Get the blocking/non-block state of a connection.</p>
 <p class="code">
 int httpGetBlocking (<br>
@@ -2174,7 +2172,7 @@ int httpGetBlocking (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 if blocking, 0 if non-blocking</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpGetContentEncoding">httpGetContentEncoding</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpGetContentEncoding">httpGetContentEncoding</a></h3>
 <p class="description">Get a common content encoding, if any, between
 the client and server.</p>
 <p class="code">
@@ -2197,7 +2195,7 @@ client.  The value returned can be use in subsequent requests (for clients)
 or in the response (for servers) in order to compress the content stream.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="httpGetCookie">httpGetCookie</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="httpGetCookie">httpGetCookie</a></h3>
 <p class="description">Get any cookie data from the response.</p>
 <p class="code">
 const char *httpGetCookie (<br>
@@ -2223,7 +2221,7 @@ const char *httpGetDateString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Date/time string</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetDateString2">httpGetDateString2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpGetDateString2">httpGetDateString2</a></h3>
 <p class="description">Get a formatted date/time string from a time value.</p>
 <p class="code">
 const char *httpGetDateString2 (<br>
@@ -2274,7 +2272,7 @@ time_t httpGetDateTime (<br>
 been established.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpGetExpect">httpGetExpect</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpGetExpect">httpGetExpect</a></h3>
 <p class="description">Get the value of the Expect header, if any.</p>
 <p class="code">
 http_status_t httpGetExpect (<br>
@@ -2292,7 +2290,7 @@ http_status_t httpGetExpect (<br>
 returns the expected HTTP status code, typically <code>HTTP_STATUS_CONTINUE</code>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetFd">httpGetFd</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpGetFd">httpGetFd</a></h3>
 <p class="description">Get the file descriptor associated with a connection.</p>
 <p class="code">
 int httpGetFd (<br>
@@ -2335,7 +2333,7 @@ struct hostent *httpGetHostByName (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Host entry</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetHostname">httpGetHostname</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpGetHostname">httpGetHostname</a></h3>
 <p class="description">Get the FQDN for the connection or local system.</p>
 <p class="code">
 const char *httpGetHostname (<br>
@@ -2394,7 +2392,7 @@ int httpGetLength (<br>
 2^31 - 1; use httpGetLength2() instead.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetLength2">httpGetLength2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpGetLength2">httpGetLength2</a></h3>
 <p class="description">Get the amount of data remaining from the
 content-length or transfer-encoding fields.</p>
 <p class="code">
@@ -2471,7 +2469,7 @@ message body is chunked or fixed-length.
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">HTTP state</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetStatus">httpGetStatus</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpGetStatus">httpGetStatus</a></h3>
 <p class="description">Get the status of the last HTTP request.</p>
 <p class="code">
 http_status_t httpGetStatus (<br>
@@ -2506,7 +2504,7 @@ char *httpGetSubField (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Value or NULL</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpGetSubField2">httpGetSubField2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpGetSubField2">httpGetSubField2</a></h3>
 <p class="description">Get a sub-field value.</p>
 <p class="code">
 char *httpGetSubField2 (<br>
@@ -2697,7 +2695,7 @@ int httpOptions (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Status of call (0 = success)</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpPeek">httpPeek</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpPeek">httpPeek</a></h3>
 <p class="description">Peek at data from a HTTP connection.</p>
 <p class="code">
 ssize_t httpPeek (<br>
@@ -2780,7 +2778,7 @@ int httpRead (<br>
 read more than 2GB of data.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpRead2">httpRead2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpRead2">httpRead2</a></h3>
 <p class="description">Read data from a HTTP connection.</p>
 <p class="code">
 ssize_t httpRead2 (<br>
@@ -2799,7 +2797,7 @@ ssize_t httpRead2 (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of bytes read</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpReadRequest">httpReadRequest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpReadRequest">httpReadRequest</a></h3>
 <p class="description">Read a HTTP request from a connection.</p>
 <p class="code">
 <a href="#http_state_t">http_state_t</a> httpReadRequest (<br>
@@ -2907,7 +2905,7 @@ void httpSeparate (<br>
 <p class="discussion">This function is deprecated; use the httpSeparateURI() function instead.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/OS X 10.4&nbsp;</span><a name="httpSeparate2">httpSeparate2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="httpSeparate2">httpSeparate2</a></h3>
 <p class="description">Separate a Universal Resource Identifier into its
 components.</p>
 <p class="code">
@@ -2951,7 +2949,7 @@ void httpSeparate2 (<br>
 
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpSeparateURI">httpSeparateURI</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpSeparateURI">httpSeparateURI</a></h3>
 <p class="description">Separate a Universal Resource Identifier into its
 components.</p>
 <p class="code">
@@ -2995,7 +2993,7 @@ components.</p>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Result of separation</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="httpSetAuthString">httpSetAuthString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="httpSetAuthString">httpSetAuthString</a></h3>
 <p class="description">Set the current authorization string.</p>
 <p class="code">
 void httpSetAuthString (<br>
@@ -3019,7 +3017,7 @@ HTTP_FIELD_AUTHORIZATION prior to issuing a HTTP request using httpGet(),
 httpHead(), httpOptions(), httpPost, or httpPut().
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="httpSetCookie">httpSetCookie</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="httpSetCookie">httpSetCookie</a></h3>
 <p class="description">Set the cookie value(s).</p>
 <p class="code">
 void httpSetCookie (<br>
@@ -3033,7 +3031,7 @@ void httpSetCookie (<br>
 <dt>cookie</dt>
 <dd class="description">Cookie string</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="httpSetCredentials">httpSetCredentials</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="httpSetCredentials">httpSetCredentials</a></h3>
 <p class="description">Set the credentials associated with an encrypted
 connection.</p>
 <p class="code">
@@ -3050,7 +3048,7 @@ int httpSetCredentials (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Status of call (0 = success)</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpSetDefaultField">httpSetDefaultField</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpSetDefaultField">httpSetDefaultField</a></h3>
 <p class="description">Set the default value of an HTTP header.</p>
 <p class="code">
 void httpSetDefaultField (<br>
@@ -3072,7 +3070,7 @@ void httpSetDefaultField (<br>
 and <code>HTTP_FIELD_USER_AGENT</code> can be set.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpSetExpect">httpSetExpect</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpSetExpect">httpSetExpect</a></h3>
 <p class="description">Set the Expect: header in a request.</p>
 <p class="code">
 void httpSetExpect (<br>
@@ -3123,7 +3121,7 @@ void httpSetKeepAlive (<br>
 <dt>keep_alive</dt>
 <dd class="description">New Keep-Alive value</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpSetLength">httpSetLength</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpSetLength">httpSetLength</a></h3>
 <p class="description">Set the content-length and content-encoding.</p>
 <p class="code">
 void httpSetLength (<br>
@@ -3137,7 +3135,7 @@ void httpSetLength (<br>
 <dt>length</dt>
 <dd class="description">Length (0 for chunked)</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="httpSetTimeout">httpSetTimeout</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="httpSetTimeout">httpSetTimeout</a></h3>
 <p class="description">Set read/write timeouts and an optional callback.</p>
 <p class="code">
 void httpSetTimeout (<br>
@@ -3245,7 +3243,7 @@ http_status_t httpUpdate (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">HTTP status</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="httpWait">httpWait</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="httpWait">httpWait</a></h3>
 <p class="description">Wait for data available on a connection.</p>
 <p class="code">
 int httpWait (<br>
@@ -3285,7 +3283,7 @@ int httpWrite (<br>
 write more than 2GB of data.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="httpWrite2">httpWrite2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="httpWrite2">httpWrite2</a></h3>
 <p class="description">Write data to a HTTP connection.</p>
 <p class="code">
 ssize_t httpWrite2 (<br>
@@ -3304,7 +3302,7 @@ ssize_t httpWrite2 (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of bytes written</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="httpWriteResponse">httpWriteResponse</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="httpWriteResponse">httpWriteResponse</a></h3>
 <p class="description">Write a HTTP response to a client connection.</p>
 <p class="code">
 int httpWriteResponse (<br>
@@ -3385,7 +3383,7 @@ The <code>group</code> parameter specifies the IPP attribute group tag: none
 event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 (<code>IPP_TAG_OPERATION</code>), printer (<code>IPP_TAG_PRINTER</code>), subscription
 (<code>IPP_TAG_SUBSCRIPTION</code>), or unsupported (<code>IPP_TAG_UNSUPPORTED_GROUP</code>).</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ippAddCollection">ippAddCollection</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ippAddCollection">ippAddCollection</a></h3>
 <p class="description">Add a collection value.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollection (<br>
@@ -3418,7 +3416,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 (<code>IPP_TAG_SUBSCRIPTION</code>), or unsupported (<code>IPP_TAG_UNSUPPORTED_GROUP</code>).
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ippAddCollections">ippAddCollections</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ippAddCollections">ippAddCollections</a></h3>
 <p class="description">Add an array of collection values.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollections (<br>
@@ -3562,7 +3560,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <br>
 Supported values include enum (<code>IPP_TAG_ENUM</code>) and integer
 (<code>IPP_TAG_INTEGER</code>).</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ippAddOctetString">ippAddOctetString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ippAddOctetString">ippAddOctetString</a></h3>
 <p class="description">Add an octetString value to an IPP message.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOctetString (<br>
@@ -3598,7 +3596,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 (<code>IPP_TAG_SUBSCRIPTION</code>), or unsupported (<code>IPP_TAG_UNSUPPORTED_GROUP</code>).
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippAddOutOfBand">ippAddOutOfBand</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippAddOutOfBand">ippAddOutOfBand</a></h3>
 <p class="description">Add an out-of-band value to an IPP message.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOutOfBand (<br>
@@ -3850,7 +3848,7 @@ Supported string values include charset (<code>IPP_TAG_CHARSET</code>), keyword
 <br>
 The <code>language</code> parameter must be non-<code>NULL</code> for nameWithLanguage and
 textWithLanguage string values and must be <code>NULL</code> for all other string values.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippAddStringf">ippAddStringf</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippAddStringf">ippAddStringf</a></h3>
 <p class="description">Add a formatted string to an IPP message.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringf (<br>
@@ -3909,7 +3907,7 @@ needed.  The formatted string is truncated as needed to the maximum length of
 the corresponding value type.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippAddStringfv">ippAddStringfv</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippAddStringfv">ippAddStringfv</a></h3>
 <p class="description">Add a formatted string to an IPP message.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringfv (<br>
@@ -4018,7 +4016,7 @@ Supported string values include charset (<code>IPP_TAG_CHARSET</code>), keyword
 <br>
 The <code>language</code> parameter must be non-<code>NULL</code> for nameWithLanguage and
 textWithLanguage string values and must be <code>NULL</code> for all other string values.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippAttributeString">ippAttributeString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippAttributeString">ippAttributeString</a></h3>
 <p class="description">Convert the attribute's value to a string.</p>
 <p class="code">
 size_t ippAttributeString (<br>
@@ -4043,7 +4041,7 @@ trailing nul. The buffer pointer can be NULL to get the required length,
 just like (v)snprintf.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippContainsInteger">ippContainsInteger</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippContainsInteger">ippContainsInteger</a></h3>
 <p class="description">Determine whether an attribute contains the
 specified value or is within the list of ranges.</p>
 <p class="code">
@@ -4066,7 +4064,7 @@ enum value, or the value falls within one of the rangeOfInteger values for
 the attribute.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippContainsString">ippContainsString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippContainsString">ippContainsString</a></h3>
 <p class="description">Determine whether an attribute contains the
 specified string value.</p>
 <p class="code">
@@ -4088,7 +4086,7 @@ int ippContainsString (<br>
 language, mimeMediaType, name, text, URI, or URI scheme value.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippCopyAttribute">ippCopyAttribute</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippCopyAttribute">ippCopyAttribute</a></h3>
 <p class="description">Copy an attribute.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippCopyAttribute (<br>
@@ -4114,7 +4112,7 @@ created - this should only be done as long as the original source IPP message wi
 not be freed for the life of the destination.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippCopyAttributes">ippCopyAttributes</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippCopyAttributes">ippCopyAttributes</a></h3>
 <p class="description">Copy attributes from one IPP message to another.</p>
 <p class="code">
 int ippCopyAttributes (<br>
@@ -4151,7 +4149,7 @@ attributes that are copied - the function must return 1 to copy the attribute or
 itself.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippCreateRequestedArray">ippCreateRequestedArray</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippCreateRequestedArray">ippCreateRequestedArray</a></h3>
 <p class="description">Create a CUPS array of attribute names from the
 given requested-attributes attribute.</p>
 <p class="code">
@@ -4205,7 +4203,7 @@ void ippDelete (<br>
 <dt>ipp</dt>
 <dd class="description">IPP message</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ippDeleteAttribute">ippDeleteAttribute</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ippDeleteAttribute">ippDeleteAttribute</a></h3>
 <p class="description">Delete a single attribute in an IPP message.</p>
 <p class="code">
 void ippDeleteAttribute (<br>
@@ -4219,7 +4217,7 @@ void ippDeleteAttribute (<br>
 <dt>attr</dt>
 <dd class="description">Attribute to delete</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippDeleteValues">ippDeleteValues</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippDeleteValues">ippDeleteValues</a></h3>
 <p class="description">Delete values in an attribute.</p>
 <p class="code">
 int ippDeleteValues (<br>
@@ -4295,7 +4293,7 @@ const char *ippErrorString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Text string</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ippErrorValue">ippErrorValue</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ippErrorValue">ippErrorValue</a></h3>
 <p class="description">Return a status code for the given name.</p>
 <p class="code">
 ipp_status_t ippErrorValue (<br>
@@ -4354,7 +4352,7 @@ of attribute and member names separated by slashes, for example
 <p class="discussion">Starting with CUPS 2.0, the attribute name can contain a hierarchical list
 of attribute and member names separated by slashes, for example
 &quot;media-col/media-size&quot;.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippFirstAttribute">ippFirstAttribute</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippFirstAttribute">ippFirstAttribute</a></h3>
 <p class="description">Return the first attribute in the message.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFirstAttribute (<br>
@@ -4367,7 +4365,7 @@ of attribute and member names separated by slashes, for example
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">First attribute or <code>NULL</code> if none</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetBoolean">ippGetBoolean</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetBoolean">ippGetBoolean</a></h3>
 <p class="description">Get a boolean value for an attribute.</p>
 <p class="code">
 int ippGetBoolean (<br>
@@ -4388,7 +4386,7 @@ int ippGetBoolean (<br>
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetCollection">ippGetCollection</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetCollection">ippGetCollection</a></h3>
 <p class="description">Get a collection value for an attribute.</p>
 <p class="code">
 <a href="#ipp_t">ipp_t</a> *ippGetCollection (<br>
@@ -4409,7 +4407,7 @@ int ippGetBoolean (<br>
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetCount">ippGetCount</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetCount">ippGetCount</a></h3>
 <p class="description">Get the number of values in an attribute.</p>
 <p class="code">
 int ippGetCount (<br>
@@ -4422,7 +4420,7 @@ int ippGetCount (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of values or 0 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetDate">ippGetDate</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetDate">ippGetDate</a></h3>
 <p class="description">Get a date value for an attribute.</p>
 <p class="code">
 const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippGetDate (<br>
@@ -4443,7 +4441,7 @@ const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippGetDate (<br>
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetGroupTag">ippGetGroupTag</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetGroupTag">ippGetGroupTag</a></h3>
 <p class="description">Get the group associated with an attribute.</p>
 <p class="code">
 ipp_tag_t ippGetGroupTag (<br>
@@ -4456,7 +4454,7 @@ ipp_tag_t ippGetGroupTag (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Group tag or <code>IPP_TAG_ZERO</code> on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetInteger">ippGetInteger</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetInteger">ippGetInteger</a></h3>
 <p class="description">Get the integer/enum value for an attribute.</p>
 <p class="code">
 int ippGetInteger (<br>
@@ -4477,7 +4475,7 @@ int ippGetInteger (<br>
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetName">ippGetName</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetName">ippGetName</a></h3>
 <p class="description">Get the attribute name.</p>
 <p class="code">
 const char *ippGetName (<br>
@@ -4490,7 +4488,7 @@ const char *ippGetName (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Attribute name or <code>NULL</code> for separators</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippGetOctetString">ippGetOctetString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippGetOctetString">ippGetOctetString</a></h3>
 <p class="description">Get an octetString value from an IPP attribute.</p>
 <p class="code">
 void *ippGetOctetString (<br>
@@ -4514,7 +4512,7 @@ void *ippGetOctetString (<br>
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetOperation">ippGetOperation</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetOperation">ippGetOperation</a></h3>
 <p class="description">Get the operation ID in an IPP message.</p>
 <p class="code">
 ipp_op_t ippGetOperation (<br>
@@ -4527,7 +4525,7 @@ ipp_op_t ippGetOperation (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Operation ID or 0 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetRange">ippGetRange</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetRange">ippGetRange</a></h3>
 <p class="description">Get a rangeOfInteger value from an attribute.</p>
 <p class="code">
 int ippGetRange (<br>
@@ -4551,7 +4549,7 @@ int ippGetRange (<br>
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetRequestId">ippGetRequestId</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetRequestId">ippGetRequestId</a></h3>
 <p class="description">Get the request ID from an IPP message.</p>
 <p class="code">
 int ippGetRequestId (<br>
@@ -4564,7 +4562,7 @@ int ippGetRequestId (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Request ID or 0 on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetResolution">ippGetResolution</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetResolution">ippGetResolution</a></h3>
 <p class="description">Get a resolution value for an attribute.</p>
 <p class="code">
 int ippGetResolution (<br>
@@ -4591,7 +4589,7 @@ int ippGetResolution (<br>
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetState">ippGetState</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetState">ippGetState</a></h3>
 <p class="description">Get the IPP message state.</p>
 <p class="code">
 <a href="#ipp_state_t">ipp_state_t</a> ippGetState (<br>
@@ -4604,7 +4602,7 @@ int ippGetResolution (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">IPP message state value</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetStatusCode">ippGetStatusCode</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetStatusCode">ippGetStatusCode</a></h3>
 <p class="description">Get the status code from an IPP response or event message.</p>
 <p class="code">
 ipp_status_t ippGetStatusCode (<br>
@@ -4640,7 +4638,7 @@ const char *ippGetString (<br>
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a> - 1.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetValueTag">ippGetValueTag</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetValueTag">ippGetValueTag</a></h3>
 <p class="description">Get the value tag for an attribute.</p>
 <p class="code">
 ipp_tag_t ippGetValueTag (<br>
@@ -4653,7 +4651,7 @@ ipp_tag_t ippGetValueTag (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Value tag or <code>IPP_TAG_ZERO</code> on error</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippGetVersion">ippGetVersion</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippGetVersion">ippGetVersion</a></h3>
 <p class="description">Get the major and minor version number from an IPP message.</p>
 <p class="code">
 int ippGetVersion (<br>
@@ -4688,7 +4686,7 @@ size_t ippLength (<br>
 <a href="#ipp_t">ipp_t</a> *ippNew (void);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New IPP message</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ippNewRequest">ippNewRequest</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ippNewRequest">ippNewRequest</a></h3>
 <p class="description">Allocate a new IPP request message.</p>
 <p class="code">
 <a href="#ipp_t">ipp_t</a> *ippNewRequest (<br>
@@ -4707,7 +4705,7 @@ attributes-natural-language attributes added. The
 attributes-natural-language value is derived from the current locale.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippNewResponse">ippNewResponse</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippNewResponse">ippNewResponse</a></h3>
 <p class="description">Allocate a new IPP response message.</p>
 <p class="code">
 <a href="#ipp_t">ipp_t</a> *ippNewResponse (<br>
@@ -4729,7 +4727,7 @@ attributes-natural-language attributes are missing from the request,
 respectively.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippNextAttribute">ippNextAttribute</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippNextAttribute">ippNextAttribute</a></h3>
 <p class="description">Return the next attribute in the message.</p>
 <p class="code">
 <a href="#ipp_attribute_t">ipp_attribute_t</a> *ippNextAttribute (<br>
@@ -4742,7 +4740,7 @@ respectively.
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Next attribute or <code>NULL</code> if none</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ippOpString">ippOpString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ippOpString">ippOpString</a></h3>
 <p class="description">Return a name for the given operation id.</p>
 <p class="code">
 const char *ippOpString (<br>
@@ -4755,7 +4753,7 @@ const char *ippOpString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Name</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ippOpValue">ippOpValue</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ippOpValue">ippOpValue</a></h3>
 <p class="description">Return an operation id for the given name.</p>
 <p class="code">
 ipp_op_t ippOpValue (<br>
@@ -4790,7 +4788,7 @@ int ippPort (void);</p>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Current state</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ippReadFile">ippReadFile</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ippReadFile">ippReadFile</a></h3>
 <p class="description">Read data for an IPP message from a file.</p>
 <p class="code">
 <a href="#ipp_state_t">ipp_state_t</a> ippReadFile (<br>
@@ -4806,7 +4804,7 @@ int ippPort (void);</p>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Current state</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ippReadIO">ippReadIO</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ippReadIO">ippReadIO</a></h3>
 <p class="description">Read data for an IPP message.</p>
 <p class="code">
 <a href="#ipp_state_t">ipp_state_t</a> ippReadIO (<br>
@@ -4831,7 +4829,7 @@ int ippPort (void);</p>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Current state</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetBoolean">ippSetBoolean</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetBoolean">ippSetBoolean</a></h3>
 <p class="description">Set a boolean value in an attribute.</p>
 <p class="code">
 int ippSetBoolean (<br>
@@ -4863,7 +4861,7 @@ The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetCollection">ippSetCollection</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetCollection">ippSetCollection</a></h3>
 <p class="description">Set a collection value in an attribute.</p>
 <p class="code">
 int ippSetCollection (<br>
@@ -4895,7 +4893,7 @@ The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetDate">ippSetDate</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetDate">ippSetDate</a></h3>
 <p class="description">Set a date value in an attribute.</p>
 <p class="code">
 int ippSetDate (<br>
@@ -4927,7 +4925,7 @@ The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetGroupTag">ippSetGroupTag</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetGroupTag">ippSetGroupTag</a></h3>
 <p class="description">Set the group tag of an attribute.</p>
 <p class="code">
 int ippSetGroupTag (<br>
@@ -4959,7 +4957,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 (<code>IPP_TAG_SUBSCRIPTION</code>), or unsupported (<code>IPP_TAG_UNSUPPORTED_GROUP</code>).
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetInteger">ippSetInteger</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetInteger">ippSetInteger</a></h3>
 <p class="description">Set an integer or enum value in an attribute.</p>
 <p class="code">
 int ippSetInteger (<br>
@@ -4991,7 +4989,7 @@ The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetName">ippSetName</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetName">ippSetName</a></h3>
 <p class="description">Set the name of an attribute.</p>
 <p class="code">
 int ippSetName (<br>
@@ -5017,7 +5015,7 @@ the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ip
 The <code>attr</code> parameter may be modified as a result of setting the value.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippSetOctetString">ippSetOctetString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippSetOctetString">ippSetOctetString</a></h3>
 <p class="description">Set an octetString value in an IPP attribute.</p>
 <p class="code">
 int ippSetOctetString (<br>
@@ -5052,7 +5050,7 @@ The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetOperation">ippSetOperation</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetOperation">ippSetOperation</a></h3>
 <p class="description">Set the operation ID in an IPP request message.</p>
 <p class="code">
 int ippSetOperation (<br>
@@ -5084,7 +5082,7 @@ void ippSetPort (<br>
 <dt>p</dt>
 <dd class="description">Port number to use</dd>
 </dl>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetRange">ippSetRange</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetRange">ippSetRange</a></h3>
 <p class="description">Set a rangeOfInteger value in an attribute.</p>
 <p class="code">
 int ippSetRange (<br>
@@ -5119,7 +5117,7 @@ The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetRequestId">ippSetRequestId</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetRequestId">ippSetRequestId</a></h3>
 <p class="description">Set the request ID in an IPP message.</p>
 <p class="code">
 int ippSetRequestId (<br>
@@ -5142,7 +5140,7 @@ the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ip
 The <code>request_id</code> parameter must be greater than 0.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetResolution">ippSetResolution</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetResolution">ippSetResolution</a></h3>
 <p class="description">Set a resolution value in an attribute.</p>
 <p class="code">
 int ippSetResolution (<br>
@@ -5180,7 +5178,7 @@ The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetState">ippSetState</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetState">ippSetState</a></h3>
 <p class="description">Set the current state of the IPP message.</p>
 <p class="code">
 int ippSetState (<br>
@@ -5196,7 +5194,7 @@ int ippSetState (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">1 on success, 0 on failure</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetStatusCode">ippSetStatusCode</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetStatusCode">ippSetStatusCode</a></h3>
 <p class="description">Set the status code in an IPP response or event message.</p>
 <p class="code">
 int ippSetStatusCode (<br>
@@ -5217,7 +5215,7 @@ int ippSetStatusCode (<br>
 the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ippNewRequest</code></a>, or  <a href="#ippNewResponse"><code>ippNewResponse</code></a> functions.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetString">ippSetString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetString">ippSetString</a></h3>
 <p class="description">Set a string value in an attribute.</p>
 <p class="code">
 int ippSetString (<br>
@@ -5249,7 +5247,7 @@ The <code>element</code> parameter specifies which value to set from 0 to
 <a href="#ippGetCount(attr)"><code>ippGetCount(attr)</code></a>.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippSetStringf">ippSetStringf</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippSetStringf">ippSetStringf</a></h3>
 <p class="description">Set a formatted string value of an attribute.</p>
 <p class="code">
 int ippSetStringf (<br>
@@ -5289,7 +5287,7 @@ needed.  The formatted string is truncated as needed to the maximum length of
 the corresponding value type.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippSetStringfv">ippSetStringfv</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippSetStringfv">ippSetStringfv</a></h3>
 <p class="description">Set a formatted string value of an attribute.</p>
 <p class="code">
 int ippSetStringfv (<br>
@@ -5329,7 +5327,7 @@ needed.  The formatted string is truncated as needed to the maximum length of
 the corresponding value type.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetValueTag">ippSetValueTag</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetValueTag">ippSetValueTag</a></h3>
 <p class="description">Set the value tag of an attribute.</p>
 <p class="code">
 int ippSetValueTag (<br>
@@ -5367,7 +5365,7 @@ code in the &quot;attributes-natural-language&quot; attribute or, if not present
 code for the current locale.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.6/OS X 10.8&nbsp;</span><a name="ippSetVersion">ippSetVersion</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.6/macOS 10.8&nbsp;</span><a name="ippSetVersion">ippSetVersion</a></h3>
 <p class="description">Set the version number in an IPP message.</p>
 <p class="code">
 int ippSetVersion (<br>
@@ -5406,7 +5404,7 @@ const char *ippStateString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">State name</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="ippTagString">ippTagString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="ippTagString">ippTagString</a></h3>
 <p class="description">Return the tag name corresponding to a tag value.</p>
 <p class="code">
 const char *ippTagString (<br>
@@ -5423,7 +5421,7 @@ const char *ippTagString (<br>
 <p class="discussion">The returned names are defined in RFC 2911 and 3382.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="ippTagValue">ippTagValue</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="ippTagValue">ippTagValue</a></h3>
 <p class="description">Return the tag value corresponding to a tag name.</p>
 <p class="code">
 ipp_tag_t ippTagValue (<br>
@@ -5453,7 +5451,7 @@ const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippTimeToDate (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">RFC-1903 date/time data</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippValidateAttribute">ippValidateAttribute</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippValidateAttribute">ippValidateAttribute</a></h3>
 <p class="description">Validate the contents of an attribute.</p>
 <p class="code">
 int ippValidateAttribute (<br>
@@ -5472,7 +5470,7 @@ value tag.  1 is returned if the attribute is valid, 0 otherwise.  On
 failure, cupsLastErrorString() is set to a human-readable message.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span><a name="ippValidateAttributes">ippValidateAttributes</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span><a name="ippValidateAttributes">ippValidateAttributes</a></h3>
 <p class="description">Validate all attributes in an IPP message.</p>
 <p class="code">
 int ippValidateAttributes (<br>
@@ -5507,7 +5505,7 @@ to a human-readable message on failure.
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Current state</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ippWriteFile">ippWriteFile</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ippWriteFile">ippWriteFile</a></h3>
 <p class="description">Write data for an IPP message to a file.</p>
 <p class="code">
 <a href="#ipp_state_t">ipp_state_t</a> ippWriteFile (<br>
@@ -5523,7 +5521,7 @@ to a human-readable message on failure.
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Current state</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ippWriteIO">ippWriteIO</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ippWriteIO">ippWriteIO</a></h3>
 <p class="description">Write data for an IPP message.</p>
 <p class="code">
 <a href="#ipp_state_t">ipp_state_t</a> ippWriteIO (<br>
@@ -5554,7 +5552,7 @@ to a human-readable message on failure.
 <p class="code">
 typedef struct <a href="#gss_auth_identity">gss_auth_identity</a> gss_auth_identity_desc;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="http_addr_t">http_addr_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="http_addr_t">http_addr_t</a></h3>
 <p class="description">Socket address union, which
 makes using IPv6 and other
 address types easier and
@@ -5562,7 +5560,7 @@ more portable. </p>
 <p class="code">
 typedef union _http_addr_u / http_addr_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="http_addrlist_t">http_addrlist_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="http_addrlist_t">http_addrlist_t</a></h3>
 <p class="description">Socket address list, which is
 used to enumerate all of the
 addresses that are associated
@@ -5575,7 +5573,7 @@ typedef struct <a href="#http_addrlist_s">http_addrlist_s</a> / http_addrlist_t;
 <p class="code">
 typedef enum <a href="#http_auth_e">http_auth_e</a> http_auth_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="http_credential_t">http_credential_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="http_credential_t">http_credential_t</a></h3>
 <p class="description">HTTP credential data </p>
 <p class="code">
 typedef struct <a href="#http_credential_s">http_credential_s</a> http_credential_t;
@@ -5611,7 +5609,7 @@ typedef enum <a href="#http_state_e">http_state_e</a> http_state_t;
 <p class="code">
 typedef struct _http_s http_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="http_timeout_cb_t">http_timeout_cb_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="http_timeout_cb_t">http_timeout_cb_t</a></h3>
 <p class="description">HTTP timeout callback </p>
 <p class="code">
 typedef int (*http_timeout_cb_t)(<a href="#http_t">http_t</a> *http, void *user_data);
@@ -5642,7 +5640,7 @@ typedef enum <a href="#http_version_e">http_version_e</a> http_version_t;
 typedef struct _ipp_attribute_s ipp_attribute_t;
 </p>
 <h3 class="typedef"><a name="ipp_copycb_t">ipp_copycb_t</a></h3>
-<p class="description">The following structures are PRIVATE starting with CUPS 1.6/OS X 10.8.
+<p class="description">The following structures are PRIVATE starting with CUPS 1.6/macOS 10.8.
 Please use the new accessor functions available in CUPS 1.6 and later, as
 these definitions will be moved to a private header file in a future release.</p>
 <p class="code">
@@ -5658,7 +5656,7 @@ typedef enum <a href="#ipp_dstate_e">ipp_dstate_e</a> ipp_dstate_t;
 <p class="code">
 typedef enum <a href="#ipp_finishings_e">ipp_finishings_e</a> ipp_finish_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ipp_iocb_t">ipp_iocb_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ipp_iocb_t">ipp_iocb_t</a></h3>
 <p class="description">IPP IO Callback Function </p>
 <p class="code">
 typedef ssize_t (*ipp_iocb_t)(void *context, <a href="#ipp_uchar_t">ipp_uchar_t</a> *buffer, size_t bytes);
@@ -5723,7 +5721,7 @@ typedef unsigned char ipp_uchar_t;
 <dt>type </dt>
 <dt>username </dt>
 </dl>
-<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="http_addrlist_s">http_addrlist_s</a></h3>
+<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="http_addrlist_s">http_addrlist_s</a></h3>
 <p class="description">Socket address list, which is
 used to enumerate all of the
 addresses that are associated
@@ -5739,7 +5737,7 @@ with a hostname. </p>
 <dt>next </dt>
 <dd class="description">Pointer to next address in list</dd>
 </dl>
-<h3 class="struct"><span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span><a name="http_credential_s">http_credential_s</a></h3>
+<h3 class="struct"><span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span><a name="http_credential_s">http_credential_s</a></h3>
 <p class="description">HTTP credential data </p>
 <p class="code">struct http_credential_s {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;void *data;<br>
@@ -5778,7 +5776,7 @@ with a hostname. </p>
 <dd class="description">MD5-session authentication in use</dd>
 <dt>HTTP_AUTH_MD5_SESS_INT </dt>
 <dd class="description">MD5-session authentication in use for body</dd>
-<dt>HTTP_AUTH_NEGOTIATE <span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span></dt>
+<dt>HTTP_AUTH_NEGOTIATE <span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span></dt>
 <dd class="description">GSSAPI authentication in use </dd>
 <dt>HTTP_AUTH_NONE </dt>
 <dd class="description">No authentication in use</dd>
@@ -5811,13 +5809,13 @@ with a hostname. </p>
 <p class="description">HTTP field names</p>
 <h4 class="constants">Constants</h4>
 <dl>
-<dt>HTTP_FIELD_ACCEPT_ENCODING <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>HTTP_FIELD_ACCEPT_ENCODING <span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span></dt>
 <dd class="description">Accepting-Encoding field </dd>
 <dt>HTTP_FIELD_ACCEPT_LANGUAGE </dt>
 <dd class="description">Accept-Language field</dd>
 <dt>HTTP_FIELD_ACCEPT_RANGES </dt>
 <dd class="description">Accept-Ranges field</dd>
-<dt>HTTP_FIELD_ALLOW <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>HTTP_FIELD_ALLOW <span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span></dt>
 <dd class="description">Allow field </dd>
 <dt>HTTP_FIELD_AUTHORIZATION </dt>
 <dd class="description">Authorization field</dd>
@@ -5863,7 +5861,7 @@ with a hostname. </p>
 <dd class="description">Referer field</dd>
 <dt>HTTP_FIELD_RETRY_AFTER </dt>
 <dd class="description">Retry-After field</dd>
-<dt>HTTP_FIELD_SERVER <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>HTTP_FIELD_SERVER <span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span></dt>
 <dd class="description">Server field </dd>
 <dt>HTTP_FIELD_TRANSFER_ENCODING </dt>
 <dd class="description">Transfer-Encoding field</dd>
@@ -5918,9 +5916,9 @@ are server-oriented...</p>
 <dd class="description">Command complete, sending status</dd>
 <dt>HTTP_STATE_TRACE </dt>
 <dd class="description">TRACE command, waiting for blank line</dd>
-<dt>HTTP_STATE_UNKNOWN_METHOD <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>HTTP_STATE_UNKNOWN_METHOD <span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span></dt>
 <dd class="description">Unknown request method, waiting for blank line </dd>
-<dt>HTTP_STATE_UNKNOWN_VERSION <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>HTTP_STATE_UNKNOWN_VERSION <span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span></dt>
 <dd class="description">Unknown request method, waiting for blank line </dd>
 <dt>HTTP_STATE_WAITING </dt>
 <dd class="description">Waiting for command</dd>
@@ -5943,7 +5941,7 @@ are server-oriented...</p>
 <dd class="description">PUT command was successful</dd>
 <dt>HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED <span class="info">&nbsp;CUPS 1.4&nbsp;</span></dt>
 <dd class="description">User canceled authorization </dd>
-<dt>HTTP_STATUS_CUPS_PKI_ERROR <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
+<dt>HTTP_STATUS_CUPS_PKI_ERROR <span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span></dt>
 <dd class="description">Error negotiating a secure connection </dd>
 <dt>HTTP_STATUS_ERROR </dt>
 <dd class="description">An error response from httpXxxx()</dd>
@@ -5965,7 +5963,7 @@ are server-oriented...</p>
 <dd class="description">Document has moved temporarily</dd>
 <dt>HTTP_STATUS_MULTIPLE_CHOICES </dt>
 <dd class="description">Multiple files match request</dd>
-<dt>HTTP_STATUS_NONE <span class="info">&nbsp;CUPS 1.7/OS X 10.9&nbsp;</span></dt>
+<dt>HTTP_STATUS_NONE <span class="info">&nbsp;CUPS 1.7/macOS 10.9&nbsp;</span></dt>
 <dd class="description">No Expect value </dd>
 <dt>HTTP_STATUS_NOT_ACCEPTABLE </dt>
 <dd class="description">Not Acceptable</dd>
@@ -6349,15 +6347,15 @@ are server-oriented...</p>
 <dd class="description">Cancel-Jobs</dd>
 <dt>IPP_OP_CANCEL_MY_JOBS </dt>
 <dd class="description">Cancel-My-Jobs</dd>
-<dt>IPP_OP_CANCEL_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_CANCEL_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Cancel a subscription </dd>
 <dt>IPP_OP_CLOSE_JOB </dt>
 <dd class="description">Close-Job</dd>
 <dt>IPP_OP_CREATE_JOB </dt>
 <dd class="description">Create an empty print job</dd>
-<dt>IPP_OP_CREATE_JOB_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_CREATE_JOB_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Create one of more job subscriptions </dd>
-<dt>IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Create one or more printer subscriptions </dd>
 <dt>IPP_OP_CUPS_ACCEPT_JOBS </dt>
 <dd class="description">Accept new jobs on a printer</dd>
@@ -6365,9 +6363,10 @@ are server-oriented...</p>
 <dd class="description">Add or modify a class</dd>
 <dt>IPP_OP_CUPS_ADD_MODIFY_PRINTER </dt>
 <dd class="description">Add or modify a printer</dd>
-<dt>IPP_OP_CUPS_AUTHENTICATE_JOB <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_CUPS_AUTHENTICATE_JOB <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Authenticate a job </dd>
-<dt>IPP_OP_CUPS_DELETE_CLASS </dt>
+<dt>IPP_OP_CUPS_CREATE_LOCAL_PRINTER <span class="info">&nbsp;CUPS 2.2&nbsp;</span></dt>
+<dd class="description">Create a local (temporary) printer <dt>IPP_OP_CUPS_DELETE_CLASS </dt>
 <dd class="description">Delete a class</dd>
 <dt>IPP_OP_CUPS_DELETE_PRINTER </dt>
 <dd class="description">Delete a printer</dd>
@@ -6375,14 +6374,14 @@ are server-oriented...</p>
 <dd class="description">Get a list of classes </dd>
 <dt>IPP_OP_CUPS_GET_DEFAULT </dt>
 <dd class="description">Get the default printer</dd>
-<dt>IPP_OP_CUPS_GET_DEVICES </dt>
-<dd class="description">Get a list of supported devices</dd>
-<dt>IPP_OP_CUPS_GET_DOCUMENT <span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span></dt>
+<dt>IPP_OP_CUPS_GET_DEVICES <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
+<dd class="description">Get a list of supported devices </dd>
+<dt>IPP_OP_CUPS_GET_DOCUMENT <span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span></dt>
 <dd class="description">Get a document file </dd>
-<dt>IPP_OP_CUPS_GET_PPD <span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_CUPS_GET_PPD <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
 <dd class="description">Get a PPD file </dd>
-<dt>IPP_OP_CUPS_GET_PPDS </dt>
-<dd class="description">Get a list of supported drivers</dd>
+<dt>IPP_OP_CUPS_GET_PPDS <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
+<dd class="description">Get a list of supported drivers </dd>
 <dt>IPP_OP_CUPS_GET_PRINTERS </dt>
 <dd class="description">Get a list of printers and/or classes</dd>
 <dt>IPP_OP_CUPS_INVALID </dt>
@@ -6417,7 +6416,7 @@ are server-oriented...</p>
 <dd class="description">Get job attributes</dd>
 <dt>IPP_OP_GET_NEXT_DOCUMENT_DATA </dt>
 <dd class="description">Get-Next-Document-Data</dd>
-<dt>IPP_OP_GET_NOTIFICATIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_GET_NOTIFICATIONS <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Get notification events </dd>
 <dt>IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES </dt>
 <dd class="description">Get-Output-Device-Attributes</dd>
@@ -6425,9 +6424,9 @@ are server-oriented...</p>
 <dd class="description">Get printer attributes</dd>
 <dt>IPP_OP_GET_PRINTER_SUPPORTED_VALUES </dt>
 <dd class="description">Get supported attribute values</dd>
-<dt>IPP_OP_GET_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_GET_SUBSCRIPTIONS <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Get list of subscriptions </dd>
-<dt>IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Get subscription attributes </dd>
 <dt>IPP_OP_HOLD_JOB </dt>
 <dd class="description">Hold a job for printing</dd>
@@ -6451,7 +6450,7 @@ are server-oriented...</p>
 <dd class="description">Release new jobs</dd>
 <dt>IPP_OP_RELEASE_JOB </dt>
 <dd class="description">Release a job for printing</dd>
-<dt>IPP_OP_RENEW_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>IPP_OP_RENEW_SUBSCRIPTION <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Renew a printer subscription </dd>
 <dt>IPP_OP_REPROCESS_JOB </dt>
 <dd class="description">Reprint a job</dd>
@@ -6599,9 +6598,9 @@ are server-oriented...</p>
 <dd class="description">cups-error-account-info-needed </dd>
 <dt>IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
 <dd class="description">cups-error-account-limit-reached </dd>
-<dt>IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
+<dt>IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED <span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span></dt>
 <dd class="description">cups-authentication-canceled - Authentication canceled by user </dd>
-<dt>IPP_STATUS_ERROR_CUPS_PKI <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
+<dt>IPP_STATUS_ERROR_CUPS_PKI <span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span></dt>
 <dd class="description">cups-pki-error - Error negotiating a secure connection </dd>
 <dt>IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED </dt>
 <dd class="description">cups-upgrade-required - TLS upgrade required</dd>
@@ -6639,6 +6638,8 @@ are server-oriented...</p>
 <dd class="description">client-error-not-authenticated</dd>
 <dt>IPP_STATUS_ERROR_NOT_AUTHORIZED </dt>
 <dd class="description">client-error-not-authorized</dd>
+<dt>IPP_STATUS_ERROR_NOT_FETCHABLE </dt>
+<dd class="description">client-error-not-fetchable</dd>
 <dt>IPP_STATUS_ERROR_NOT_FOUND </dt>
 <dd class="description">client-error-not-found</dd>
 <dt>IPP_STATUS_ERROR_NOT_POSSIBLE </dt>
diff --git a/doc/help/api-mime.html b/doc/help/api-mime.html
deleted file mode 100644 (file)
index d957342..0000000
+++ /dev/null
@@ -1,845 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Programming -->
-<head>
-       <title>MIME API </title>
-       <meta name="keywords" content="Programming">
-       <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
-<style type="text/css"><!--
-BODY {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1, H2, H3, H4, H5, H6, P, TD, TH {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-KBD {
-  font-family: monaco, courier, monospace;
-  font-weight: bold;
-}
-
-PRE {
-  font-family: monaco, courier, monospace;
-}
-
-PRE.command {
-  border: dotted thin #7f7f7f;
-  margin-left: 36pt;
-  padding: 10px;
-}
-
-P.compact {
-  margin: 0;
-}
-
-P.example {
-  font-style: italic;
-  margin-left: 36pt;
-}
-
-DL.man DD {
-  margin-left: 5em;
-}
-
-DL.man DT {
-  margin-left: 0;
-}
-
-PRE.man {
-  margin: 0;
-}
-
-PRE.example {
-  background: #eeeeee;
-  border: dotted thin #999999;
-  margin-left: 36pt;
-  padding: 10pt;
-}
-
-PRE.command EM, PRE.example EM {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-P.command {
-  font-family: monaco, courier, monospace;
-  margin-left: 36pt;
-}
-
-P.formula {
-  font-style: italic;
-  margin-left: 36pt;
-}
-
-BLOCKQUOTE {
-  background: #eeeeee;
-  border: solid thin #999999;
-  padding: 10pt;
-}
-
-A IMG {
-  border: none;
-}
-
-A:link:hover IMG {
-  background: #f0f0f0;
-  border-radius: 10px;
-  -moz-border-radius: 10px;
-}
-
-A:link, A:visited {
-  font-weight: inherit;
-  text-decoration: none;
-}
-
-A:link:hover, A:visited:hover, A:active {
-  text-decoration: underline;
-}
-
-SUB, SUP {
-  font-size: 50%;
-}
-
-TR.data, TD.data, TR.data TD {
-  margin-top: 10pt;
-  padding: 5pt;
-  border-bottom: solid 1pt #999999;
-}
-
-TR.data TH {
-  border-bottom: solid 1pt #999999;
-  padding-top: 10pt;
-  padding-left: 5pt;
-  text-align: left;
-}
-
-DIV.table TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table CAPTION {
-  caption-side: top;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table TABLE TD {
-  border: solid thin #cccccc;
-  padding-top: 5pt;
-}
-
-DIV.table TABLE TH {
-  background: #cccccc;
-  border: none;
-  border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.figure CAPTION {
-  caption-side: bottom;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-TH.label {
-  text-align: right;
-  vertical-align: top;
-}
-
-TH.sublabel {
-  text-align: right;
-  font-weight: normal;
-}
-
-HR {
-  border: solid thin;
-}
-
-SPAN.info {
-  background: black;
-  border: thin solid black;
-  color: white;
-  font-size: 80%;
-  font-style: italic;
-  font-weight: bold;
-  white-space: nowrap;
-}
-
-H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
-  float: right;
-  font-size: 100%;
-}
-
-H1.title {
-}
-
-H2.title, H3.title {
-  border-bottom: solid 2pt #000000;
-}
-
-DIV.indent, TABLE.indent {
-  margin-top: 2em;
-  margin-left: auto;
-  margin-right: auto;
-  width: 90%;
-}
-
-TABLE.indent {
-  border-collapse: collapse;
-}
-
-TABLE.indent TD, TABLE.indent TH {
-  padding: 0;
-}
-
-TABLE.list {
-  border-collapse: collapse;
-  margin-left: auto;
-  margin-right: auto;
-  width: 90%;
-}
-
-TABLE.list TH {
-  background: white;
-  border-bottom: solid thin #cccccc;
-  color: #444444;
-  padding-top: 10pt;
-  padding-left: 5pt;
-  text-align: left;
-  vertical-align: bottom;
-  white-space: nowrap;
-}
-
-TABLE.list TH A {
-  color: #4444cc;
-}
-
-TABLE.list TD {
-  border-bottom: solid thin #eeeeee;
-  padding-top: 5pt;
-  padding-left: 5pt;
-}
-
-TABLE.list TR:nth-child(even) {
-  background: #f8f8f8;
-}
-
-TABLE.list TR:nth-child(odd) {
-  background: #f4f4f4;
-}
-
-DT {
-  margin-left: 36pt;
-  margin-top: 12pt;
-}
-
-DD {
-  margin-left: 54pt;
-}
-
-DL.category DT {
-  font-weight: bold;
-}
-
-P.summary {
-  margin-left: 36pt;
-  font-family: monaco, courier, monospace;
-}
-
-DIV.summary TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin: 10px;
-}
-
-DIV.summary TABLE TD, DIV.summary TABLE TH {
-  border: solid thin #999999;
-  padding: 5px;
-  text-align: left;
-  vertical-align: top;
-}
-
-DIV.summary TABLE THEAD TH {
-  background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
-  margin: 0;
-}
-div.body h2 {
-  margin-top: 1.5em;
-}
-div.body h3, div.body h4, div.body h5 {
-  margin-bottom: 0.5em;
-  margin-top: 1.5em;
-}
-.class, .enumeration, .function, .struct, .typedef, .union {
-  border-bottom: solid thin #999999;
-  margin-bottom: 0;
-  margin-top: 2em;
-}
-.description {
-  margin-top: 0.5em;
-}
-code, p.code, pre, ul.code li {
-  font-family: monaco, courier, monospace;
-  font-size: 90%;
-}
-ul.code, ul.contents, ul.subcontents {
-  list-style-type: none;
-  margin: 0;
-  padding-left: 0;
-}
-ul.code li {
-  margin: 0;
-}
-ul.contents > li {
-  margin-top: 1em;
-}
-ul.contents li ul.code, ul.contents li ul.subcontents {
-  padding-left: 2em;
-}
-div.body dl {
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dt {
-  font-style: italic;
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dd {
-  margin-bottom: 0.5em;
-}
-
-/* This is just for the HTML files generated with the framedhelp target */
-div.contents {
-  background: #e8e8e8;
-  border: solid thin black;
-  padding: 10px;
-}
-div.contents h1 {
-  font-size: 110%;
-}
-div.contents h2 {
-  font-size: 100%;
-}
-div.contents ul.contents {
-  font-size: 80%;
-}
-div.contents ul.subcontents li {
-  margin-left: 1em;
-  text-indent: -1em;
-}
---></style>
-</head>
-<body>
-<div class='body'>
-<!--
-  "$Id: api-array.header 8087 2008-10-27 21:37:05Z mike $"
-
-  MIME API header for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h1 class='title'>MIME API</h1>
-
-<div class='summary'><table summary='General Information'>
-<thead>
-<tr>
-       <th>Header</th>
-       <th>cups/mime.h</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-       <th>Library</th>
-       <td>-lcupsmime</td>
-</tr>
-<tr>
-       <th>See Also</th>
-       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
-</tr>
-</tbody>
-</table></div>
-<h2 class="title">Contents</h2>
-<ul class="contents">
-<li><a href="#OVERVIEW">Overview</a></li>
-<li><a href="#FUNCTIONS">Functions</a><ul class="code">
-       <li><a href="#mimeAddFilter" title="Add a filter to the current MIME database.">mimeAddFilter</a></li>
-       <li><a href="#mimeAddType" title="Add a MIME type to a database.">mimeAddType</a></li>
-       <li><a href="#mimeAddTypeRule" title="Add a detection rule for a file type.">mimeAddTypeRule</a></li>
-       <li><a href="#mimeDelete" title="Delete (free) a MIME database.">mimeDelete</a></li>
-       <li><a href="#mimeDeleteFilter" title="Delete a filter from the MIME database.">mimeDeleteFilter</a></li>
-       <li><a href="#mimeDeleteType" title="Delete a type from the MIME database.">mimeDeleteType</a></li>
-       <li><a href="#mimeFileType" title="Determine the type of a file.">mimeFileType</a></li>
-       <li><a href="#mimeFilter" title="Find the fastest way to convert from one type to another.">mimeFilter</a></li>
-       <li><a href="#mimeFilter2" title="Find the fastest way to convert from one type to another,
-including file size.">mimeFilter2</a></li>
-       <li><a href="#mimeFilterLookup" title="Lookup a filter.">mimeFilterLookup</a></li>
-       <li><a href="#mimeFirstFilter" title="Get the first filter in the MIME database.">mimeFirstFilter</a></li>
-       <li><a href="#mimeFirstType" title="Get the first type in the MIME database.">mimeFirstType</a></li>
-       <li><a href="#mimeLoad" title="Create a new MIME database from disk.">mimeLoad</a></li>
-       <li><a href="#mimeLoadFilters" title="Load filter definitions from disk.">mimeLoadFilters</a></li>
-       <li><a href="#mimeLoadTypes" title="Load type definitions from disk.">mimeLoadTypes</a></li>
-       <li><a href="#mimeNew" title="Create a new, empty MIME database.">mimeNew</a></li>
-       <li><a href="#mimeNextFilter" title="Get the next filter in the MIME database.">mimeNextFilter</a></li>
-       <li><a href="#mimeNextType" title="Get the next type in the MIME database.">mimeNextType</a></li>
-       <li><a href="#mimeNumFilters" title="Next type">mimeNumFilters</a></li>
-       <li><a href="#mimeNumTypes" title="MIME database">mimeNumTypes</a></li>
-       <li><a href="#mimeSetErrorCallback" title="Set the callback for error messages.">mimeSetErrorCallback</a></li>
-       <li><a href="#mimeType" title="Lookup a file type.">mimeType</a></li>
-</ul></li>
-<li><a href="#TYPES">Data Types</a><ul class="code">
-       <li><a href="#const" title="MIME Database">const</a></li>
-       <li><a href="#mime_filter_t" title="MIME Conversion Filter Data">mime_filter_t</a></li>
-       <li><a href="#mime_magic_t" title="MIME Magic Data">mime_magic_t</a></li>
-       <li><a href="#mime_op_t" title="Types/structures...">mime_op_t</a></li>
-       <li><a href="#mime_t" title="MIME Database">mime_t</a></li>
-       <li><a href="#mime_type_t" title="MIME Type Data">mime_type_t</a></li>
-</ul></li>
-</ul>
-<!--
-  "$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
-
-  MIME API introduction for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
-
-<p>The MIME API provides file typing and conversion services for CUPS.</p>
-<h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
-<h3 class="function"><a name="mimeAddFilter">mimeAddFilter</a></h3>
-<p class="description">Add a filter to the current MIME database.</p>
-<p class="code">
-<a href="#mime_filter_t">mime_filter_t</a> *mimeAddFilter (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *src,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *dst,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int cost,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *filter<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>src</dt>
-<dd class="description">Source type</dd>
-<dt>dst</dt>
-<dd class="description">Destination type</dd>
-<dt>cost</dt>
-<dd class="description">Relative time/resource cost</dd>
-<dt>filter</dt>
-<dd class="description">Filter program to run</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New filter</p>
-<h3 class="function"><a name="mimeAddType">mimeAddType</a></h3>
-<p class="description">Add a MIME type to a database.</p>
-<p class="code">
-<a href="#mime_type_t">mime_type_t</a> *mimeAddType (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *super,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *type<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>super</dt>
-<dd class="description">Super-type name</dd>
-<dt>type</dt>
-<dd class="description">Type name</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New (or existing) MIME type</p>
-<h3 class="function"><a name="mimeAddTypeRule">mimeAddTypeRule</a></h3>
-<p class="description">Add a detection rule for a file type.</p>
-<p class="code">
-int mimeAddTypeRule (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *mt,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *rule<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mt</dt>
-<dd class="description">Type to add to</dd>
-<dt>rule</dt>
-<dd class="description">Rule to add</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">0 on success, -1 on failure</p>
-<h3 class="function"><a name="mimeDelete">mimeDelete</a></h3>
-<p class="description">Delete (free) a MIME database.</p>
-<p class="code">
-void mimeDelete (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-</dl>
-<h3 class="function"><a name="mimeDeleteFilter">mimeDeleteFilter</a></h3>
-<p class="description">Delete a filter from the MIME database.</p>
-<p class="code">
-void mimeDeleteFilter (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_filter_t">mime_filter_t</a> *filter<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>filter</dt>
-<dd class="description">Filter</dd>
-</dl>
-<h3 class="function"><a name="mimeDeleteType">mimeDeleteType</a></h3>
-<p class="description">Delete a type from the MIME database.</p>
-<p class="code">
-void mimeDeleteType (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *mt<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>mt</dt>
-<dd class="description">Type</dd>
-</dl>
-<h3 class="function"><a name="mimeFileType">mimeFileType</a></h3>
-<p class="description">Determine the type of a file.</p>
-<p class="code">
-<a href="#mime_type_t">mime_type_t</a> *mimeFileType (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *pathname,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *filename,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int *compression<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>pathname</dt>
-<dd class="description">Name of file to check on disk</dd>
-<dt>filename</dt>
-<dd class="description">Original filename or NULL</dd>
-<dt>compression</dt>
-<dd class="description">Is the file compressed?</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Type of file</p>
-<h3 class="function"><a name="mimeFilter">mimeFilter</a></h3>
-<p class="description">Find the fastest way to convert from one type to another.</p>
-<p class="code">
-cups_array_t *mimeFilter (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *src,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *dst,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int *cost<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>src</dt>
-<dd class="description">Source file type</dd>
-<dt>dst</dt>
-<dd class="description">Destination file type</dd>
-<dt>cost</dt>
-<dd class="description">Cost of filters</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Array of filters to run</p>
-<h3 class="function"><a name="mimeFilter2">mimeFilter2</a></h3>
-<p class="description">Find the fastest way to convert from one type to another,
-including file size.</p>
-<p class="code">
-cups_array_t *mimeFilter2 (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *src,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;size_t srcsize,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *dst,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int *cost<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>src</dt>
-<dd class="description">Source file type</dd>
-<dt>srcsize</dt>
-<dd class="description">Size of source file</dd>
-<dt>dst</dt>
-<dd class="description">Destination file type</dd>
-<dt>cost</dt>
-<dd class="description">Cost of filters</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Array of filters to run</p>
-<h3 class="function"><a name="mimeFilterLookup">mimeFilterLookup</a></h3>
-<p class="description">Lookup a filter.</p>
-<p class="code">
-<a href="#mime_filter_t">mime_filter_t</a> *mimeFilterLookup (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *src,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_type_t">mime_type_t</a> *dst<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>src</dt>
-<dd class="description">Source type</dd>
-<dt>dst</dt>
-<dd class="description">Destination type</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Filter for src-&gt;dst</p>
-<h3 class="function"><a name="mimeFirstFilter">mimeFirstFilter</a></h3>
-<p class="description">Get the first filter in the MIME database.</p>
-<p class="code">
-<a href="#mime_filter_t">mime_filter_t</a> *mimeFirstFilter (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Filter or NULL</p>
-<h3 class="function"><a name="mimeFirstType">mimeFirstType</a></h3>
-<p class="description">Get the first type in the MIME database.</p>
-<p class="code">
-<a href="#mime_type_t">mime_type_t</a> *mimeFirstType (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Type or NULL</p>
-<h3 class="function"><a name="mimeLoad">mimeLoad</a></h3>
-<p class="description">Create a new MIME database from disk.</p>
-<p class="code">
-<a href="#mime_t">mime_t</a> *mimeLoad (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *pathname,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *filterpath<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>pathname</dt>
-<dd class="description">Directory to load</dd>
-<dt>filterpath</dt>
-<dd class="description">Directory to load</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">New MIME database</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">This function uses <a href="#mimeLoadFilters"><code>mimeLoadFilters</code></a> and <a href="#mimeLoadTypes"><code>mimeLoadTypes</code></a> to
-create a MIME database from a single directory.</p>
-<h3 class="function"><a name="mimeLoadFilters">mimeLoadFilters</a></h3>
-<p class="description">Load filter definitions from disk.</p>
-<p class="code">
-<a href="#mime_t">mime_t</a> *mimeLoadFilters (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *pathname,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *filterpath<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>pathname</dt>
-<dd class="description">Directory to load from</dd>
-<dt>filterpath</dt>
-<dd class="description">Default filter program directory</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">MIME database</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">This function loads all of the .convs files from the specified directory.
-Use <a href="#mimeLoadTypes"><code>mimeLoadTypes</code></a> to load all types before you load the filters.</p>
-<h3 class="function"><a name="mimeLoadTypes">mimeLoadTypes</a></h3>
-<p class="description">Load type definitions from disk.</p>
-<p class="code">
-<a href="#mime_t">mime_t</a> *mimeLoadTypes (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *pathname<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database or <code>NULL</code> to create a new one</dd>
-<dt>pathname</dt>
-<dd class="description">Directory to load from</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">MIME database</p>
-<h4 class="discussion">Discussion</h4>
-<p class="discussion">This function loads all of the .types files from the specified directory.
-Use <a href="#mimeLoadFilters"><code>mimeLoadFilters</code></a> to load all filters after you load the types.</p>
-<h3 class="function"><a name="mimeNew">mimeNew</a></h3>
-<p class="description">Create a new, empty MIME database.</p>
-<p class="code">
-<a href="#mime_t">mime_t</a> *mimeNew (void);</p>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">MIME database</p>
-<h3 class="function"><a name="mimeNextFilter">mimeNextFilter</a></h3>
-<p class="description">Get the next filter in the MIME database.</p>
-<p class="code">
-<a href="#mime_filter_t">mime_filter_t</a> *mimeNextFilter (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Filter or NULL</p>
-<h3 class="function"><a name="mimeNextType">mimeNextType</a></h3>
-<p class="description">Get the next type in the MIME database.</p>
-<p class="code">
-<a href="#mime_type_t">mime_type_t</a> *mimeNextType (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Type or NULL</p>
-<h3 class="function"><a name="mimeNumFilters">mimeNumFilters</a></h3>
-<p class="description">Next type</p>
-<p class="code">
-int mimeNumFilters (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Get the number of filters in a MIME database.</p>
-<h3 class="function"><a name="mimeNumTypes">mimeNumTypes</a></h3>
-<p class="description">MIME database</p>
-<p class="code">
-int mimeNumTypes (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Get the number of types in a MIME database.</p>
-<h3 class="function"><a name="mimeSetErrorCallback">mimeSetErrorCallback</a></h3>
-<p class="description">Set the callback for error messages.</p>
-<p class="code">
-void mimeSetErrorCallback (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;mime_error_cb_t cb,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void *ctx<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>cb</dt>
-<dd class="description">Callback function</dd>
-<dt>ctx</dt>
-<dd class="description">Context pointer for callback</dd>
-</dl>
-<h3 class="function"><a name="mimeType">mimeType</a></h3>
-<p class="description">Lookup a file type.</p>
-<p class="code">
-<a href="#mime_type_t">mime_type_t</a> *mimeType (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#mime_t">mime_t</a> *mime,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *super,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#const">const</a> char *type<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>mime</dt>
-<dd class="description">MIME database</dd>
-<dt>super</dt>
-<dd class="description">Super-type name</dd>
-<dt>type</dt>
-<dd class="description">Type name</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Matching file type definition</p>
-<h2 class="title"><a name="TYPES">Data Types</a></h2>
-<h3 class="typedef"><a name="const">const</a></h3>
-<p class="description">MIME Database</p>
-<p class="code">
-typedef void (*constmime_error_cb_t)(void *;
-</p>
-<h3 class="typedef"><a name="mime_filter_t">mime_filter_t</a></h3>
-<p class="description">MIME Conversion Filter Data</p>
-<p class="code">
-typedef struct _mime_filter_s mime_filter_t;
-</p>
-<h3 class="typedef"><a name="mime_magic_t">mime_magic_t</a></h3>
-<p class="description">MIME Magic Data</p>
-<p class="code">
-typedef struct _mime_magic_s mime_magic_t;
-</p>
-<h3 class="typedef"><a name="mime_op_t">mime_op_t</a></h3>
-<p class="description">Types/structures...</p>
-<p class="code">
-typedef enum mime_op_t;
-</p>
-<h3 class="typedef"><a name="mime_t">mime_t</a></h3>
-<p class="description">MIME Database</p>
-<p class="code">
-typedef struct _mime_s mime_t;
-</p>
-<h3 class="typedef"><a name="mime_type_t">mime_type_t</a></h3>
-<p class="description">MIME Type Data</p>
-<p class="code">
-typedef struct _mime_type_s mime_type_t;
-</p>
-</div>
-</body>
-</html>
index 01a0414..5960924 100644 (file)
@@ -5,7 +5,7 @@
        <title>Introduction to CUPS Programming </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,11 +353,9 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
-
   Introduction to CUPS programming header for CUPS.
 
-  Copyright 2008-2011 by Apple Inc.
+  Copyright 2008-2016 by Apple Inc.
 
   These coded instructions, statements, and computer programs are the
   property of Apple Inc. and are protected by Federal copyright
@@ -373,20 +371,22 @@ div.contents ul.subcontents li {
 <tr>
        <th>Headers</th>
        <th>cups/cups.h<br>
+       cups/adminutil.h<br>
        cups/array.h<br>
-       cups/backend.h<br>
        cups/dir.h<br>
        cups/file.h<br>
+       cups/http.h<br>
+       cups/ipp.h<br>
+       cups/language.h<br>
        cups/ppd.h<br>
-       cups/raster.h<br>
-       cups/sidechannel.h</th>
+       cups/pwg.h<br>
+       cups/raster.h</th>
 </tr>
 </thead>
 <tbody>
 <tr>
        <th>Libraries</th>
-       <td>-lcups<br>
-       -lcupsimage</td>
+       <td>-lcups</td>
 </tr>
 <tr>
        <th>See Also</th>
@@ -394,11 +394,12 @@ div.contents ul.subcontents li {
        Programming: <a href='postscript-driver.html' target='_top'>Developing PostScript Printer Drivers</a><br>
        Programming: <a href='api-filter.html' target='_top'>Filter and Backend Programming</a><br>
        Programming: <a href='ppd-compiler.html' target='_top'>Introduction to the PPD Compiler</a><br>
+       Programming: <a href='api-admin.html' target='_top'>Administrative APIs</a><br>
        Programming: <a href='api-array.html' target='_top'>Array API</a><br>
        Programming: <a href='api-cups.html' target='_top'>CUPS API</a><br>
        Programming: <a href='api-filedir.html' target='_top'>File and Directory APIs</a><br>
        Programming: <a href='api-httpipp.html' target='_top'>HTTP and IPP APIs</a><br>
-       Programming: <a href='api-ppd.html' target='_top'>PPD API</a><br>
+       Programming: <a href='api-ppd.html' target='_top'>PPD API (DEPRECATED)</a><br>
        Programming: <a href='api-raster.html' target='_top'>Raster API</a><br>
        References: <a href='ref-ppdcfile.html' target='_top'>PPD Compiler Driver Information File Reference</a><br>
        Specifications: <a href='spec-ppd.html' target='_top'>CUPS PPD Extensions</a></td>
@@ -415,8 +416,6 @@ div.contents ul.subcontents li {
 <li><a href="#WHERETOGO">Where to Go Next</a></li>
 </ul>
 <!--
-  "$Id: api-cups.header 7279 2008-01-31 01:50:44Z mike $"
-
   Introduction to CUPS programming content for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
index df8f7a9..0034289 100644 (file)
@@ -5,7 +5,7 @@
        <title>PPD API (DEPRECATED)     </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id: api-ppd.header 7616 2008-05-28 00:34:13Z mike $"
-
   PPD API header for CUPS.
 
   Copyright 2008-2012 by Apple Inc.
@@ -368,7 +366,7 @@ div.contents ul.subcontents li {
 
 <h1 class='title'>PPD API (DEPRECATED)</h1>
 
-<blockquote>The PPD API is deprecated starting in CUPS 1.6/OS X 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
+<blockquote>The PPD API is deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
 
 <div class='summary'><table summary='General Information'>
 <thead>
@@ -401,9 +399,13 @@ div.contents ul.subcontents li {
 </ul></li>
 <li><a href="#FUNCTIONS">Functions</a><ul class="code">
        <li><a href="#cupsGetConflicts" title="Get a list of conflicting options in a marked PPD.">cupsGetConflicts</a></li>
+       <li><a href="#cupsGetPPD" title="Get the PPD file for a printer on the default server.">cupsGetPPD</a></li>
+       <li><a href="#cupsGetPPD2" title="Get the PPD file for a printer from the specified server.">cupsGetPPD2</a></li>
+       <li><a href="#cupsGetPPD3" title="Get the PPD file for a printer on the specified
+server if it has changed.">cupsGetPPD3</a></li>
+       <li><a href="#cupsGetServerPPD" title="Get an available PPD file from the server.">cupsGetServerPPD</a></li>
        <li><a href="#cupsMarkOptions" title="Mark command-line options in a PPD file.">cupsMarkOptions</a></li>
        <li><a href="#cupsResolveConflicts" title="Resolve conflicts in a marked PPD.">cupsResolveConflicts</a></li>
-       <li><a href="#ppdClose" title="Free all memory used by the PPD file.">ppdClose</a></li>
        <li><a href="#ppdCollect" title="Collect all marked options that reside in the specified
 section.">ppdCollect</a></li>
        <li><a href="#ppdCollect2" title="Collect all marked options that reside in the
@@ -416,7 +418,6 @@ marked option choices.">ppdConflicts</a></li>
        <li><a href="#ppdEmitJCL" title="Emit code for JCL options to a file.">ppdEmitJCL</a></li>
        <li><a href="#ppdEmitJCLEnd" title="Emit JCLEnd code to a file.">ppdEmitJCLEnd</a></li>
        <li><a href="#ppdEmitString" title="Get a string containing the code for marked options.">ppdEmitString</a></li>
-       <li><a href="#ppdErrorString" title="Returns the text associated with a status.">ppdErrorString</a></li>
        <li><a href="#ppdFindAttr" title="Find the first matching attribute.">ppdFindAttr</a></li>
        <li><a href="#ppdFindChoice" title="Return a pointer to an option choice.">ppdFindChoice</a></li>
        <li><a href="#ppdFindCustomOption" title="Find a custom option.">ppdFindCustomOption</a></li>
@@ -429,7 +430,6 @@ marked option choices.">ppdConflicts</a></li>
        <li><a href="#ppdInstallableConflict" title="Test whether an option choice conflicts with
 an installable option.">ppdInstallableConflict</a></li>
        <li><a href="#ppdIsMarked" title="Check to see if an option is marked.">ppdIsMarked</a></li>
-       <li><a href="#ppdLastError" title="Return the status from the last ppdOpen*().">ppdLastError</a></li>
        <li><a href="#ppdLocalize" title="Localize the PPD file to the current locale.">ppdLocalize</a></li>
        <li><a href="#ppdLocalizeAttr" title="Localize an attribute.">ppdLocalizeAttr</a></li>
        <li><a href="#ppdLocalizeIPPReason" title="Get the localized version of a cupsIPPReason
@@ -441,15 +441,10 @@ attribute value.">ppdLocalizeMarkerName</a></li>
 conflicts.">ppdMarkOption</a></li>
        <li><a href="#ppdNextCustomParam" title="Return the next parameter for a custom option.">ppdNextCustomParam</a></li>
        <li><a href="#ppdNextOption" title="Return the next option in the PPD file.">ppdNextOption</a></li>
-       <li><a href="#ppdOpen" title="Read a PPD file into memory.">ppdOpen</a></li>
-       <li><a href="#ppdOpen2" title="Read a PPD file into memory.">ppdOpen2</a></li>
-       <li><a href="#ppdOpenFd" title="Read a PPD file into memory.">ppdOpenFd</a></li>
-       <li><a href="#ppdOpenFile" title="Read a PPD file into memory.">ppdOpenFile</a></li>
        <li><a href="#ppdPageLength" title="Get the page length for the given size.">ppdPageLength</a></li>
        <li><a href="#ppdPageSize" title="Get the page size record for the named size.">ppdPageSize</a></li>
        <li><a href="#ppdPageSizeLimits" title="Return the custom page size limits.">ppdPageSizeLimits</a></li>
        <li><a href="#ppdPageWidth" title="Get the page width for the given size.">ppdPageWidth</a></li>
-       <li><a href="#ppdSetConformance" title="Set the conformance level for PPD files.">ppdSetConformance</a></li>
 </ul></li>
 <li><a href="#TYPES">Data Types</a><ul class="code">
        <li><a href="#ppd_attr_t" title="PPD Attribute Structure ">ppd_attr_t</a></li>
@@ -498,8 +493,6 @@ conflicts.">ppdMarkOption</a></li>
 </ul></li>
 </ul>
 <!--
-  "$Id: api-ppd.shtml 7616 2008-05-28 00:34:13Z mike $"
-
   PPD API introduction for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -514,7 +507,7 @@ conflicts.">ppdMarkOption</a></li>
 
 <h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
 
-<blockquote>The PPD API is deprecated starting in CUPS 1.6/OS X 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
+<blockquote>The PPD API is deprecated starting in CUPS 1.6/macOS 10.8. Please use the new Job Ticket APIs in the <a href="api-cups.html">CUPS API</a> documentation. These functions will be removed in a future release of CUPS.</blockquote>
 
 <p>The CUPS PPD API provides read-only access the data in PostScript Printer
 Description ("PPD") files which are used for all printers with a driver. With
@@ -717,7 +710,7 @@ for (attr = <a href="#ppdFindAttr">ppdFindAttr</a>(ppd, "Product", NULL);
   puts(attr->value);
 </pre>
 <h2 class="title"><a name="FUNCTIONS">Functions</a></h2>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsGetConflicts">cupsGetConflicts</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsGetConflicts">cupsGetConflicts</a></h3>
 <p class="description">Get a list of conflicting options in a marked PPD.</p>
 <p class="code">
 int cupsGetConflicts (<br>
@@ -750,6 +743,122 @@ the conflicting options.  The returned option array must be freed using
 <a href="#cupsFreeOptions"><code>cupsFreeOptions</code></a>.
 
 </p>
+<h3 class="function"><a name="cupsGetPPD">cupsGetPPD</a></h3>
+<p class="description">Get the PPD file for a printer on the default server.</p>
+<p class="code">
+const char *cupsGetPPD (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>name</dt>
+<dd class="description">Destination name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Filename for PPD file</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">For classes, <code>cupsGetPPD</code> returns the PPD file for the first printer
+in the class.<br>
+<br>
+The returned filename is stored in a static buffer and is overwritten with
+each call to <code>cupsGetPPD</code> or <a href="#cupsGetPPD2"><code>cupsGetPPD2</code></a>.  The caller &quot;owns&quot; the
+file that is created and must <code>unlink</code> the returned filename.</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.21/macOS 10.4&nbsp;</span><a name="cupsGetPPD2">cupsGetPPD2</a></h3>
+<p class="description">Get the PPD file for a printer from the specified server.</p>
+<p class="code">
+const char *cupsGetPPD2 (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>name</dt>
+<dd class="description">Destination name</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Filename for PPD file</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">For classes, <code>cupsGetPPD2</code> returns the PPD file for the first printer
+in the class.<br>
+<br>
+The returned filename is stored in a static buffer and is overwritten with
+each call to <a href="#cupsGetPPD"><code>cupsGetPPD</code></a> or <code>cupsGetPPD2</code>.  The caller &quot;owns&quot; the
+file that is created and must <code>unlink</code> the returned filename.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsGetPPD3">cupsGetPPD3</a></h3>
+<p class="description">Get the PPD file for a printer on the specified
+server if it has changed.</p>
+<p class="code">
+http_status_t cupsGetPPD3 (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;time_t *modtime,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;size_t bufsize<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">HTTP connection or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>name</dt>
+<dd class="description">Destination name</dd>
+<dt>modtime</dt>
+<dd class="description">Modification time</dd>
+<dt>buffer</dt>
+<dd class="description">Filename buffer</dd>
+<dt>bufsize</dt>
+<dd class="description">Size of filename buffer</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">HTTP status</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The &quot;modtime&quot; parameter contains the modification time of any
+locally-cached content and is updated with the time from the PPD file on
+the server.<br>
+<br>
+The &quot;buffer&quot; parameter contains the local PPD filename.  If it contains
+the empty string, a new temporary file is created, otherwise the existing
+file will be overwritten as needed.  The caller &quot;owns&quot; the file that is
+created and must <code>unlink</code> the returned filename.<br>
+<br>
+On success, <code>HTTP_STATUS_OK</code> is returned for a new PPD file and
+<code>HTTP_STATUS_NOT_MODIFIED</code> if the existing PPD file is up-to-date.  Any other
+status is an error.<br>
+<br>
+For classes, <code>cupsGetPPD3</code> returns the PPD file for the first printer
+in the class.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="cupsGetServerPPD">cupsGetServerPPD</a></h3>
+<p class="description">Get an available PPD file from the server.</p>
+<p class="code">
+char *cupsGetServerPPD (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;http_t *http,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *name<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>http</dt>
+<dd class="description">Connection to server or <code>CUPS_HTTP_DEFAULT</code></dd>
+<dt>name</dt>
+<dd class="description">Name of PPD file (&quot;ppd-name&quot;)</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Name of PPD file or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns the named PPD file from the server.  The
+list of available PPDs is provided by the IPP <code>CUPS_GET_PPDS</code>
+operation.<br>
+<br>
+You must remove (unlink) the PPD file when you are finished with
+it. The PPD filename is stored in a static location that will be
+overwritten on the next call to <a href="#cupsGetPPD"><code>cupsGetPPD</code></a>, <a href="#cupsGetPPD2"><code>cupsGetPPD2</code></a>,
+or <a href="#cupsGetServerPPD"><code>cupsGetServerPPD</code></a>.
+
+</p>
 <h3 class="function"><a name="cupsMarkOptions">cupsMarkOptions</a></h3>
 <p class="description">Mark command-line options in a PPD file.</p>
 <p class="code">
@@ -774,7 +883,7 @@ int cupsMarkOptions (<br>
 &quot;multiple-document-handling&quot;, &quot;output-bin&quot;, &quot;print-color-mode&quot;,
 &quot;print-quality&quot;, &quot;printer-resolution&quot;, and &quot;sides&quot; attributes to their
 corresponding PPD options and choices.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="cupsResolveConflicts">cupsResolveConflicts</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="cupsResolveConflicts">cupsResolveConflicts</a></h3>
 <p class="description">Resolve conflicts in a marked PPD.</p>
 <p class="code">
 int cupsResolveConflicts (<br>
@@ -832,17 +941,6 @@ choice for the conflicting option, then iterating over all possible choices
 until a non-conflicting option choice is found.
 
 </p>
-<h3 class="function"><a name="ppdClose">ppdClose</a></h3>
-<p class="description">Free all memory used by the PPD file.</p>
-<p class="code">
-void ppdClose (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppd_file_t">ppd_file_t</a> *ppd<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>ppd</dt>
-<dd class="description">PPD file record</dd>
-</dl>
 <h3 class="function"><a name="ppdCollect">ppdCollect</a></h3>
 <p class="description">Collect all marked options that reside in the specified
 section.</p>
@@ -866,7 +964,7 @@ int ppdCollect (<br>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">The choices array should be freed using <code>free</code> when you are
 finished with it.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdCollect2">ppdCollect2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdCollect2">ppdCollect2</a></h3>
 <p class="description">Collect all marked options that reside in the
 specified section and minimum order.</p>
 <p class="code">
@@ -929,7 +1027,7 @@ int ppdEmit (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, -1 on failure</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdEmitAfterOrder">ppdEmitAfterOrder</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdEmitAfterOrder">ppdEmitAfterOrder</a></h3>
 <p class="description">Emit a subset of the code for marked options to a file.</p>
 <p class="code">
 int ppdEmitAfterOrder (<br>
@@ -1005,7 +1103,7 @@ int ppdEmitJCL (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, -1 on failure</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdEmitJCLEnd">ppdEmitJCLEnd</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdEmitJCLEnd">ppdEmitJCLEnd</a></h3>
 <p class="description">Emit JCLEnd code to a file.</p>
 <p class="code">
 int ppdEmitJCLEnd (<br>
@@ -1021,7 +1119,7 @@ int ppdEmitJCLEnd (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">0 on success, -1 on failure</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdEmitString">ppdEmitString</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdEmitString">ppdEmitString</a></h3>
 <p class="description">Get a string containing the code for marked options.</p>
 <p class="code">
 char *ppdEmitString (<br>
@@ -1050,20 +1148,7 @@ The return string is allocated on the heap and should be freed using
 <code>free</code> when you are done with it.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppdErrorString">ppdErrorString</a></h3>
-<p class="description">Returns the text associated with a status.</p>
-<p class="code">
-const char *ppdErrorString (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppd_status_t">ppd_status_t</a> status<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>status</dt>
-<dd class="description">PPD status</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Status string</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppdFindAttr">ppdFindAttr</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ppdFindAttr">ppdFindAttr</a></h3>
 <p class="description">Find the first matching attribute.</p>
 <p class="code">
 <a href="#ppd_attr_t">ppd_attr_t</a> *ppdFindAttr (<br>
@@ -1098,7 +1183,7 @@ const char *ppdErrorString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Choice pointer or <code>NULL</code></p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdFindCustomOption">ppdFindCustomOption</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdFindCustomOption">ppdFindCustomOption</a></h3>
 <p class="description">Find a custom option.</p>
 <p class="code">
 <a href="#ppd_coption_t">ppd_coption_t</a> *ppdFindCustomOption (<br>
@@ -1114,7 +1199,7 @@ const char *ppdErrorString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Custom option or NULL</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdFindCustomParam">ppdFindCustomParam</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdFindCustomParam">ppdFindCustomParam</a></h3>
 <p class="description">Find a parameter for a custom option.</p>
 <p class="code">
 <a href="#ppd_cparam_t">ppd_cparam_t</a> *ppdFindCustomParam (<br>
@@ -1146,7 +1231,7 @@ const char *ppdErrorString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Pointer to choice or <code>NULL</code></p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppdFindNextAttr">ppdFindNextAttr</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ppdFindNextAttr">ppdFindNextAttr</a></h3>
 <p class="description">Find the next matching attribute.</p>
 <p class="code">
 <a href="#ppd_attr_t">ppd_attr_t</a> *ppdFindNextAttr (<br>
@@ -1181,7 +1266,7 @@ const char *ppdErrorString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Pointer to option or <code>NULL</code></p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdFirstCustomParam">ppdFirstCustomParam</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdFirstCustomParam">ppdFirstCustomParam</a></h3>
 <p class="description">Return the first parameter for a custom option.</p>
 <p class="code">
 <a href="#ppd_cparam_t">ppd_cparam_t</a> *ppdFirstCustomParam (<br>
@@ -1194,7 +1279,7 @@ const char *ppdErrorString (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Custom parameter or NULL</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdFirstOption">ppdFirstOption</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdFirstOption">ppdFirstOption</a></h3>
 <p class="description">Return the first option in the PPD file.</p>
 <p class="code">
 <a href="#ppd_option_t">ppd_option_t</a> *ppdFirstOption (<br>
@@ -1211,7 +1296,7 @@ const char *ppdErrorString (<br>
 <p class="discussion">Options are returned from all groups in ascending alphanumeric order.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="ppdInstallableConflict">ppdInstallableConflict</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="ppdInstallableConflict">ppdInstallableConflict</a></h3>
 <p class="description">Test whether an option choice conflicts with
 an installable option.</p>
 <p class="code">
@@ -1255,20 +1340,7 @@ int ppdIsMarked (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Non-zero if option is marked</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppdLastError">ppdLastError</a></h3>
-<p class="description">Return the status from the last ppdOpen*().</p>
-<p class="code">
-<a href="#ppd_status_t">ppd_status_t</a> ppdLastError (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int *line<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>line</dt>
-<dd class="description">Line number</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">Status code</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdLocalize">ppdLocalize</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdLocalize">ppdLocalize</a></h3>
 <p class="description">Localize the PPD file to the current locale.</p>
 <p class="code">
 int ppdLocalize (<br>
@@ -1310,7 +1382,7 @@ localized string uses the UTF-8 character encoding.
 <p class="discussion">This function uses the current locale to find the localized attribute for
 the given main and option keywords.  If no localized version of the
 attribute exists for the current locale, the unlocalized version is returned.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span><a name="ppdLocalizeIPPReason">ppdLocalizeIPPReason</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span><a name="ppdLocalizeIPPReason">ppdLocalizeIPPReason</a></h3>
 <p class="description">Get the localized version of a cupsIPPReason
 attribute.</p>
 <p class="code">
@@ -1345,7 +1417,7 @@ string or attribute value. Otherwise the corresponding URI is returned.<br>
 If no value of the requested scheme can be found, NULL is returned.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="ppdLocalizeMarkerName">ppdLocalizeMarkerName</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="ppdLocalizeMarkerName">ppdLocalizeMarkerName</a></h3>
 <p class="description">Get the localized version of a marker-names
 attribute value.</p>
 <p class="code">
@@ -1399,7 +1471,7 @@ int ppdMarkOption (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Number of conflicts</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdNextCustomParam">ppdNextCustomParam</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdNextCustomParam">ppdNextCustomParam</a></h3>
 <p class="description">Return the next parameter for a custom option.</p>
 <p class="code">
 <a href="#ppd_cparam_t">ppd_cparam_t</a> *ppdNextCustomParam (<br>
@@ -1412,7 +1484,7 @@ int ppdMarkOption (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Custom parameter or NULL</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdNextOption">ppdNextOption</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppdNextOption">ppdNextOption</a></h3>
 <p class="description">Return the next option in the PPD file.</p>
 <p class="code">
 <a href="#ppd_option_t">ppd_option_t</a> *ppdNextOption (<br>
@@ -1429,58 +1501,6 @@ int ppdMarkOption (<br>
 <p class="discussion">Options are returned from all groups in ascending alphanumeric order.
 
 </p>
-<h3 class="function"><a name="ppdOpen">ppdOpen</a></h3>
-<p class="description">Read a PPD file into memory.</p>
-<p class="code">
-<a href="#ppd_file_t">ppd_file_t</a> *ppdOpen (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;FILE *fp<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read from</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">PPD file record</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppdOpen2">ppdOpen2</a></h3>
-<p class="description">Read a PPD file into memory.</p>
-<p class="code">
-<a href="#ppd_file_t">ppd_file_t</a> *ppdOpen2 (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_file_t *fp<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read from</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">PPD file record or <code>NULL</code> if the PPD file could not be opened.</p>
-<h3 class="function"><a name="ppdOpenFd">ppdOpenFd</a></h3>
-<p class="description">Read a PPD file into memory.</p>
-<p class="code">
-<a href="#ppd_file_t">ppd_file_t</a> *ppdOpenFd (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int fd<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>fd</dt>
-<dd class="description">File to read from</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">PPD file record or <code>NULL</code> if the PPD file could not be opened.</p>
-<h3 class="function"><a name="ppdOpenFile">ppdOpenFile</a></h3>
-<p class="description">Read a PPD file into memory.</p>
-<p class="code">
-<a href="#ppd_file_t">ppd_file_t</a> *ppdOpenFile (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *filename<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>filename</dt>
-<dd class="description">File to read from</dd>
-</dl>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">PPD file record or <code>NULL</code> if the PPD file could not be opened.</p>
 <h3 class="function"><a name="ppdPageLength">ppdPageLength</a></h3>
 <p class="description">Get the page length for the given size.</p>
 <p class="code">
@@ -1513,7 +1533,7 @@ float ppdPageLength (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Size record for page or NULL</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.4/OS X 10.6&nbsp;</span><a name="ppdPageSizeLimits">ppdPageSizeLimits</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.4/macOS 10.6&nbsp;</span><a name="ppdPageSizeLimits">ppdPageSizeLimits</a></h3>
 <p class="description">Return the custom page size limits.</p>
 <p class="code">
 int ppdPageSizeLimits (<br>
@@ -1556,19 +1576,8 @@ float ppdPageWidth (<br>
 </dl>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Width of page in points or 0.0</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.1.20/OS X 10.4&nbsp;</span><a name="ppdSetConformance">ppdSetConformance</a></h3>
-<p class="description">Set the conformance level for PPD files.</p>
-<p class="code">
-void ppdSetConformance (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppd_conform_t">ppd_conform_t</a> c<br>
-);</p>
-<h4 class="parameters">Parameters</h4>
-<dl>
-<dt>c</dt>
-<dd class="description">Conformance level</dd>
-</dl>
 <h2 class="title"><a name="TYPES">Data Types</a></h2>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppd_attr_t">ppd_attr_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ppd_attr_t">ppd_attr_t</a></h3>
 <p class="description">PPD Attribute Structure </p>
 <p class="code">
 typedef struct <a href="#ppd_attr_s">ppd_attr_s</a> ppd_attr_t;
@@ -1578,7 +1587,7 @@ typedef struct <a href="#ppd_attr_s">ppd_attr_s</a> ppd_attr_t;
 <p class="code">
 typedef struct <a href="#ppd_choice_s">ppd_choice_s</a> ppd_choice_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppd_conform_t">ppd_conform_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ppd_conform_t">ppd_conform_t</a></h3>
 <p class="description">Conformance Levels </p>
 <p class="code">
 typedef enum <a href="#ppd_conform_e">ppd_conform_e</a> ppd_conform_t;
@@ -1588,27 +1597,27 @@ typedef enum <a href="#ppd_conform_e">ppd_conform_e</a> ppd_conform_t;
 <p class="code">
 typedef struct <a href="#ppd_const_s">ppd_const_s</a> ppd_const_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_coption_t">ppd_coption_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_coption_t">ppd_coption_t</a></h3>
 <p class="description">Custom Option </p>
 <p class="code">
 typedef struct <a href="#ppd_coption_s">ppd_coption_s</a> ppd_coption_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_cparam_t">ppd_cparam_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_cparam_t">ppd_cparam_t</a></h3>
 <p class="description">Custom Parameter </p>
 <p class="code">
 typedef struct <a href="#ppd_cparam_s">ppd_cparam_s</a> ppd_cparam_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_cplimit_t">ppd_cplimit_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_cplimit_t">ppd_cplimit_t</a></h3>
 <p class="description">Custom Parameter Limit </p>
 <p class="code">
 typedef union <a href="#ppd_cplimit_u">ppd_cplimit_u</a> ppd_cplimit_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_cptype_t">ppd_cptype_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_cptype_t">ppd_cptype_t</a></h3>
 <p class="description">Custom Parameter Type </p>
 <p class="code">
 typedef enum ppd_cptype_e ppd_cptype_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_cpvalue_t">ppd_cpvalue_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_cpvalue_t">ppd_cpvalue_t</a></h3>
 <p class="description">Custom Parameter Value </p>
 <p class="code">
 typedef union <a href="#ppd_cpvalue_u">ppd_cpvalue_u</a> ppd_cpvalue_t;
@@ -1653,7 +1662,7 @@ typedef enum <a href="#ppd_section_e">ppd_section_e</a> ppd_section_t;
 <p class="code">
 typedef struct <a href="#ppd_size_s">ppd_size_s</a> ppd_size_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppd_status_t">ppd_status_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ppd_status_t">ppd_status_t</a></h3>
 <p class="description">Status Codes </p>
 <p class="code">
 typedef enum <a href="#ppd_status_e">ppd_status_e</a> ppd_status_t;
@@ -1664,7 +1673,7 @@ typedef enum <a href="#ppd_status_e">ppd_status_e</a> ppd_status_t;
 typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 </p>
 <h2 class="title"><a name="STRUCTURES">Structures</a></h2>
-<h3 class="struct"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppd_attr_s">ppd_attr_s</a></h3>
+<h3 class="struct"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ppd_attr_s">ppd_attr_s</a></h3>
 <p class="description">PPD Attribute Structure </p>
 <p class="code">struct ppd_attr_s {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char name[PPD_MAX_NAME];<br>
@@ -1724,7 +1733,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <dt>option2[PPD_MAX_NAME] </dt>
 <dd class="description">Second keyword</dd>
 </dl>
-<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_coption_s">ppd_coption_s</a></h3>
+<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_coption_s">ppd_coption_s</a></h3>
 <p class="description">Custom Option </p>
 <p class="code">struct ppd_coption_s {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;char keyword[PPD_MAX_NAME];<br>
@@ -1743,7 +1752,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <dt>params </dt>
 <dd class="description">Parameters</dd>
 </dl>
-<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_cparam_s">ppd_cparam_s</a></h3>
+<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_cparam_s">ppd_cparam_s</a></h3>
 <p class="description">Custom Parameter </p>
 <p class="code">struct ppd_cparam_s {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppd_cpvalue_t">ppd_cpvalue_t</a> current;<br>
@@ -1898,13 +1907,13 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <dd class="description">Number of page sizes</dd>
 <dt>patches </dt>
 <dd class="description">Patch commands to be sent to printer</dd>
-<dt>pcfilename <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>pcfilename <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">PCFileName string </dd>
 <dt>product </dt>
 <dd class="description">Product name (from PS RIP/interpreter)</dd>
 <dt>profiles <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
 <dd class="description">sRGB color profiles </dd>
-<dt>protocols <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>protocols <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">Protocols (BCP, TBCP) string </dd>
 <dt>shortnickname </dt>
 <dd class="description">Short version of nickname</dd>
@@ -1931,7 +1940,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <dl>
 <dt>PPD_MAX_NAME] </dt>
 <dd class="description">Human-readable group name</dd>
-<dt>name[PPD_MAX_NAME] <span class="info">&nbsp;CUPS 1.1.18/OS X 10.3&nbsp;</span></dt>
+<dt>name[PPD_MAX_NAME] <span class="info">&nbsp;CUPS 1.1.18/macOS 10.3&nbsp;</span></dt>
 <dd class="description">Group name </dd>
 <dt>num_options </dt>
 <dd class="description">Number of options</dd>
@@ -2030,7 +2039,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <dd class="description">Width of media in points</dd>
 </dl>
 <h2 class="title"><a name="UNIONS">Unions</a></h2>
-<h3 class="union"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_cplimit_u">ppd_cplimit_u</a></h3>
+<h3 class="union"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_cplimit_u">ppd_cplimit_u</a></h3>
 <p class="description">Custom Parameter Limit </p>
 <p class="code">union ppd_cplimit_u {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;float custom_curve;<br>
@@ -2061,7 +2070,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <dt>custom_string </dt>
 <dd class="description">String length</dd>
 </dl>
-<h3 class="union"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="ppd_cpvalue_u">ppd_cpvalue_u</a></h3>
+<h3 class="union"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="ppd_cpvalue_u">ppd_cpvalue_u</a></h3>
 <p class="description">Custom Parameter Value </p>
 <p class="code">union ppd_cpvalue_u {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;float custom_curve;<br>
@@ -2093,7 +2102,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <dd class="description">String value</dd>
 </dl>
 <h2 class="title"><a name="ENUMERATIONS">Constants</a></h2>
-<h3 class="enumeration"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppd_conform_e">ppd_conform_e</a></h3>
+<h3 class="enumeration"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ppd_conform_e">ppd_conform_e</a></h3>
 <p class="description">Conformance Levels </p>
 <h4 class="constants">Constants</h4>
 <dl>
@@ -2136,7 +2145,7 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <dt>PPD_ORDER_PROLOG </dt>
 <dd class="description">... must be in the Prolog section</dd>
 </dl>
-<h3 class="enumeration"><span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span><a name="ppd_status_e">ppd_status_e</a></h3>
+<h3 class="enumeration"><span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span><a name="ppd_status_e">ppd_status_e</a></h3>
 <p class="description">Status Codes </p>
 <h4 class="constants">Constants</h4>
 <dl>
diff --git a/doc/help/api-ppdc.html b/doc/help/api-ppdc.html
deleted file mode 100644 (file)
index df32135..0000000
+++ /dev/null
@@ -1,2212 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html>
-<!-- SECTION: Programming -->
-<head>
-       <title>PPD Compiler API </title>
-       <meta name="keywords" content="Programming">
-       <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
-<style type="text/css"><!--
-BODY {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-H1, H2, H3, H4, H5, H6, P, TD, TH {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-KBD {
-  font-family: monaco, courier, monospace;
-  font-weight: bold;
-}
-
-PRE {
-  font-family: monaco, courier, monospace;
-}
-
-PRE.command {
-  border: dotted thin #7f7f7f;
-  margin-left: 36pt;
-  padding: 10px;
-}
-
-P.compact {
-  margin: 0;
-}
-
-P.example {
-  font-style: italic;
-  margin-left: 36pt;
-}
-
-DL.man DD {
-  margin-left: 5em;
-}
-
-DL.man DT {
-  margin-left: 0;
-}
-
-PRE.man {
-  margin: 0;
-}
-
-PRE.example {
-  background: #eeeeee;
-  border: dotted thin #999999;
-  margin-left: 36pt;
-  padding: 10pt;
-}
-
-PRE.command EM, PRE.example EM {
-  font-family: lucida grande, geneva, helvetica, arial, sans-serif;
-}
-
-P.command {
-  font-family: monaco, courier, monospace;
-  margin-left: 36pt;
-}
-
-P.formula {
-  font-style: italic;
-  margin-left: 36pt;
-}
-
-BLOCKQUOTE {
-  background: #eeeeee;
-  border: solid thin #999999;
-  padding: 10pt;
-}
-
-A IMG {
-  border: none;
-}
-
-A:link:hover IMG {
-  background: #f0f0f0;
-  border-radius: 10px;
-  -moz-border-radius: 10px;
-}
-
-A:link, A:visited {
-  font-weight: inherit;
-  text-decoration: none;
-}
-
-A:link:hover, A:visited:hover, A:active {
-  text-decoration: underline;
-}
-
-SUB, SUP {
-  font-size: 50%;
-}
-
-TR.data, TD.data, TR.data TD {
-  margin-top: 10pt;
-  padding: 5pt;
-  border-bottom: solid 1pt #999999;
-}
-
-TR.data TH {
-  border-bottom: solid 1pt #999999;
-  padding-top: 10pt;
-  padding-left: 5pt;
-  text-align: left;
-}
-
-DIV.table TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table CAPTION {
-  caption-side: top;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.table TABLE TD {
-  border: solid thin #cccccc;
-  padding-top: 5pt;
-}
-
-DIV.table TABLE TH {
-  background: #cccccc;
-  border: none;
-  border-bottom: solid thin #999999;
-}
-
-DIV.figure TABLE {
-  margin-left: auto;
-  margin-right: auto;
-}
-
-DIV.figure CAPTION {
-  caption-side: bottom;
-  font-size: 120%;
-  font-style: italic;
-  font-weight: bold;
-  margin-left: auto;
-  margin-right: auto;
-}
-
-TH.label {
-  text-align: right;
-  vertical-align: top;
-}
-
-TH.sublabel {
-  text-align: right;
-  font-weight: normal;
-}
-
-HR {
-  border: solid thin;
-}
-
-SPAN.info {
-  background: black;
-  border: thin solid black;
-  color: white;
-  font-size: 80%;
-  font-style: italic;
-  font-weight: bold;
-  white-space: nowrap;
-}
-
-H2 SPAN.info, H3 SPAN.info, H4 SPAN.info {
-  float: right;
-  font-size: 100%;
-}
-
-H1.title {
-}
-
-H2.title, H3.title {
-  border-bottom: solid 2pt #000000;
-}
-
-DIV.indent, TABLE.indent {
-  margin-top: 2em;
-  margin-left: auto;
-  margin-right: auto;
-  width: 90%;
-}
-
-TABLE.indent {
-  border-collapse: collapse;
-}
-
-TABLE.indent TD, TABLE.indent TH {
-  padding: 0;
-}
-
-TABLE.list {
-  border-collapse: collapse;
-  margin-left: auto;
-  margin-right: auto;
-  width: 90%;
-}
-
-TABLE.list TH {
-  background: white;
-  border-bottom: solid thin #cccccc;
-  color: #444444;
-  padding-top: 10pt;
-  padding-left: 5pt;
-  text-align: left;
-  vertical-align: bottom;
-  white-space: nowrap;
-}
-
-TABLE.list TH A {
-  color: #4444cc;
-}
-
-TABLE.list TD {
-  border-bottom: solid thin #eeeeee;
-  padding-top: 5pt;
-  padding-left: 5pt;
-}
-
-TABLE.list TR:nth-child(even) {
-  background: #f8f8f8;
-}
-
-TABLE.list TR:nth-child(odd) {
-  background: #f4f4f4;
-}
-
-DT {
-  margin-left: 36pt;
-  margin-top: 12pt;
-}
-
-DD {
-  margin-left: 54pt;
-}
-
-DL.category DT {
-  font-weight: bold;
-}
-
-P.summary {
-  margin-left: 36pt;
-  font-family: monaco, courier, monospace;
-}
-
-DIV.summary TABLE {
-  border: solid thin #999999;
-  border-collapse: collapse;
-  border-spacing: 0;
-  margin: 10px;
-}
-
-DIV.summary TABLE TD, DIV.summary TABLE TH {
-  border: solid thin #999999;
-  padding: 5px;
-  text-align: left;
-  vertical-align: top;
-}
-
-DIV.summary TABLE THEAD TH {
-  background: #eeeeee;
-}
-
-/* API documentation styles... */
-div.body h1 {
-  margin: 0;
-}
-div.body h2 {
-  margin-top: 1.5em;
-}
-div.body h3, div.body h4, div.body h5 {
-  margin-bottom: 0.5em;
-  margin-top: 1.5em;
-}
-.class, .enumeration, .function, .struct, .typedef, .union {
-  border-bottom: solid thin #999999;
-  margin-bottom: 0;
-  margin-top: 2em;
-}
-.description {
-  margin-top: 0.5em;
-}
-code, p.code, pre, ul.code li {
-  font-family: monaco, courier, monospace;
-  font-size: 90%;
-}
-ul.code, ul.contents, ul.subcontents {
-  list-style-type: none;
-  margin: 0;
-  padding-left: 0;
-}
-ul.code li {
-  margin: 0;
-}
-ul.contents > li {
-  margin-top: 1em;
-}
-ul.contents li ul.code, ul.contents li ul.subcontents {
-  padding-left: 2em;
-}
-div.body dl {
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dt {
-  font-style: italic;
-  margin-left: 0;
-  margin-top: 0;
-}
-div.body dd {
-  margin-bottom: 0.5em;
-}
-
-/* This is just for the HTML files generated with the framedhelp target */
-div.contents {
-  background: #e8e8e8;
-  border: solid thin black;
-  padding: 10px;
-}
-div.contents h1 {
-  font-size: 110%;
-}
-div.contents h2 {
-  font-size: 100%;
-}
-div.contents ul.contents {
-  font-size: 80%;
-}
-div.contents ul.subcontents li {
-  margin-left: 1em;
-  text-indent: -1em;
-}
---></style>
-</head>
-<body>
-<div class='body'>
-<!--
-  "$Id: api-array.header 8087 2008-10-27 21:37:05Z mike $"
-
-  PPD Compiler API header for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h1 class='title'>PPD Compiler API</h1>
-
-<div class='summary'><table summary='General Information'>
-<thead>
-<tr>
-       <th>Header</th>
-       <th>cups/ppdc.h</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-       <th>Library</th>
-       <td>-lcupsppdc</td>
-</tr>
-<tr>
-       <th>See Also</th>
-       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
-</tr>
-</tbody>
-</table></div>
-<h2 class="title">Contents</h2>
-<ul class="contents">
-<li><a href="#OVERVIEW">Overview</a></li>
-<li><a href="#CLASSES">Classes</a><ul class="code">
-       <li><a href="#ppdcArray" title="// Shared Array">ppdcArray</a></li>
-       <li><a href="#ppdcAttr" title="// Attribute">ppdcAttr</a></li>
-       <li><a href="#ppdcCatalog" title="// Translation catalog">ppdcCatalog</a></li>
-       <li><a href="#ppdcChoice" title="// Option Choice">ppdcChoice</a></li>
-       <li><a href="#ppdcConstraint" title="// Constraint">ppdcConstraint</a></li>
-       <li><a href="#ppdcDriver" title="// Printer Driver Data">ppdcDriver</a></li>
-       <li><a href="#ppdcFile" title="// File">ppdcFile</a></li>
-       <li><a href="#ppdcFilter" title="// Filter Program">ppdcFilter</a></li>
-       <li><a href="#ppdcFont" title="// Shared Font">ppdcFont</a></li>
-       <li><a href="#ppdcGroup" title="// Group of Options">ppdcGroup</a></li>
-       <li><a href="#ppdcInteger" title="// Shared integer">ppdcInteger</a></li>
-       <li><a href="#ppdcMediaSize" title="// Media Size">ppdcMediaSize</a></li>
-       <li><a href="#ppdcMessage" title="// Translation message">ppdcMessage</a></li>
-       <li><a href="#ppdcOption" title="// Option">ppdcOption</a></li>
-       <li><a href="#ppdcProfile" title="// Color Profile">ppdcProfile</a></li>
-       <li><a href="#ppdcShared" title="// Shared Data Value">ppdcShared</a></li>
-       <li><a href="#ppdcSource" title="// Source File">ppdcSource</a></li>
-       <li><a href="#ppdcString" title="// Shared String">ppdcString</a></li>
-       <li><a href="#ppdcVariable" title="// Variable Definition">ppdcVariable</a></li>
-</ul></li>
-<li><a href="#TYPES">Data Types</a><ul class="code">
-       <li><a href="#ppdc_cs_t" title="">ppdc_cs_t</a></li>
-</ul></li>
-<li><a href="#VARIABLES">Variables</a><ul class="code">
-       <li><a href="#ppdcSource" title="// Printer Driver Data">ppdcSource</a></li>
-</ul></li>
-<li><a href="#ENUMERATIONS">Constants</a><ul class="code">
-       <li><a href="#ppdcCondFlags" title="// Condition flags">ppdcCondFlags</a></li>
-       <li><a href="#ppdcDrvType" title="// Driver type">ppdcDrvType</a></li>
-       <li><a href="#ppdcFontStatus" title="// Load status of font">ppdcFontStatus</a></li>
-       <li><a href="#ppdcLineEnding" title="// Line endings">ppdcLineEnding</a></li>
-       <li><a href="#ppdcOptSection" title="// Option section">ppdcOptSection</a></li>
-       <li><a href="#ppdcOptType" title="// Option type">ppdcOptType</a></li>
-</ul></li>
-</ul>
-<!--
-  "$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
-
-  PPD Compiler API introduction for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
-
-<p>The PPD Compiler API provides access to CUPS driver information files and
-methods for generating and importing PPD files.</p>
-<h2 class="title"><a name="CLASSES">Classes</a></h2>
-<h3 class="class"><a name="ppdcArray">ppdcArray</a></h3>
-<p class="description">// Shared Array</p>
-<p class="code">class ppdcArray : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int count, alloc, current;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcShared">ppdcShared</a> **data;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>current </dt>
-<dd class="description">Current element</dd>
-<dt>data </dt>
-<dd class="description">Elements</dd>
-</dl>
-<h4 class="method"><a name="PPDC_NAME">PPDC_NAME</a></h4>
-<p class="description"></p>
-<p class="code">
-void PPDC_NAME (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void add(<a href="#ppdcShared">ppdcShared</a> *d<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>d</dt>
-</dl>
-<h4 class="method"><a name="add">add</a></h4>
-<p class="description"></p>
-<p class="code">
-void add (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcShared">ppdcShared</a> *d<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>d</dt>
-</dl>
-<h4 class="method"><a name="first">first</a></h4>
-<p class="description">Return the first element in the array.</p>
-<p class="code">
-<a href="#ppdcShared">ppdcShared</a> *first (void);</p>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description"></p>
-<h4 class="method"><a name="next">next</a></h4>
-<p class="description">Return the next element in the array.</p>
-<p class="code">
-<a href="#ppdcShared">ppdcShared</a> *next (void);</p>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description"></p>
-<h4 class="method"><a name="ppdcArray">ppdcArray</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcArray (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcArray">ppdcArray</a> *a<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>a</dt>
-</dl>
-<h4 class="method"><a name="remove">remove</a></h4>
-<p class="description"></p>
-<p class="code">
-void remove (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcShared">ppdcShared</a> *d<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>d</dt>
-<dd class="description">Data element</dd>
-</dl>
-<h4 class="method"><a name="~ppdcArray">~ppdcArray</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcArray (void);</p>
-<h3 class="class"><a name="ppdcAttr">ppdcAttr</a></h3>
-<p class="description">// Attribute</p>
-<p class="code">class ppdcAttr : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;bool localizable;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *name, *selector, *text, *value;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>localizable </dt>
-<dd class="description">Should this attribute be localized?</dd>
-<dt>value </dt>
-<dd class="description">Value string</dd>
-</dl>
-<h4 class="method"><a name="ppdcAttr">ppdcAttr</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcAttr (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *s,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *t,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *v,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;bool loc<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Name</dd>
-<dt>s</dt>
-<dd class="description">Spec string</dd>
-<dt>t</dt>
-<dd class="description">Human-readable text</dd>
-<dt>v</dt>
-<dd class="description">Value</dd>
-<dt>loc</dt>
-<dd class="description">Localize this attribute?</dd>
-</dl>
-<h4 class="method"><a name="~ppdcAttr">~ppdcAttr</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcAttr (void);</p>
-<h3 class="class"><a name="ppdcCatalog">ppdcCatalog</a></h3>
-<p class="description">// Translation catalog</p>
-<p class="code">class ppdcCatalog : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *filename;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *locale;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcArray">ppdcArray</a> *messages;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>filename </dt>
-<dd class="description">Name of translation file</dd>
-<dt>locale </dt>
-<dd class="description">Name of locale</dd>
-<dt>messages </dt>
-<dd class="description">Array of translation messages</dd>
-</dl>
-<h4 class="method"><a name="PPDC_NAME">PPDC_NAME</a></h4>
-<p class="description"></p>
-<p class="code">
-void PPDC_NAME (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void add_message(const char *id,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *string = NULL<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>id</dt>
-<dt>string</dt>
-</dl>
-<h4 class="method"><a name="add_message">add_message</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_message (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *id,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *string<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>id</dt>
-<dd class="description">Message ID to add</dd>
-<dt>string</dt>
-<dd class="description">Translation string</dd>
-</dl>
-<h4 class="method"><a name="find_message">find_message</a></h4>
-<p class="description"></p>
-<p class="code">
-const char *find_message (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *id<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>id</dt>
-<dd class="description">Message ID</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Message text</p>
-<h4 class="method"><a name="load_messages">load_messages</a></h4>
-<p class="description"></p>
-<p class="code">
-int load_messages (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">Message catalog file</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">0 on success, -1 on failure</p>
-<h4 class="method"><a name="ppdcCatalog">ppdcCatalog</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcCatalog (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *l,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>l</dt>
-<dd class="description">Locale</dd>
-<dt>f</dt>
-<dd class="description">Message catalog file</dd>
-</dl>
-<h4 class="method"><a name="save_messages">save_messages</a></h4>
-<p class="description"></p>
-<p class="code">
-int save_messages (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">File to save to</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">0 on success, -1 on error</p>
-<h4 class="method"><a name="~ppdcCatalog">~ppdcCatalog</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcCatalog (void);</p>
-<h3 class="class"><a name="ppdcChoice">ppdcChoice</a></h3>
-<p class="description">// Option Choice</p>
-<p class="code">class ppdcChoice : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *name, *text, *code;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>code </dt>
-<dd class="description">PS code of choice</dd>
-</dl>
-<h4 class="method"><a name="ppdcChoice">ppdcChoice</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcChoice (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *t,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *c<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Name of choice</dd>
-<dt>t</dt>
-<dd class="description">Text of choice</dd>
-<dt>c</dt>
-<dd class="description">Code of choice</dd>
-</dl>
-<h4 class="method"><a name="~ppdcChoice">~ppdcChoice</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcChoice (void);</p>
-<h3 class="class"><a name="ppdcConstraint">ppdcConstraint</a></h3>
-<p class="description">// Constraint</p>
-<p class="code">class ppdcConstraint : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *option1, *choice1, *option2, *choice2;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>choice2 </dt>
-<dd class="description">Second choice</dd>
-</dl>
-<h4 class="method"><a name="ppdcConstraint">ppdcConstraint</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcConstraint (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *o1,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *c1,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *o2,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *c2<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>o1</dt>
-<dd class="description">First option</dd>
-<dt>c1</dt>
-<dd class="description">First choice</dd>
-<dt>o2</dt>
-<dd class="description">Second option</dd>
-<dt>c2</dt>
-<dd class="description">Second choice</dd>
-</dl>
-<h4 class="method"><a name="~ppdcConstraint">~ppdcConstraint</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcConstraint (void);</p>
-<h3 class="class"><a name="ppdcDriver">ppdcDriver</a></h3>
-<p class="description">// Printer Driver Data</p>
-<p class="code">class ppdcDriver : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcArray">ppdcArray</a> *copyright;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *custom_size_code;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *default_font, *default_size;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float left_margin, bottom_margin, right_margin, top_margin, max_width, max_length, min_width, min_length;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcArray">ppdcArray</a> *attrs, *constraints, *filters, *fonts, *groups, *profiles, *sizes;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int model_number, manual_copies, color_device, throughput;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcDrvType">ppdcDrvType</a> type;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int variable_paper_size;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *manufacturer, *model_name, *file_name, *pc_file_name, *version;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>copyright </dt>
-<dd class="description">Copyright strings</dd>
-<dt>custom_size_code </dt>
-<dd class="description">Custom page size code, if any</dd>
-<dt>default_size </dt>
-<dd class="description">Default size option</dd>
-<dt>min_length </dt>
-<dd class="description">Minimum length (points)</dd>
-<dt>sizes </dt>
-<dd class="description">Fixed sizes</dd>
-<dt>throughput </dt>
-<dd class="description">Throughput in pages per minute</dd>
-<dt>type </dt>
-<dd class="description">Driver type</dd>
-<dt>variable_paper_size </dt>
-<dd class="description">Support variable sizes?</dd>
-<dt>version </dt>
-<dd class="description">Version number</dd>
-</dl>
-<h4 class="method"><a name="PPDC_NAME">PPDC_NAME</a></h4>
-<p class="description"></p>
-<p class="code">
-void PPDC_NAME (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void add_attr(<a href="#ppdcAttr">ppdcAttr</a> *a<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>a</dt>
-</dl>
-<h4 class="method"><a name="add_constraint">add_constraint</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_constraint (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcConstraint">ppdcConstraint</a> *c<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>c</dt>
-</dl>
-<h4 class="method"><a name="add_copyright">add_copyright</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_copyright (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *c<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>c</dt>
-</dl>
-<h4 class="method"><a name="add_filter">add_filter</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_filter (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFilter">ppdcFilter</a> *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-</dl>
-<h4 class="method"><a name="add_font">add_font</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_font (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFont">ppdcFont</a> *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-</dl>
-<h4 class="method"><a name="add_group">add_group</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_group (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcGroup">ppdcGroup</a> *g<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>g</dt>
-</dl>
-<h4 class="method"><a name="add_profile">add_profile</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_profile (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcProfile">ppdcProfile</a> *p<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>p</dt>
-</dl>
-<h4 class="method"><a name="add_size">add_size</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_size (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcMediaSize">ppdcMediaSize</a> *m<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>m</dt>
-</dl>
-<h4 class="method"><a name="find_attr">find_attr</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcAttr">ppdcAttr</a> *find_attr (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *k,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *s<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>k</dt>
-<dd class="description">Keyword string</dd>
-<dt>s</dt>
-<dd class="description">Spec string</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Attribute or NULL</p>
-<h4 class="method"><a name="find_group">find_group</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcGroup">ppdcGroup</a> *find_group (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Group name</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Matching group or NULL</p>
-<h4 class="method"><a name="find_option">find_option</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcOption">ppdcOption</a> *find_option (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Option name</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Matching option or NULL</p>
-<h4 class="method"><a name="find_option_group">find_option_group</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcOption">ppdcOption</a> *find_option_group (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcGroup">ppdcGroup</a> **mg<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Option name</dd>
-<dt>mg</dt>
-<dd class="description">Matching group or NULL</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Matching option or NULL</p>
-<h4 class="method"><a name="ppdcDriver">ppdcDriver</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcDriver (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcDriver">ppdcDriver</a> *d<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>d</dt>
-<dd class="description">Printer driver template</dd>
-</dl>
-<h4 class="method"><a name="set_custom_size_code">set_custom_size_code</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_custom_size_code (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *c<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>c</dt>
-<dd class="description">CustomPageSize code</dd>
-</dl>
-<h4 class="method"><a name="set_default_font">set_default_font</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_default_font (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFont">ppdcFont</a> *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">Font</dd>
-</dl>
-<h4 class="method"><a name="set_default_size">set_default_size</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_default_size (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcMediaSize">ppdcMediaSize</a> *m<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>m</dt>
-<dd class="description">Media size</dd>
-</dl>
-<h4 class="method"><a name="set_file_name">set_file_name</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_file_name (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">Filename</dd>
-</dl>
-<h4 class="method"><a name="set_manufacturer">set_manufacturer</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_manufacturer (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *m<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>m</dt>
-<dd class="description">Model name</dd>
-</dl>
-<h4 class="method"><a name="set_model_name">set_model_name</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_model_name (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *m<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>m</dt>
-<dd class="description">Model name</dd>
-</dl>
-<h4 class="method"><a name="set_pc_file_name">set_pc_file_name</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_pc_file_name (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">Filename</dd>
-</dl>
-<h4 class="method"><a name="set_version">set_version</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_version (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *v<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>v</dt>
-<dd class="description">Version</dd>
-</dl>
-<h4 class="method"><a name="write_ppd_file">write_ppd_file</a></h4>
-<p class="description"></p>
-<p class="code">
-int write_ppd_file (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_file_t *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcCatalog">ppdcCatalog</a> *catalog,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcArray">ppdcArray</a> *locales,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcSource">ppdcSource</a> *src,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcLineEnding">ppdcLineEnding</a> le<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">PPD file</dd>
-<dt>catalog</dt>
-<dd class="description">Message catalog</dd>
-<dt>locales</dt>
-<dd class="description">Additional languages to add</dd>
-<dt>src</dt>
-<dd class="description">Driver source</dd>
-<dt>le</dt>
-<dd class="description">Line endings to use</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">0 on success, -1 on failure</p>
-<h4 class="method"><a name="~ppdcDriver">~ppdcDriver</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcDriver (void);</p>
-<h3 class="class"><a name="ppdcFile">ppdcFile</a></h3>
-<p class="description">// File</p>
-<p class="code">class ppdcFile {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;bool close_on_delete;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *filename;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_file_t *fp;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int line;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>close_on_delete </dt>
-<dd class="description">Close file on delete?</dd>
-<dt>filename </dt>
-<dd class="description">Filename</dd>
-<dt>fp </dt>
-<dd class="description">File pointer</dd>
-<dt>line </dt>
-<dd class="description">Line in file</dd>
-</dl>
-<h4 class="method"><a name="get">get</a></h4>
-<p class="description">Get a character from a file.</p>
-<p class="code">
-int get (void);</p>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description"></p>
-<h4 class="method"><a name="peek">peek</a></h4>
-<p class="description"></p>
-<p class="code">
-int peek (void);</p>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Next character in file</p>
-<h4 class="method"><a name="ppdcFile">ppdcFile</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcFile (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_file_t *ffp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">File to open</dd>
-<dt>ffp</dt>
-<dd class="description">File pointer to use</dd>
-</dl>
-<h4 class="method"><a name="~ppdcFile">~ppdcFile</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcFile (void);</p>
-<h3 class="class"><a name="ppdcFilter">ppdcFilter</a></h3>
-<p class="description">// Filter Program</p>
-<p class="code">class ppdcFilter : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int cost;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *mime_type, *program;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>cost </dt>
-<dd class="description">Relative cost of filter</dd>
-<dt>program </dt>
-<dd class="description">Filter program</dd>
-</dl>
-<h4 class="method"><a name="ppdcFilter">ppdcFilter</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcFilter (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *t,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *p,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int c<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>t</dt>
-<dd class="description">MIME type</dd>
-<dt>p</dt>
-<dd class="description">Filter program</dd>
-<dt>c</dt>
-<dd class="description">Relative cost</dd>
-</dl>
-<h4 class="method"><a name="~ppdcFilter">~ppdcFilter</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcFilter (void);</p>
-<h3 class="class"><a name="ppdcFont">ppdcFont</a></h3>
-<p class="description">// Shared Font</p>
-<p class="code">class ppdcFont : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *name, *encoding, *version, *charset;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFontStatus">ppdcFontStatus</a> status;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>charset </dt>
-<dd class="description">Font charset</dd>
-<dt>status </dt>
-<dd class="description">Font status (ROM or Disk)</dd>
-</dl>
-<h4 class="method"><a name="ppdcFont">ppdcFont</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcFont (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *e,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *v,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *c,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFontStatus">ppdcFontStatus</a> s<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Name of font</dd>
-<dt>e</dt>
-<dd class="description">Font encoding</dd>
-<dt>v</dt>
-<dd class="description">Font version</dd>
-<dt>c</dt>
-<dd class="description">Font charset</dd>
-<dt>s</dt>
-<dd class="description">Font status</dd>
-</dl>
-<h4 class="method"><a name="~ppdcFont">~ppdcFont</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcFont (void);</p>
-<h3 class="class"><a name="ppdcGroup">ppdcGroup</a></h3>
-<p class="description">// Group of Options</p>
-<p class="code">class ppdcGroup : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcArray">ppdcArray</a> *options;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *name, *text;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>options </dt>
-<dd class="description">Options</dd>
-<dt>text </dt>
-<dd class="description">Human-readable text of option</dd>
-</dl>
-<h4 class="method"><a name="PPDC_NAME">PPDC_NAME</a></h4>
-<p class="description"></p>
-<p class="code">
-void PPDC_NAME (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void add_option(<a href="#ppdcOption">ppdcOption</a> *o<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>o</dt>
-</dl>
-<h4 class="method"><a name="find_option">find_option</a></h4>
-<p class="description">Find an option in a group.</p>
-<p class="code">
-<a href="#ppdcOption">ppdcOption</a> *find_option (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Name of option</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description"></p>
-<h4 class="method"><a name="ppdcGroup">ppdcGroup</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcGroup (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcGroup">ppdcGroup</a> *g<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>g</dt>
-<dd class="description">Group template</dd>
-</dl>
-<h4 class="method"><a name="~ppdcGroup">~ppdcGroup</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcGroup (void);</p>
-<h3 class="class"><a name="ppdcInteger">ppdcInteger</a></h3>
-<p class="description">// Shared integer</p>
-<p class="code">class ppdcInteger : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int *value;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>value </dt>
-<dd class="description">Integer value</dd>
-</dl>
-<h4 class="method"><a name="ppdcInteger">ppdcInteger</a></h4>
-<p class="description">Integer value</p>
-<p class="code">
-void ppdcInteger (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int *v<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>v</dt>
-</dl>
-<h3 class="class"><a name="ppdcMediaSize">ppdcMediaSize</a></h3>
-<p class="description">// Media Size</p>
-<p class="code">class ppdcMediaSize : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *size_code, *region_code;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *name, *text;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float width, length, left, bottom, right, top;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>region_code </dt>
-<dd class="description">PageRegion code, if any</dd>
-<dt>text </dt>
-<dd class="description">Human-readable text</dd>
-<dt>top </dt>
-<dd class="description">Top limit in points</dd>
-</dl>
-<h4 class="method"><a name="ppdcMediaSize">ppdcMediaSize</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcMediaSize (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *t,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float w,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float l,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float lm,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float bm,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float rm,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float tm,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *sc,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *rc<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Name of media size</dd>
-<dt>t</dt>
-<dd class="description">Text of media size</dd>
-<dt>w</dt>
-<dd class="description">Width in points</dd>
-<dt>l</dt>
-<dd class="description">Length in points</dd>
-<dt>lm</dt>
-<dd class="description">Left margin in points</dd>
-<dt>bm</dt>
-<dd class="description">Bottom margin in points</dd>
-<dt>rm</dt>
-<dd class="description">Right margin in points</dd>
-<dt>tm</dt>
-<dd class="description">Top margin in points</dd>
-<dt>sc</dt>
-<dd class="description">PageSize code, if any</dd>
-<dt>rc</dt>
-<dd class="description">PageRegion code, if any</dd>
-</dl>
-<h4 class="method"><a name="~ppdcMediaSize">~ppdcMediaSize</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcMediaSize (void);</p>
-<h3 class="class"><a name="ppdcMessage">ppdcMessage</a></h3>
-<p class="description">// Translation message</p>
-<p class="code">class ppdcMessage : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *id, *string;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>string </dt>
-<dd class="description">Translation string</dd>
-</dl>
-<h4 class="method"><a name="ppdcMessage">ppdcMessage</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcMessage (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *i,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *s<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>i</dt>
-<dd class="description">ID</dd>
-<dt>s</dt>
-<dd class="description">Text</dd>
-</dl>
-<h4 class="method"><a name="~ppdcMessage">~ppdcMessage</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcMessage (void);</p>
-<h3 class="class"><a name="ppdcOption">ppdcOption</a></h3>
-<p class="description">// Option</p>
-<p class="code">class ppdcOption : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcArray">ppdcArray</a> *choices;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *defchoice;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float order;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcOptSection">ppdcOptSection</a> section;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *name, *text;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcOptType">ppdcOptType</a> type;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>choices </dt>
-<dd class="description">Choices</dd>
-<dt>defchoice </dt>
-<dd class="description">Default choice</dd>
-<dt>order </dt>
-<dd class="description">Order number</dd>
-<dt>section </dt>
-<dd class="description">Section for option code</dd>
-<dt>text </dt>
-<dd class="description">Human-readable text of option</dd>
-<dt>type </dt>
-<dd class="description">Type of option</dd>
-</dl>
-<h4 class="method"><a name="PPDC_NAME">PPDC_NAME</a></h4>
-<p class="description"></p>
-<p class="code">
-void PPDC_NAME (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void add_choice(<a href="#ppdcChoice">ppdcChoice</a> *c<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>c</dt>
-</dl>
-<h4 class="method"><a name="find_choice">find_choice</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcChoice">ppdcChoice</a> *find_choice (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Name of choice</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Choice or NULL</p>
-<h4 class="method"><a name="ppdcOption">ppdcOption</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcOption (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcOption">ppdcOption</a> *o<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>o</dt>
-<dd class="description">Template option</dd>
-</dl>
-<h4 class="method"><a name="set_defchoice">set_defchoice</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_defchoice (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcChoice">ppdcChoice</a> *c<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>c</dt>
-<dd class="description">Choice</dd>
-</dl>
-<h4 class="method"><a name="~ppdcOption">~ppdcOption</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcOption (void);</p>
-<h3 class="class"><a name="ppdcProfile">ppdcProfile</a></h3>
-<p class="description">// Color Profile</p>
-<p class="code">class ppdcProfile : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *resolution, *media_type;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float density, gamma, profile[9];<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>media_type </dt>
-<dd class="description">Media type name</dd>
-<dt>profile[9] </dt>
-<dd class="description">Color profile matrix</dd>
-</dl>
-<h4 class="method"><a name="ppdcProfile">ppdcProfile</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcProfile (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *r,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *m,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float d,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;float g,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const float *p<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>r</dt>
-<dd class="description">Resolution name</dd>
-<dt>m</dt>
-<dd class="description">Media type name</dd>
-<dt>d</dt>
-<dd class="description">Density</dd>
-<dt>g</dt>
-<dd class="description">Gamma</dd>
-<dt>p</dt>
-<dd class="description">3x3 transform matrix</dd>
-</dl>
-<h4 class="method"><a name="~ppdcProfile">~ppdcProfile</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcProfile (void);</p>
-<h3 class="class"><a name="ppdcShared">ppdcShared</a></h3>
-<p class="description">// Shared Data Value</p>
-<p class="code">class ppdcShared {<br>
-&nbsp;&nbsp;private:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int use;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>use </dt>
-<dd class="description">Use count (delete when 0)</dd>
-</dl>
-<h4 class="method"><a name="class_name">class_name</a></h4>
-<p class="description"></p>
-<p class="code">
-virtual const char *class_name (void);</p>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description"></p>
-<h4 class="method"><a name="ppdcShared">ppdcShared</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcShared (void);</p>
-<h4 class="method"><a name="release">release</a></h4>
-<p class="description"></p>
-<p class="code">
-void release (void);</p>
-<h4 class="method"><a name="retain">retain</a></h4>
-<p class="description"></p>
-<p class="code">
-void retain (void);</p>
-<h4 class="method"><a name="~ppdcShared">~ppdcShared</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcShared (void);</p>
-<h3 class="class"><a name="ppdcSource">ppdcSource</a></h3>
-<p class="description">// Source File</p>
-<p class="code">class ppdcSource : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int cond_state, *cond_current, cond_stack[101];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;static const char *driver_types[];<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *filename;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;static <a href="#ppdcArray">ppdcArray</a> *includes;<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcArray">ppdcArray</a> *base_fonts, *drivers, *po_files, *sizes, *vars;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>cond_stack[101] </dt>
-<dd class="description">#if state stack</dd>
-<dt>driver_types[] </dt>
-<dd class="description">Driver types</dd>
-<dt>filename </dt>
-<dd class="description">Filename</dd>
-<dt>includes </dt>
-<dd class="description">Include directories</dd>
-<dt>vars </dt>
-<dd class="description">Defined variables</dd>
-</dl>
-<h4 class="method"><a name="PPDC_NAME">PPDC_NAME</a></h4>
-<p class="description"></p>
-<p class="code">
-void PPDC_NAME (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;static void add_include(const char *d<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>d</dt>
-</dl>
-<h4 class="method"><a name="add_include">add_include</a></h4>
-<p class="description"></p>
-<p class="code">
-void add_include (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *d<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>d</dt>
-<dd class="description">Include directory</dd>
-</dl>
-<h4 class="method"><a name="find_driver">find_driver</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcDriver">ppdcDriver</a> *find_driver (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">Driver file name</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Driver</p>
-<h4 class="method"><a name="find_include">find_include</a></h4>
-<p class="description"></p>
-<p class="code">
-char *find_include (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *base,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *n,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int nlen<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">Include filename</dd>
-<dt>base</dt>
-<dd class="description">Current directory</dd>
-<dt>n</dt>
-<dd class="description">Path buffer</dd>
-<dt>nlen</dt>
-<dd class="description">Path buffer length</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Found path or NULL</p>
-<h4 class="method"><a name="find_po">find_po</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcCatalog">ppdcCatalog</a> *find_po (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *l<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>l</dt>
-<dd class="description">Locale name</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Message catalog or NULL</p>
-<h4 class="method"><a name="find_size">find_size</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcMediaSize">ppdcMediaSize</a> *find_size (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *s<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>s</dt>
-<dd class="description">Size name</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Size</p>
-<h4 class="method"><a name="find_variable">find_variable</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcVariable">ppdcVariable</a> *find_variable (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Variable name</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Variable</p>
-<h4 class="method"><a name="get_attr">get_attr</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcAttr">ppdcAttr</a> *get_attr (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;bool loc<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-<dt>loc</dt>
-<dd class="description">Localize this attribute?</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Attribute</p>
-<h4 class="method"><a name="get_boolean">get_boolean</a></h4>
-<p class="description"></p>
-<p class="code">
-int get_boolean (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Boolean value</p>
-<h4 class="method"><a name="get_choice">get_choice</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcChoice">ppdcChoice</a> *get_choice (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Choice data</p>
-<h4 class="method"><a name="get_color_model">get_color_model</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcChoice">ppdcChoice</a> *get_color_model (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Choice data</p>
-<h4 class="method"><a name="get_color_order">get_color_order</a></h4>
-<p class="description"></p>
-<p class="code">
-int get_color_order (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *co<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>co</dt>
-<dd class="description">Color order string</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Color order value</p>
-<h4 class="method"><a name="get_color_profile">get_color_profile</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcProfile">ppdcProfile</a> *get_color_profile (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Color profile</p>
-<h4 class="method"><a name="get_color_space">get_color_space</a></h4>
-<p class="description"></p>
-<p class="code">
-int get_color_space (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *cs<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>cs</dt>
-<dd class="description">Colorspace string</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Colorspace value</p>
-<h4 class="method"><a name="get_constraint">get_constraint</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcConstraint">ppdcConstraint</a> *get_constraint (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Constraint</p>
-<h4 class="method"><a name="get_custom_size">get_custom_size</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcMediaSize">ppdcMediaSize</a> *get_custom_size (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Media size</p>
-<h4 class="method"><a name="get_duplex">get_duplex</a></h4>
-<p class="description"></p>
-<p class="code">
-void get_duplex (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcDriver">ppdcDriver</a> *d<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read from</dd>
-<dt>d</dt>
-<dd class="description">Current driver</dd>
-</dl>
-<h4 class="method"><a name="get_filter">get_filter</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcFilter">ppdcFilter</a> *get_filter (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Filter</p>
-<h4 class="method"><a name="get_float">get_float</a></h4>
-<p class="description"></p>
-<p class="code">
-float get_float (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Number</p>
-<h4 class="method"><a name="get_font">get_font</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcFont">ppdcFont</a> *get_font (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Font data</p>
-<h4 class="method"><a name="get_generic">get_generic</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcChoice">ppdcChoice</a> *get_generic (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *keyword,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *tattr,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *nattr<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-<dt>keyword</dt>
-<dd class="description">Keyword name</dd>
-<dt>tattr</dt>
-<dd class="description">Text attribute</dd>
-<dt>nattr</dt>
-<dd class="description">Numeric attribute</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Choice data</p>
-<h4 class="method"><a name="get_group">get_group</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcGroup">ppdcGroup</a> *get_group (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcDriver">ppdcDriver</a> *d<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-<dt>d</dt>
-<dd class="description">Printer driver</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Group</p>
-<h4 class="method"><a name="get_installable">get_installable</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcOption">ppdcOption</a> *get_installable (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Option</p>
-<h4 class="method"><a name="get_integer">get_integer</a></h4>
-<p class="description"></p>
-<p class="code">
-int get_integer (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Integer value</p>
-<h4 class="method"><a name="get_measurement">get_measurement</a></h4>
-<p class="description"></p>
-<p class="code">
-float get_measurement (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Measurement value in points</p>
-<h4 class="method"><a name="get_option">get_option</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcOption">ppdcOption</a> *get_option (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcDriver">ppdcDriver</a> *d,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcGroup">ppdcGroup</a> *g<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-<dt>d</dt>
-<dd class="description">Printer driver</dd>
-<dt>g</dt>
-<dd class="description">Current group</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Option</p>
-<h4 class="method"><a name="get_po">get_po</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcCatalog">ppdcCatalog</a> *get_po (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Message catalog</p>
-<h4 class="method"><a name="get_resolution">get_resolution</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcChoice">ppdcChoice</a> *get_resolution (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Choice data</p>
-<h4 class="method"><a name="get_simple_profile">get_simple_profile</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcProfile">ppdcProfile</a> *get_simple_profile (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Color profile</p>
-<h4 class="method"><a name="get_size">get_size</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcMediaSize">ppdcMediaSize</a> *get_size (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Media size</p>
-<h4 class="method"><a name="get_token">get_token</a></h4>
-<p class="description"></p>
-<p class="code">
-char *get_token (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *buffer,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;int buflen<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-<dt>buffer</dt>
-<dd class="description">Buffer</dd>
-<dt>buflen</dt>
-<dd class="description">Length of buffer</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Token string or NULL</p>
-<h4 class="method"><a name="get_variable">get_variable</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcVariable">ppdcVariable</a> *get_variable (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Variable</p>
-<h4 class="method"><a name="import_ppd">import_ppd</a></h4>
-<p class="description"></p>
-<p class="code">
-int import_ppd (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">Filename</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">1 on success, 0 on failure</p>
-<h4 class="method"><a name="ppdcSource">ppdcSource</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcSource (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_file_t *ffp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">File to read</dd>
-<dt>ffp</dt>
-<dd class="description">File pointer to use</dd>
-</dl>
-<h4 class="method"><a name="quotef">quotef</a></h4>
-<p class="description"></p>
-<p class="code">
-int quotef (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_file_t *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *format,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;...<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to write to</dd>
-<dt>format</dt>
-<dd class="description">Printf-style format string</dd>
-<dt>...</dt>
-<dd class="description">Additional args as needed</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Number bytes on success, -1 on failure</p>
-<h4 class="method"><a name="read_file">read_file</a></h4>
-<p class="description"></p>
-<p class="code">
-void read_file (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;cups_file_t *ffp<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">File to read</dd>
-<dt>ffp</dt>
-<dd class="description">File pointer to use</dd>
-</dl>
-<h4 class="method"><a name="scan_file">scan_file</a></h4>
-<p class="description"></p>
-<p class="code">
-void scan_file (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcFile">ppdcFile</a> *fp,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcDriver">ppdcDriver</a> *td,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;bool inc<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>fp</dt>
-<dd class="description">File to read</dd>
-<dt>td</dt>
-<dd class="description">Driver template</dd>
-<dt>inc</dt>
-<dd class="description">Including?</dd>
-</dl>
-<h4 class="method"><a name="set_variable">set_variable</a></h4>
-<p class="description"></p>
-<p class="code">
-<a href="#ppdcVariable">ppdcVariable</a> *set_variable (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *name,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *value<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>name</dt>
-<dd class="description">Name</dd>
-<dt>value</dt>
-<dd class="description">Value</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">Variable</p>
-<h4 class="method"><a name="write_file">write_file</a></h4>
-<p class="description"></p>
-<p class="code">
-int write_file (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *f<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>f</dt>
-<dd class="description">File to write</dd>
-</dl>
-<h5 class="returnvalue">Return Value</h5>
-<p class="description">0 on success, -1 on error</p>
-<h4 class="method"><a name="~ppdcSource">~ppdcSource</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcSource (void);</p>
-<h3 class="class"><a name="ppdcString">ppdcString</a></h3>
-<p class="description">// Shared String</p>
-<p class="code">class ppdcString : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;char *value;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>value </dt>
-<dd class="description">String value</dd>
-</dl>
-<h4 class="method"><a name="ppdcString">ppdcString</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcString (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *v<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>v</dt>
-<dd class="description">String</dd>
-</dl>
-<h4 class="method"><a name="~ppdcString">~ppdcString</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcString (void);</p>
-<h3 class="class"><a name="ppdcVariable">ppdcVariable</a></h3>
-<p class="description">// Variable Definition</p>
-<p class="code">class ppdcVariable : public ppdcShared {<br>
-&nbsp;&nbsp;public:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<a href="#ppdcString">ppdcString</a> *name, *value;<br>
-};</p>
-<h4 class="members">Members</h4>
-<dl>
-<dt>value </dt>
-<dd class="description">Value of variable</dd>
-</dl>
-<h4 class="method"><a name="PPDC_NAME">PPDC_NAME</a></h4>
-<p class="description"></p>
-<p class="code">
-void PPDC_NAME (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;void set_value(const char *v<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>v</dt>
-</dl>
-<h4 class="method"><a name="ppdcVariable">ppdcVariable</a></h4>
-<p class="description"></p>
-<p class="code">
-void ppdcVariable (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *n,<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *v<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>n</dt>
-<dd class="description">Name of variable</dd>
-<dt>v</dt>
-<dd class="description">Value of variable</dd>
-</dl>
-<h4 class="method"><a name="set_value">set_value</a></h4>
-<p class="description"></p>
-<p class="code">
-void set_value (<br>
-&nbsp;&nbsp;&nbsp;&nbsp;const char *v<br>
-);</p>
-<h5 class="parameters">Parameters</h5>
-<dl>
-<dt>v</dt>
-</dl>
-<h4 class="method"><a name="~ppdcVariable">~ppdcVariable</a></h4>
-<p class="description"></p>
-<p class="code">
-void ~ppdcVariable (void);</p>
-<h2 class="title"><a name="TYPES">Data Types</a></h2>
-<h3 class="typedef"><a name="ppdc_cs_t">ppdc_cs_t</a></h3>
-<p class="description"></p>
-<p class="code">
-typedef enum ppdc_cs_t;
-</p>
-<h2 class="title"><a name="VARIABLES">Variables</a></h2>
-<h3 class="variable"><a name="ppdcSource">ppdcSource</a></h3>
-<p class="description">// Printer Driver Data</p>
-<p class="code">class ppdcSource;</p>
-<h2 class="title"><a name="ENUMERATIONS">Constants</a></h2>
-<h3 class="enumeration"><a name="ppdcCondFlags">ppdcCondFlags</a></h3>
-<p class="description">// Condition flags</p>
-<h4 class="constants">Constants</h4>
-<dl>
-<dt>PPDC_COND_NORMAL </dt>
-<dd class="description">Normal state</dd>
-<dt>PPDC_COND_SATISFIED </dt>
-<dd class="description">At least one condition satisfied</dd>
-<dt>PPDC_COND_SKIP </dt>
-<dd class="description">Skip state</dd>
-</dl>
-<h3 class="enumeration"><a name="ppdcDrvType">ppdcDrvType</a></h3>
-<p class="description">// Driver type</p>
-<h4 class="constants">Constants</h4>
-<dl>
-<dt>PPDC_DRIVER_CUSTOM </dt>
-<dd class="description">Custom driver</dd>
-<dt>PPDC_DRIVER_EPSON </dt>
-<dd class="description">rastertoepson driver</dd>
-<dt>PPDC_DRIVER_ESCP </dt>
-<dd class="description">rastertoescpx driver</dd>
-<dt>PPDC_DRIVER_HP </dt>
-<dd class="description">rastertohp driver</dd>
-<dt>PPDC_DRIVER_LABEL </dt>
-<dd class="description">rastertolabel/rastertodymo driver</dd>
-<dt>PPDC_DRIVER_MAX </dt>
-<dd class="description">Number of driver types defined</dd>
-<dt>PPDC_DRIVER_PCL </dt>
-<dd class="description">rastertopclx driver</dd>
-<dt>PPDC_DRIVER_PS </dt>
-<dd class="description">PostScript driver</dd>
-</dl>
-<h3 class="enumeration"><a name="ppdcFontStatus">ppdcFontStatus</a></h3>
-<p class="description">// Load status of font</p>
-<h4 class="constants">Constants</h4>
-<dl>
-<dt>PPDC_FONT_DISK </dt>
-<dd class="description">Font is on disk</dd>
-<dt>PPDC_FONT_ROM </dt>
-<dd class="description">Font is in ROM</dd>
-</dl>
-<h3 class="enumeration"><a name="ppdcLineEnding">ppdcLineEnding</a></h3>
-<p class="description">// Line endings</p>
-<h4 class="constants">Constants</h4>
-<dl>
-<dt>PPDC_CRLF </dt>
-<dd class="description">CR + LF</dd>
-<dt>PPDC_CRONLY </dt>
-<dd class="description">CR only</dd>
-<dt>PPDC_LFONLY </dt>
-<dd class="description">LF only</dd>
-</dl>
-<h3 class="enumeration"><a name="ppdcOptSection">ppdcOptSection</a></h3>
-<p class="description">// Option section</p>
-<h4 class="constants">Constants</h4>
-<dl>
-<dt>PPDC_SECTION_ANY </dt>
-<dd class="description">AnySetup</dd>
-<dt>PPDC_SECTION_DOCUMENT </dt>
-<dd class="description">DocumentSetup</dd>
-<dt>PPDC_SECTION_EXIT </dt>
-<dd class="description">ExitServer</dd>
-<dt>PPDC_SECTION_JCL </dt>
-<dd class="description">JCLSetup</dd>
-<dt>PPDC_SECTION_PAGE </dt>
-<dd class="description">PageSetup</dd>
-<dt>PPDC_SECTION_PROLOG </dt>
-<dd class="description">Prolog</dd>
-</dl>
-<h3 class="enumeration"><a name="ppdcOptType">ppdcOptType</a></h3>
-<p class="description">// Option type</p>
-<h4 class="constants">Constants</h4>
-<dl>
-<dt>PPDC_BOOLEAN </dt>
-<dd class="description">True/false option</dd>
-<dt>PPDC_PICKMANY </dt>
-<dd class="description">Multiple choices from list</dd>
-<dt>PPDC_PICKONE </dt>
-<dd class="description">Single choice from list</dd>
-</dl>
-</div>
-</body>
-</html>
index 9acda47..151285e 100644 (file)
@@ -5,7 +5,7 @@
        <title>Raster API       </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id$"
-
   Raster API documentation for CUPS.
 
   Copyright 2008-2010 by Apple Inc.
@@ -399,6 +397,7 @@ div.contents ul.subcontents li {
 </ul></li>
 <li><a href="#FUNCTIONS">Functions</a><ul class="code">
        <li><a href="#cupsRasterClose" title="Close a raster stream.">cupsRasterClose</a></li>
+       <li><a href="#cupsRasterInitPWGHeader" title="Initialize a page header for PWG Raster output.">cupsRasterInitPWGHeader</a></li>
        <li><a href="#cupsRasterInterpretPPD" title="Interpret PPD commands to create a page header.">cupsRasterInterpretPPD</a></li>
        <li><a href="#cupsRasterOpen" title="Open a raster stream using a file descriptor.">cupsRasterOpen</a></li>
        <li><a href="#cupsRasterOpenIO" title="Open a raster stream using a callback function.">cupsRasterOpenIO</a></li>
@@ -446,8 +445,6 @@ page header structure.">cupsRasterWriteHeader2</a></li>
 </ul></li>
 </ul>
 <!--
-  "$Id$"
-
   Raster API introduction for CUPS.
 
   Copyright 2007-2013 by Apple Inc.
@@ -469,7 +466,7 @@ avoid incompatibilities with newer versions of CUPS.</p>
 
 <p>Two kinds of CUPS filters use the CUPS raster API - raster image processor
 (RIP) filters such as <code>pstoraster</code> and <code>cgpdftoraster</code>
-(OS X) that produce CUPS raster files and printer driver filters that
+(macOS) that produce CUPS raster files and printer driver filters that
 convert CUPS raster files into a format usable by the printer. Printer
 driver filters are by far the most common.</p>
 
@@ -589,7 +586,7 @@ the memory used to read the raster file:</p>
 
 <ul class="code">
 
-       <li><a href="#cupsRasterReadHeader" title="Read a raster page header and store it in a version 1 page header structure.">cupsRasterReadHeader</a> <span class="info">Deprecated in CUPS 1.2/OS X 10.5</span></li>
+       <li><a href="#cupsRasterReadHeader" title="Read a raster page header and store it in a version 1 page header structure.">cupsRasterReadHeader</a> <span class="info">Deprecated in CUPS 1.2/macOS 10.5</span></li>
        <li><a href="#cupsRasterReadHeader2" title="Read a raster page header and store it in a version 2 page header structure.">cupsRasterReadHeader2</a></li>
        <li><a href="#cupsRasterReadPixels" title="Read raster pixels.">cupsRasterReadPixels</a></li>
 
@@ -600,7 +597,7 @@ the memory used to read the raster file:</p>
 <ul class="code">
 
        <li><a href="#cupsRasterInterpretPPD" title="Interpret PPD commands to create a page header.">cupsRasterInterpretPPD</a></li>
-       <li><a href="#cupsRasterWriteHeader" title="Write a raster page header from a version 1 page header structure.">cupsRasterWriteHeader</a> <span class="info">Deprecated in CUPS 1.2/OS X 10.5</span></li>
+       <li><a href="#cupsRasterWriteHeader" title="Write a raster page header from a version 1 page header structure.">cupsRasterWriteHeader</a> <span class="info">Deprecated in CUPS 1.2/macOS 10.5</span></li>
        <li><a href="#cupsRasterWriteHeader2" title="Write a raster page header from a version 2 page header structure.">cupsRasterWriteHeader2</a></li>
        <li><a href="#cupsRasterWritePixels" title="Write raster pixels.">cupsRasterWritePixels</a></li>
 
@@ -620,7 +617,51 @@ void cupsRasterClose (<br>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">The file descriptor associated with the raster stream must be closed
 separately as needed.</p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsRasterInterpretPPD">cupsRasterInterpretPPD</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 2.2/macOS 10.12&nbsp;</span><a name="cupsRasterInitPWGHeader">cupsRasterInitPWGHeader</a></h3>
+<p class="description">Initialize a page header for PWG Raster output.</p>
+<p class="code">
+int cupsRasterInitPWGHeader (<br>
+&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cups_page_header2_t">cups_page_header2_t</a> *h,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;pwg_media_t *media,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *type,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int xdpi,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;int ydpi,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *sides,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;const char *sheet_back<br>
+);</p>
+<h4 class="parameters">Parameters</h4>
+<dl>
+<dt>h</dt>
+<dd class="description">Page header</dd>
+<dt>media</dt>
+<dd class="description">PWG media information</dd>
+<dt>type</dt>
+<dd class="description">PWG raster type string</dd>
+<dt>xdpi</dt>
+<dd class="description">Cross-feed direction (horizontal) resolution</dd>
+<dt>ydpi</dt>
+<dd class="description">Feed direction (vertical) resolution</dd>
+<dt>sides</dt>
+<dd class="description">IPP &quot;sides&quot; option value</dd>
+<dt>sheet_back</dt>
+<dd class="description">Transform for back side or <code>NULL</code> for none</dd>
+</dl>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">1 on success, 0 on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The &quot;media&quot; argument specifies the media to use.<br>
+<br>
+The &quot;type&quot; argument specifies a &quot;pwg-raster-document-type-supported&quot; value
+that controls the color space and bit depth of the raster data.<br>
+<br>
+The &quot;xres&quot; and &quot;yres&quot; arguments specify the raster resolution in dots per
+inch.<br>
+<br>
+The &quot;sheet_back&quot; argument specifies a &quot;pwg-raster-document-sheet-back&quot; value
+to apply for the back side of a page.  Pass <code>NULL</code> for the front side.
+
+</p>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsRasterInterpretPPD">cupsRasterInterpretPPD</a></h3>
 <p class="description">Interpret PPD commands to create a page header.</p>
 <p class="code">
 int cupsRasterInterpretPPD (<br>
@@ -755,7 +796,7 @@ of the version 2 page header data. This function handles reading version 2
 page headers and copying only the version 1 data into the provided buffer.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsRasterReadHeader2">cupsRasterReadHeader2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsRasterReadHeader2">cupsRasterReadHeader2</a></h3>
 <p class="description">Read a raster page header and store it in a
 version 2 page header structure.</p>
 <p class="code">
@@ -816,7 +857,7 @@ unsigned cupsRasterWriteHeader (<br>
 <p class="discussion">This function is deprecated. Use <a href="#cupsRasterWriteHeader2"><code>cupsRasterWriteHeader2</code></a> instead.
 
 </p>
-<h3 class="function"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cupsRasterWriteHeader2">cupsRasterWriteHeader2</a></h3>
+<h3 class="function"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cupsRasterWriteHeader2">cupsRasterWriteHeader2</a></h3>
 <p class="description">Write a raster page header from a version 2
 page header structure.</p>
 <p class="code">
@@ -911,7 +952,7 @@ typedef enum <a href="#cups_order_e">cups_order_e</a> cups_order_t;
 <p class="code">
 typedef enum <a href="#cups_orient_e">cups_orient_e</a> cups_orient_t;
 </p>
-<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cups_page_header2_t">cups_page_header2_t</a></h3>
+<h3 class="typedef"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cups_page_header2_t">cups_page_header2_t</a></h3>
 <p class="description">Version 2 page header </p>
 <p class="code">
 typedef struct <a href="#cups_page_header2_s">cups_page_header2_s</a> cups_page_header2_t;
@@ -932,7 +973,7 @@ typedef ssize_t (*cups_raster_iocb_t)(void *ctx, unsigned char *buffer, size_t l
 typedef struct _cups_raster_s cups_raster_t;
 </p>
 <h2 class="title"><a name="STRUCTURES">Structures</a></h2>
-<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span><a name="cups_page_header2_s">cups_page_header2_s</a></h3>
+<h3 class="struct"><span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span><a name="cups_page_header2_s">cups_page_header2_s</a></h3>
 <p class="description">Version 2 page header </p>
 <p class="code">struct cups_page_header2_s {<br>
 &nbsp;&nbsp;&nbsp;&nbsp;unsigned AdvanceDistance;<br>
@@ -1045,7 +1086,7 @@ typedef struct _cups_raster_s cups_raster_t;
 <dd class="description">Number of bits for each color</dd>
 <dt>cupsBitsPerPixel </dt>
 <dd class="description">Number of bits for each pixel</dd>
-<dt>cupsBorderlessScalingFactor <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsBorderlessScalingFactor <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Scaling that was applied to page data </dd>
 <dt>cupsBytesPerLine </dt>
 <dd class="description">Number of bytes per line</dd>
@@ -1057,26 +1098,26 @@ typedef struct _cups_raster_s cups_raster_t;
 <dd class="description">Device compression to use</dd>
 <dt>cupsHeight </dt>
 <dd class="description">Height of page image in pixels</dd>
-<dt>cupsImagingBBox[4] <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsImagingBBox[4] <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Floating point ImagingBoundingBox
 (scaling factor not applied, left,
 bottom, right, top) </dd>
-<dt>cupsInteger[16] <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsInteger[16] <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">User-defined integer values </dd>
-<dt>cupsMarkerType[64] <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsMarkerType[64] <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Ink/toner type </dd>
 <dt>cupsMediaType </dt>
 <dd class="description">Media type code</dd>
-<dt>cupsNumColors <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsNumColors <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Number of color compoents </dd>
-<dt>cupsPageSizeName[64] <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsPageSizeName[64] <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">PageSize name </dd>
-<dt>cupsPageSize[2] <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsPageSize[2] <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Floating point PageSize (scaling *
 factor not applied) </dd>
-<dt>cupsReal[16] <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsReal[16] <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">User-defined floating-point values </dd>
-<dt>cupsRenderingIntent[64] <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsRenderingIntent[64] <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Color rendering intent </dd>
 <dt>cupsRowCount </dt>
 <dd class="description">Rows per band</dd>
@@ -1084,7 +1125,7 @@ factor not applied) </dd>
 <dd class="description">Feed between bands</dd>
 <dt>cupsRowStep </dt>
 <dd class="description">Spacing between lines</dd>
-<dt>cupsString[16][64] <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>cupsString[16][64] <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">User-defined string values </dd>
 <dt>cupsWidth </dt>
 <dd class="description">Width of page image in pixels</dd>
@@ -1244,9 +1285,9 @@ factor not applied) </dd>
 <dl>
 <dt>CUPS_CSPACE_ADOBERGB <span class="info">&nbsp;CUPS 1.4.5&nbsp;</span></dt>
 <dd class="description">Red, green, blue (Adobe RGB) </dd>
-<dt>CUPS_CSPACE_CIELab <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_CIELab <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">CIE Lab </dd>
-<dt>CUPS_CSPACE_CIEXYZ <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_CIEXYZ <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">CIE XYZ </dd>
 <dt>CUPS_CSPACE_CMY </dt>
 <dd class="description">Cyan, magenta, yellow (DeviceCMY)</dd>
@@ -1288,35 +1329,35 @@ factor not applied) </dd>
 <dd class="description">Gold, magenta, yellow, silver </dd>
 <dt>CUPS_CSPACE_GOLD <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
 <dd class="description">Gold foil </dd>
-<dt>CUPS_CSPACE_ICC1 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC1 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 1 color </dd>
-<dt>CUPS_CSPACE_ICC2 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC2 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 2 colors </dd>
-<dt>CUPS_CSPACE_ICC3 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC3 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 3 colors </dd>
-<dt>CUPS_CSPACE_ICC4 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC4 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 4 colors </dd>
-<dt>CUPS_CSPACE_ICC5 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC5 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 5 colors </dd>
-<dt>CUPS_CSPACE_ICC6 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC6 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 6 colors </dd>
-<dt>CUPS_CSPACE_ICC7 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC7 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 7 colors </dd>
-<dt>CUPS_CSPACE_ICC8 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC8 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 8 colors </dd>
-<dt>CUPS_CSPACE_ICC9 <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICC9 <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 9 colors </dd>
-<dt>CUPS_CSPACE_ICCA <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICCA <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 10 colors </dd>
-<dt>CUPS_CSPACE_ICCB <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICCB <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 11 colors </dd>
-<dt>CUPS_CSPACE_ICCC <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICCC <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 12 colors </dd>
-<dt>CUPS_CSPACE_ICCD <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICCD <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 13 colors </dd>
-<dt>CUPS_CSPACE_ICCE <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICCE <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 14 colors </dd>
-<dt>CUPS_CSPACE_ICCF <span class="info">&nbsp;CUPS 1.1.19/OS X 10.3&nbsp;</span></dt>
+<dt>CUPS_CSPACE_ICCF <span class="info">&nbsp;CUPS 1.1.19/macOS 10.3&nbsp;</span></dt>
 <dd class="description">ICC-based, 15 colors </dd>
 <dt>CUPS_CSPACE_K </dt>
 <dd class="description">Black (DeviceK)</dd>
@@ -1328,7 +1369,7 @@ factor not applied) </dd>
 <dd class="description">Red, green, blue (DeviceRGB, sRGB by default)</dd>
 <dt>CUPS_CSPACE_RGBA </dt>
 <dd class="description">Red, green, blue, alpha (DeviceRGB, sRGB by default)</dd>
-<dt>CUPS_CSPACE_RGBW <span class="info">&nbsp;CUPS 1.2/OS X 10.5&nbsp;</span></dt>
+<dt>CUPS_CSPACE_RGBW <span class="info">&nbsp;CUPS 1.2/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Red, green, blue, white (DeviceRGB, sRGB by default) </dd>
 <dt>CUPS_CSPACE_SILVER <span class="info">&nbsp;DEPRECATED&nbsp;</span></dt>
 <dd class="description">Silver foil </dd>
@@ -1394,9 +1435,9 @@ factor not applied) </dd>
 <dd class="description">Open stream for reading</dd>
 <dt>CUPS_RASTER_WRITE </dt>
 <dd class="description">Open stream for writing</dd>
-<dt>CUPS_RASTER_WRITE_COMPRESSED <span class="info">&nbsp;CUPS 1.3/OS X 10.5&nbsp;</span></dt>
+<dt>CUPS_RASTER_WRITE_COMPRESSED <span class="info">&nbsp;CUPS 1.3/macOS 10.5&nbsp;</span></dt>
 <dd class="description">Open stream for compressed writing </dd>
-<dt>CUPS_RASTER_WRITE_PWG <span class="info">&nbsp;CUPS 1.5/OS X 10.7&nbsp;</span></dt>
+<dt>CUPS_RASTER_WRITE_PWG <span class="info">&nbsp;CUPS 1.5/macOS 10.7&nbsp;</span></dt>
 <dd class="description">Open stream for compressed writing in PWG mode </dd>
 </dl>
 <h3 class="enumeration"><a name="cups_order_e">cups_order_e</a></h3>
index d6c208c..ebbadbd 100644 (file)
@@ -44,7 +44,7 @@ DNS server(s).</li>
        <LI><A HREF="http://web.mit.edu/kerberos/">Kerberos: The Network Authentication Protocol</A></LI>
 
        <LI><A HREF="http://web.mit.edu/macdev/KfM/Common/Documentation/faq-osx.html">Kerberos
-       on OS X Frequently Asked Questions</A></LI>
+       on macOS Frequently Asked Questions</A></LI>
 
 </UL>
 
index 0056621..29e24ef 100644 (file)
@@ -90,7 +90,7 @@ the following special exception:</P>
                operating system software developed and/or
                marketed by Apple Inc., including but not limited
                to all existing releases and versions of Apple's
-               Darwin, OS X, and OS X Server products and all
+               Darwin, macOS, and macOS Server products and all
                follow-on releases and future versions thereof.</LI>
 
                <LI>This exception is only available for Apple
index 4ccad79..156717b 100644 (file)
@@ -151,7 +151,7 @@ CUPS backends are not generally design to be run directly by the user. Aside fro
 <i>argv[0]</i>
 and
 <b>DEVICE_URI</b>
-environment variable contain the device URI), CUPS backends also expect specific environment variables and file descriptors, and typically run in a user session that (on OS X) has additional restrictions that affect how it runs. Backends can also be installed with restricted permissions (0500 or 0700) that tell the scheduler to run them as the "root" user instead of an unprivileged user (typically "lp") on the system.
+environment variable contain the device URI), CUPS backends also expect specific environment variables and file descriptors, and typically run in a user session that (on macOS) has additional restrictions that affect how it runs. Backends can also be installed with restricted permissions (0500 or 0700) that tell the scheduler to run them as the "root" user instead of an unprivileged user (typically "lp") on the system.
 <p>Unless you are a developer and know what you are doing, please do not run backends directly. Instead, use the
 <a href="man-lp.html?TOPIC=Man+Pages"><b>lp</b>(1)</a>
 or
@@ -173,7 +173,7 @@ for more information.
 <br>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index f68f440..a278b0e 100644 (file)
@@ -83,7 +83,7 @@ Administrators wishing to prevent unauthorized cancellation of jobs via the <i>-
 <a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index a453bbc..bf4eaf1 100644 (file)
@@ -24,7 +24,7 @@ The name, location, and format of this file are an implementation detail that wi
 <a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index edf4470..16c1919 100644 (file)
@@ -8,12 +8,14 @@
 <body>
 <h1 class="title">client.conf(5)</h1>
 <h2 class="title"><a name="NAME">Name</a></h2>
-client.conf - client configuration file for cups (deprecated)
+client.conf - client configuration file for cups
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
 The <b>client.conf</b> file configures the CUPS client and is normally located in the <i>/etc/cups</i> and/or <i>~/.cups</i> directories.
 Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
-<p><b>Note:</b> Starting with OS X 10.7, this file is only used by command-line and X11 applications plus the IPP backend.
-The <b>ServerName</b> directive is not supported on OS X at all.
+<p><b>Note:</b> Starting with macOS 10.7, this file is only used by command-line and X11 applications plus the IPP backend.
+The <b>ServerName</b> directive is not supported on macOS at all.
+Starting with macOS 10.12, all applications can access these settings in the <i>/Library/Preferences/org.cups.PrintingPrefs.plist</i> file instead.
+See the NOTES section below for more information.
 <h3><a name="DIRECTIVES">Directives</a></h3>
 The following directives are understood by the client. Consult the online help for detailed descriptions:
 <dl class="man">
@@ -24,7 +26,7 @@ The default is "Yes".
 <dt><b>AllowExpiredCerts Yes</b>
 <dd style="margin-left: 5.0em"><dt><b>AllowExpiredCerts No</b>
 <dd style="margin-left: 5.0em">Specifies whether to allow TLS with expired certificates.
-The default is "Yes".
+The default is "No".
 <dt><b>Encryption IfRequested</b>
 <dd style="margin-left: 5.0em"><dt><b>Encryption Never</b>
 <dd style="margin-left: 5.0em"><dt><b>Encryption Required</b>
@@ -35,7 +37,7 @@ CUPS adds the remote hostname ("name@server.example.com") for you. The default n
 <dt><b>ServerName </b><i>hostname-or-ip-address</i>[<i>:port</i>]
 <dd style="margin-left: 5.0em"><dt><b>ServerName </b><i>/domain/socket</i>
 <dd style="margin-left: 5.0em">Specifies the address and optionally the port to use when connecting to the server.
-<b>Note: This directive it not supported on OS X 10.7 or later.</b>
+<b>Note: This directive it not supported on macOS 10.7 or later.</b>
 <dt><b>ServerName </b><i>hostname-or-ip-address</i>[<i>:port</i>]<b>/version=1.1</b>
 <dd style="margin-left: 5.0em">Specifies the address and optionally the port to use when connecting to a server running CUPS 1.3.12 and earlier.
 <dt><b>SSLOptions </b>[<i>AllowDH</i>] [<i>AllowRC4</i>] [<i>AllowSSL3</i>] [<i>DenyTLS1.0</i>]
@@ -46,6 +48,10 @@ The <i>AllowDH</i> option enables cipher suites using plain Diffie-Hellman key n
 The <i>AllowRC4</i> option enables the 128-bit RC4 cipher suites, which are required for some older clients that do not implement newer ones.
 The <i>AllowSSL3</i> option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
 The <i>DenyTLS1.0</i> option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
+<dt><b>TrustOnFirstUse Yes</b>
+<dd style="margin-left: 5.0em"><dt><b>TrustOnFirstUse No</b>
+<dd style="margin-left: 5.0em">Specifies whether to trust new TLS certificates by default.
+The default is "Yes".
 <dt><b>User </b><i>name</i>
 <dd style="margin-left: 5.0em">Specifies the default user name to use for requests.
 <dt><b>ValidateCerts Yes</b>
@@ -54,12 +60,23 @@ The <i>DenyTLS1.0</i> option disables TLS v1.0 support - this sets the minimum p
 The default is "No".
 </dl>
 <h2 class="title"><a name="NOTES">Notes</a></h2>
-The <b>client.conf</b> file is deprecated and will no longer be supported in a future version of CUPS.
+The <b>client.conf</b> file is deprecated on macOS and will no longer be supported in a future version of CUPS.
+Configuration settings can instead be viewed or changed using the
+<b>defaults</b>(1)
+command:
+<pre class="man">
+defaults write /Library/Preferences/org.cups.PrintingPrefs.plist Encryption Required
+defaults write /Library/Preferences/org.cups.PrintingPrefs.plist TrustOnFirstUse -bool NO
+
+defaults read /Library/Preferences/org.cups.PrintingPrefs.plist Encryption
+</pre>
+On Linux and other systems using GNU TLS, the <i>/etc/cups/ssl/site.crl</i> file, if present, provides a list of revoked X.509 certificates and is used when validating certificates.
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
 <a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
+<b>default</b>(1),
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 705e200..cb6f1e6 100644 (file)
@@ -94,7 +94,7 @@ Compile a simple one-file CUPS filter:
 <a href="man-cups.html?TOPIC=Man+Pages"><b>cups</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 41001b1..093ba6f 100644 (file)
@@ -38,7 +38,7 @@ The server name may be included in filenames using the string "%s", for example:
 The default is "/var/log/cups/access_log".
 <dt><a name="ConfigFilePerm"></a><b>ConfigFilePerm </b><i>mode</i>
 <dd style="margin-left: 5.0em">Specifies the permissions for all configuration files that the scheduler writes.
-The default is "0644" on OS X and "0640" on all other operating systems.
+The default is "0644" on macOS and "0640" on all other operating systems.
 </dl>
 <p><b>Note:</b> The permissions for the <i>printers.conf</i> file are currently masked to only allow access from the scheduler user (typically root).
 This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system.
@@ -122,14 +122,14 @@ The default is "/var/spool/cups".
 <dd style="margin-left: 5.0em"><dt><b>Sandboxing strict</b>
 <dd style="margin-left: 5.0em">Specifies the level of security sandboxing that is applied to print filters, backends, and other child processes of the scheduler.
 The default is "strict".
-This directive is currently only used/supported on OS X.
+This directive is currently only used/supported on macOS.
 <dt><a name="ServerBin"></a><b>ServerBin </b><i>directory</i>
 <dd style="margin-left: 5.0em">Specifies the directory containing the backends, CGI programs, filters, helper programs, notifiers, and port monitors.
 The default is "/usr/lib/cups" or "/usr/libexec/cups" depending on the platform.
 <dt><a name="ServerKeychain"></a><b>ServerKeychain </b><i>path</i>
 <dd style="margin-left: 5.0em">Specifies the location of TLS certificates and private keys.
-The default is "/Library/Keychains/System.keychain" on OS X and "/etc/cups/ssl" on all other operating systems.
-OS X uses its keychain database to store certificates and keys while other platforms use separate files in the specified directory, *.crt for PEM-encoded certificates and *.key for PEM-encoded private keys.
+The default is "/Library/Keychains/System.keychain" on macOS and "/etc/cups/ssl" on all other operating systems.
+macOS uses its keychain database to store certificates and keys while other platforms use separate files in the specified directory, *.crt for PEM-encoded certificates and *.key for PEM-encoded private keys.
 <dt><a name="ServerRoot"></a><b>ServerRoot </b><i>directory</i>
 <dd style="margin-left: 5.0em">Specifies the directory containing the server configuration files.
 The default is "/etc/cups".
@@ -160,7 +160,7 @@ The default is "lp".
 <a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 697518a..e81a01e 100644 (file)
@@ -108,7 +108,7 @@ service using the corresponding control program.
 CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
 RFC 2569
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index e0c18bd..732ae62 100644 (file)
@@ -49,7 +49,7 @@ The default is 120 seconds (2 minutes).
 <a href="man-cups-snmp.html?TOPIC=Man+Pages"><b>cups-snmp</b>(8),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index faa5763..9baf070 100644 (file)
@@ -48,7 +48,7 @@ The CUPS SNMP backend uses the information from the Host, Printer, and Port Moni
 <a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index bc7390c..83966d9 100644 (file)
@@ -113,7 +113,7 @@ CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help
 CUPS Web Site (<a href="http://www.CUPS.org)">http://www.CUPS.org)</a>,
 PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index fe46291..7a14d3f 100644 (file)
@@ -78,7 +78,7 @@ Also, printer and class names are <i>not</i> case-sensitive.
 <br>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index cb2901e..454174e 100644 (file)
@@ -115,7 +115,7 @@ This is useful for debugging SAMBA configuration problems.
 <b>smb.conf</b>(5),
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 34e66de..a20ea2a 100644 (file)
@@ -88,7 +88,7 @@ You cannot set the Listen or Port directives using <b>cupsctl</b>.
 <br>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 324408b..a40ad2f 100644 (file)
@@ -49,7 +49,7 @@ The <b>cups-deviced</b> helper program runs each CUPS
 <a href="man-backend.html?TOPIC=Man+Pages"><b>backend</b>(7)</a>
 with no arguments in order to discover the available printers.
 <p>The <b>cups-driverd</b> helper program lists all available printer drivers, a subset of "matching" printer drivers, or a copy of a specific driver PPD file.
-<p>The <b>cups-exec</b> helper program runs backends, filters, and other programs. On OS X these programs are run in a secure sandbox.
+<p>The <b>cups-exec</b> helper program runs backends, filters, and other programs. On macOS these programs are run in a secure sandbox.
 <h2 class="title"><a name="FILES">Files</a></h2>
 The <b>cups-driverd</b> program looks for PPD and driver information files in the following directories:
 <pre class="man">
@@ -78,7 +78,7 @@ archives to further reduce their size.
 <a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 2550681..492e3ec 100644 (file)
@@ -188,7 +188,7 @@ For printers that cannot produce copies on their own, the num-copies field will
 <a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index c2ef877..bfe8e3d 100644 (file)
@@ -130,6 +130,12 @@ to verify that the hostname resolved from the address matches one of the address
 Double lookups also prevent clients with unregistered addresses from connecting to your server.
 The default is "Off" to avoid the potential server performance problems with hostname lookups.
 Only set this option to "On" or "Double" if absolutely required.
+<dt><a name="IdleExitTimeout"></a><b>IdleExitTimeout </b><i>seconds</i>
+<dd style="margin-left: 5.0em">Specifies the length of time to wait before shutting down due to inactivity.
+The default is "60" seconds.
+Note: Only applicable when
+<a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8)</a>
+is run on-demand (e.g., with <b>-l</b>).
 <dt><a name="JobKillDelay"></a><b>JobKillDelay </b><i>seconds</i>
 <dd style="margin-left: 5.0em">Specifies the number of seconds to wait before killing the filters and backend associated with a canceled or held job.
 The default is "30".
@@ -513,6 +519,7 @@ The group name "@SYSTEM" corresponds to the list of groups defined by the System
 <a href="man-cups-files.conf.html?TOPIC=Man+Pages"><b>cups-files.conf</b>(5)</a>
 file.
 The group name "@OWNER" corresponds to the owner of the resource, for example the person that submitted a print job.
+Note: The 'root' user is not special and must be granted privileges like any other user account.
 <dt><b>Require valid-user</b>
 <dd style="margin-left: 5.0em">Specifies that any authenticated user is acceptable.
 <dt><b>Satisfy all</b>
@@ -589,7 +596,7 @@ Require authentication for accesses from outside the 10. network:
 <a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index fe00393..18296fb 100644 (file)
@@ -86,8 +86,7 @@ This differs from the System V versions which require the root user to execute t
 <a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
-
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 1e32c1e..63e0f0d 100644 (file)
@@ -120,7 +120,7 @@ The following command will generate a PDF preview of job 42 for a printer named
 <a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(7),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 5a99948..334810c 100644 (file)
@@ -38,7 +38,7 @@ CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help
 Adobe PostScript Language Document Structuring Conventions
 Specification, Version 3.0.
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 28d2518..3ea4d49 100644 (file)
@@ -121,7 +121,7 @@ The next command tests all PPD files under the current directory and print detai
 CUPS Online Help (<a href="http://localhost:631/help)">http://localhost:631/help)</a>,
 Adobe PostScript Printer Description File Format Specification, Version 4.3.
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index bb4f620..5f9e8ad 100644 (file)
@@ -163,13 +163,10 @@ for a regular print file.
 <dd style="margin-left: 5.0em">The user executing the filter, typically "lp" or "root"; consult the <i>cups-files.conf</i> file for the current setting.
 </dl>
 <h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
-While the filter interface is compatible with System V interface
-scripts, it will only work with the System V interface script as the
-only filter.  Typically the interface script will be provided via the
-<i>lpadmin(8)</i> command using the <i>-i</i> option.
+While the filter interface is compatible with System V interface scripts, CUPS does not support System V interface scripts.
 <h2 class="title"><a name="NOTES">Notes</a></h2>
 CUPS filters are not meant to be run directly by the user.
-Aside from the legacy System V interface issues (<i>argv[0]</i> is the printer name), CUPS filters also expect specific environment variables and file descriptors, and typically run in a user session that (on OS X) has additional restrictions that affect how it runs.
+Aside from the legacy System V interface issues (<i>argv[0]</i> is the printer name), CUPS filters also expect specific environment variables and file descriptors, and typically run in a user session that (on macOS) has additional restrictions that affect how it runs.
 Unless you are a developer and know what you are doing, please do not run filters directly.
 Instead, use the
 <a href="man-cupsfilter.html?TOPIC=Man+Pages"><b>cupsfilter</b>(8)</a>
@@ -183,7 +180,7 @@ program to use the appropriate filters to do the conversions you need.
 <br>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index f3e3dc0..9750990 100644 (file)
@@ -215,7 +215,7 @@ IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp\-registrations)"
 PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp">http://www.pwg.org/ipp</a>)
 RFC 2911 (<a href="http://tools.ietf.org/html/rfc2911)">http://tools.ietf.org/html/rfc2911)</a>,
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 4f54d64..3e390de 100644 (file)
@@ -501,7 +501,7 @@ IANA IPP Registry (<a href="http://www.iana.org/assignments/ipp-registrations)">
 PWG Internet Printing Protocol Workgroup (<a href="http://www.pwg.org/ipp)">http://www.pwg.org/ipp)</a>,
 RFC 2911 (<a href="http://tools.ietf.org/html/rfc3911">http://tools.ietf.org/html/rfc3911</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 73d7c2d..788e25a 100644 (file)
@@ -114,6 +114,7 @@ In CUPS, print files are always sent to the scheduler via IPP which has the same
 <dd style="margin-left: 5.0em">Sets the number of copies to print.
 <dt><b>-o "</b><i>name</i><b>=</b><i>value </i>[ ... <i>name</i><b>=</b><i>value </i>]<b>"</b>
 <dd style="margin-left: 5.0em">Sets one or more job options.
+See "COMMON JOB OPTIONS" below.
 <dt><b>-q </b><i>priority</i>
 <dd style="margin-left: 5.0em">Sets the job priority from 1 (lowest) to 100 (highest).
 The default priority is 50.
@@ -140,20 +141,54 @@ Aside from the printer-specific options reported by the
 <a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
 command, the following generic options are available:
 <dl class="man">
+<dt><b>-o collate=true</b>
+<dd style="margin-left: 5.0em">Prints collated copies.
+<dt><b>-o fit-to-page</b>
+<dd style="margin-left: 5.0em">Scales the print file to fit on the page.
+<dt><b>-o job-hold-until=</b><i>when</i>
+<dd style="margin-left: 5.0em">Holds the job until the specified local time.
+"when" can be "indefinite" to hold the until released, "day-time" to print the job between 6am and 6pm local time, "night" to print the job between 6pm and 6am local time, "second-shift" to print the job between 4pm and 12am local time, "third-shift" to print the job between 12am and 8am local time, or "weekend" to print the job on Saturday or Sunday.
+<dt><b>-o job-hold-until=</b><i>hh:mm</i>
+<dd style="margin-left: 5.0em">Holds the job until the specified time in hours and minutes UTC.
+<dt><b>-o job-priority=</b><i>priority</i>
+<dd style="margin-left: 5.0em">Set the priority to a value from 1 (lowest) to 100 (highest), which influences when a job is scheduled for printing.
+The default priority is typically 50.
+<dt><b>-o job-sheets=</b><i>name</i>
+<dd style="margin-left: 5.0em">Prints a cover page (banner) with the document.
+The "name" can be "classified", "confidential", "secret", "standard", "topsecret", or "unclassified".
+<dt><b>-o job-sheets=</b><i>start-name,end-name</i>
+<dd style="margin-left: 5.0em">Prints cover pages (banners) with the document.
 <dt><b>-o media=</b><i>size</i>
 <dd style="margin-left: 5.0em">Sets the page size to <i>size</i>. Most printers support at least the size names "a4", "letter", and "legal".
+<dt><b>-o mirror</b>
+<dd style="margin-left: 5.0em">Mirrors each page.
+<dt><b>-o number-up=</b>{<i>2|4|6|9|16</i>}
+<dd style="margin-left: 5.0em">Prints 2, 4, 6, 9, or 16 document (input) pages on each output page.
+<dt><b>-o number-up-layout=</b><i>layout</i>
+<dd style="margin-left: 5.0em">Specifies the layout of pages with the "number-up" option.
+The "layout" string can be "btlr", "btrl", "lrbt", "lrtb", "rlbt", "rltb", "tblr", or "tbrl" - the first two letters determine the column order while the second two letters determine the row order.
+"bt" is bottom-to-top, "lr" is left-to-right, "rl" is right-to-left, and "tb" is top-to-bottom.
 <dt><b>-o orientation-requested=4</b>
-<dd style="margin-left: 5.0em">Prints the job in landscape (rotated 90 degrees).
+<dd style="margin-left: 5.0em">Prints the job in landscape (rotated 90 degrees counter-clockwise).
+<dt><b>-o orientation-requested=5</b>
+<dd style="margin-left: 5.0em">Prints the job in landscape (rotated 90 degrees clockwise).
+<dt><b>-o orientation-requested=6</b>
+<dd style="margin-left: 5.0em">Prints the job in reverse portrait (rotated 180 degrees).
+<dt><b>-o outputorder=reverse</b>
+<dd style="margin-left: 5.0em">Prints pages in reverse order.
+<dt><b>-o page-border=</b><i>border</i>
+<dd style="margin-left: 5.0em">Prints a border around each document page.
+"border" is "double", "double-thick", "single", or "single-thick".
+<dt><b>-o page-ranges=</b><i>page-list</i>
+<dd style="margin-left: 5.0em">Specifies which pages to print in the document.
+The list can contain a list of numbers and ranges (#-#) separated by commas, e.g., "1,3-5,16".
+The page numbers refer to the output pages and not the document's original pages - options like "number-up" can affect the numbering of the pages.
 <dt><b>-o sides=one-sided</b>
 <dd style="margin-left: 5.0em">Prints on one side of the paper.
 <dt><b>-o sides=two-sided-long-edge</b>
 <dd style="margin-left: 5.0em">Prints on both sides of the paper for portrait output.
 <dt><b>-o sides=two-sided-short-edge</b>
 <dd style="margin-left: 5.0em">Prints on both sides of the paper for landscape output.
-<dt><b>-o fit-to-page</b>
-<dd style="margin-left: 5.0em">Scales the print file to fit on the page.
-<dt><b>-o number-up=</b>{<i>2|4|6|9|16</i>}
-<dd style="margin-left: 5.0em">Prints 2, 4, 6, 9, or 16 document (input) pages on each output page.
 </dl>
 <h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
 Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#".
@@ -187,7 +222,7 @@ Print a presentation document 2-up to a printer called "foo":
 <a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 2a74cf0..473ab2b 100644 (file)
@@ -71,15 +71,15 @@ The following options are recognized when configuring a printer queue:
 <dt><b>-c </b><i>class</i>
 <dd style="margin-left: 5.0em">Adds the named <i>printer</i> to <i>class</i>.
 If <i>class</i> does not exist it is created automatically.
-<dt><b>-i </b><i>interface</i>
-<dd style="margin-left: 5.0em">Sets a System V style interface script for the printer.
-This option cannot be specified with the <i>-P</i> option (PPD file) and is intended for providing support for legacy printer drivers.
+<dt><b>-i </b><i>ppd-file</i>
+<dd style="margin-left: 5.0em"><dt><b>-P </b><i>ppd-file</i>
+<dd style="margin-left: 5.0em">Specifies a PostScript Printer Description (PPD) file to use with the printer.
 <dt><b>-m </b><i>model</i>
-<dd style="margin-left: 5.0em">Sets a standard System V interface script or PPD file for the printer from the <i>model</i> directory or using one of the driver interfaces.
+<dd style="margin-left: 5.0em">Sets a standard PPD file for the printer from the <i>model</i> directory or using one of the driver interfaces.
 Use the <i>-m</i> option with the
 <a href="man-lpinfo.html?TOPIC=Man+Pages"><b>lpinfo</b>(8)</a>
 command to get a list of supported models.
-The model "raw" clears any existing interface script or PPD file and the model "everywhere" queries the printer referred to by the specified IPP <i>device-uri</i>.
+The model "raw" clears any existing PPD file and the model "everywhere" queries the printer referred to by the specified IPP <i>device-uri</i>.
 <dt><b>-o cupsIPPSupplies=true</b>
 <dd style="margin-left: 5.0em"><dt><b>-o cupsIPPSupplies=false</b>
 <dd style="margin-left: 5.0em">Specifies whether IPP supply level values should be reported.
@@ -136,6 +136,7 @@ If the resulting class becomes empty it is removed.
 <dd style="margin-left: 5.0em">Sets user-level access control on a destination.
 Names starting with "@" are interpreted as UNIX groups.
 The latter two forms turn user-level access control off.
+Note: The user 'root' is not granted special access - using "-u allow:foo,bar" will allow users 'foo' and 'bar' to access the printer but NOT 'root'.
 <dt><b>-v "</b><i>device-uri</i><b>"</b>
 <dd style="margin-left: 5.0em">Sets the <i>device-uri</i> attribute of the printer queue.
 Use the <i>-v</i> option with the
@@ -151,9 +152,6 @@ and
 programs on the destination.
 <dt><b>-L "</b><i>location</i><b>"</b>
 <dd style="margin-left: 5.0em">Provides a textual location of the destination.
-<dt><b>-P </b><i>ppd-file</i>
-<dd style="margin-left: 5.0em">Specifies a PostScript Printer Description file to use with the printer.
-If specified, this option overrides the <i>-i</i> option (interface script).
 </dl>
 <h2 class="title"><a name="CONFORMING_TO">Conforming To</a></h2>
 Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#".
@@ -176,7 +174,7 @@ Create an IPP Everywhere print queue:
 <a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index e482a78..9906889 100644 (file)
@@ -48,7 +48,7 @@ command or another CUPS-compatible client with that functionality.
 <a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index bafd2bf..f845907 100644 (file)
@@ -14,9 +14,6 @@ lpinfo - show available devices or drivers
 [
 <b>-E</b>
 ] [
-<b>-U</b>
-<i>username</i>
-] [
 <b>-h </b><i>server</i>[<b>:</b><i>port</i>]
 ] [
 <b>-l</b>
@@ -45,9 +42,6 @@ lpinfo - show available devices or drivers
 [
 <b>-E</b>
 ] [
-<b>-U</b>
-<i>username</i>
-] [
 <b>-h </b><i>server</i>[<b>:</b><i>port</i>]
 ] [
 <b>-l</b>
@@ -70,8 +64,6 @@ The first form (<i>-m</i>) lists the available drivers, while the second form (<
 <dl class="man">
 <dt><b>-E</b>
 <dd style="margin-left: 5.0em">Forces encryption when connecting to the server.
-<dt><b>-U </b><i>username</i>
-<dd style="margin-left: 5.0em">Sets the username to use when connecting to the server.
 <dt><b>-h </b><i>server</i>[<b>:</b><i>port</i>]
 <dd style="margin-left: 5.0em">Selects an alternate server.
 <dt><b>-l</b>
@@ -117,7 +109,7 @@ List drivers matching "HP LaserJet":
 <a href="man-lpadmin.html?TOPIC=Man+Pages"><b>lpadmin</b>(8),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 8e902cd..4571292 100644 (file)
@@ -69,7 +69,7 @@ Move all jobs from "oldprinter" to "newprinter":
 <br>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 0aeed45..20c5782 100644 (file)
@@ -119,7 +119,7 @@ The <b>lpoptions</b> command is unique to CUPS.
 <a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index d54378e..2c4ec96 100644 (file)
@@ -55,7 +55,7 @@ Jobs queued on the default destination will be shown if no printer or class is s
 <a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 98fc7c6..0e4801e 100644 (file)
@@ -86,6 +86,7 @@ This option is equivalent to <i>-o raw</i>.
 <dd style="margin-left: 5.0em">Send an email on job completion.
 <dt><b>-o </b><i>option</i>[<b>=</b><i>value</i>]
 <dd style="margin-left: 5.0em">Sets a job option.
+See "COMMON JOB OPTIONS" below.
 <dt><b>-p</b>
 <dd style="margin-left: 5.0em">Specifies that the print file should be formatted with a shaded header with the date, time, job name, and page number.
 This option is equivalent to <i>-o prettyprint</i> and is only useful when printing text files.
@@ -94,6 +95,60 @@ This option is equivalent to <i>-o prettyprint</i> and is only useful when print
 <dt><b>-r</b>
 <dd style="margin-left: 5.0em">Specifies that the named print files should be deleted after submitting them.
 </dl>
+<h3><a name="COMMON_JOB_OPTIONS">Common Job Options</a></h3>
+Aside from the printer-specific options reported by the
+<a href="man-lpoptions.html?TOPIC=Man+Pages"><b>lpoptions</b>(1)</a>
+command, the following generic options are available:
+<dl class="man">
+<dt><b>-o collate=true</b>
+<dd style="margin-left: 5.0em">Prints collated copies.
+<dt><b>-o fit-to-page</b>
+<dd style="margin-left: 5.0em">Scales the print file to fit on the page.
+<dt><b>-o job-hold-until=</b><i>when</i>
+<dd style="margin-left: 5.0em">Holds the job until the specified local time.
+"when" can be "indefinite" to hold the until released, "day-time" to print the job between 6am and 6pm local time, "night" to print the job between 6pm and 6am local time, "second-shift" to print the job between 4pm and 12am local time, "third-shift" to print the job between 12am and 8am local time, or "weekend" to print the job on Saturday or Sunday.
+<dt><b>-o job-hold-until=</b><i>hh:mm</i>
+<dd style="margin-left: 5.0em">Holds the job until the specified time in hours and minutes UTC.
+<dt><b>-o job-priority=</b><i>priority</i>
+<dd style="margin-left: 5.0em">Set the priority to a value from 1 (lowest) to 100 (highest), which influences when a job is scheduled for printing.
+The default priority is typically 50.
+<dt><b>-o job-sheets=</b><i>name</i>
+<dd style="margin-left: 5.0em">Prints a cover page (banner) with the document.
+The "name" can be "classified", "confidential", "secret", "standard", "topsecret", or "unclassified".
+<dt><b>-o job-sheets=</b><i>start-name,end-name</i>
+<dd style="margin-left: 5.0em">Prints cover pages (banners) with the document.
+<dt><b>-o media=</b><i>size</i>
+<dd style="margin-left: 5.0em">Sets the page size to <i>size</i>. Most printers support at least the size names "a4", "letter", and "legal".
+<dt><b>-o mirror</b>
+<dd style="margin-left: 5.0em">Mirrors each page.
+<dt><b>-o number-up=</b>{<i>2|4|6|9|16</i>}
+<dd style="margin-left: 5.0em">Prints 2, 4, 6, 9, or 16 document (input) pages on each output page.
+<dt><b>-o number-up-layout=</b><i>layout</i>
+<dd style="margin-left: 5.0em">Specifies the layout of pages with the "number-up" option.
+The "layout" string can be "btlr", "btrl", "lrbt", "lrtb", "rlbt", "rltb", "tblr", or "tbrl" - the first two letters determine the column order while the second two letters determine the row order.
+"bt" is bottom-to-top, "lr" is left-to-right, "rl" is right-to-left, and "tb" is top-to-bottom.
+<dt><b>-o orientation-requested=4</b>
+<dd style="margin-left: 5.0em">Prints the job in landscape (rotated 90 degrees counter-clockwise).
+<dt><b>-o orientation-requested=5</b>
+<dd style="margin-left: 5.0em">Prints the job in landscape (rotated 90 degrees clockwise).
+<dt><b>-o orientation-requested=6</b>
+<dd style="margin-left: 5.0em">Prints the job in reverse portrait (rotated 180 degrees).
+<dt><b>-o outputorder=reverse</b>
+<dd style="margin-left: 5.0em">Prints pages in reverse order.
+<dt><b>-o page-border=</b><i>border</i>
+<dd style="margin-left: 5.0em">Prints a border around each document page.
+"border" is "double", "double-thick", "single", or "single-thick".
+<dt><b>-o page-ranges=</b><i>page-list</i>
+<dd style="margin-left: 5.0em">Specifies which pages to print in the document.
+The list can contain a list of numbers and ranges (#-#) separated by commas, e.g., "1,3-5,16".
+The page numbers refer to the output pages and not the document's original pages - options like "number-up" can affect the numbering of the pages.
+<dt><b>-o sides=one-sided</b>
+<dd style="margin-left: 5.0em">Prints on one side of the paper.
+<dt><b>-o sides=two-sided-long-edge</b>
+<dd style="margin-left: 5.0em">Prints on both sides of the paper for portrait output.
+<dt><b>-o sides=two-sided-short-edge</b>
+<dd style="margin-left: 5.0em">Prints on both sides of the paper for landscape output.
+</dl>
 <h2 class="title"><a name="NOTES">Notes</a></h2>
 The <i>-c</i>, <i>-d</i>, <i>-f</i>, <i>-g</i>, <i>-i</i>, <i>-n</i>, <i>-t</i>, <i>-v</i>, and <i>-w</i> options are not supported by CUPS and produce a warning message if used.
 <h2 class="title"><a name="EXAMPLES">Examples</a></h2>
@@ -124,7 +179,7 @@ Print a presentation document 2-up to a printer called "foo":
 <a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 558da4e..b1ea1ac 100644 (file)
@@ -76,7 +76,7 @@ Cancel all jobs:
 <a href="man-lpstat.html?TOPIC=Man+Pages"><b>lpstat</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 3b7024e..f9792c5 100644 (file)
@@ -123,7 +123,7 @@ Also, printer and class names are <i>not</i> case-sensitive.
 <a href="man-lprm.html?TOPIC=Man+Pages"><b>lprm</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 05b1e14..60884b8 100644 (file)
@@ -36,7 +36,7 @@ If multiple lines are present, only the last one is used.
 <a href="man-cupsd.html?TOPIC=Man+Pages"><b>cupsd</b>(8),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 4d41262..bd7ca01 100644 (file)
@@ -33,7 +33,7 @@ Filenames are relative to the CUPS filter directory.
 <br>
 <i>/usr/lib/cups/filter</i> - Typical CUPS filter directory.
 <br>
-<i>/usr/libexec/cups/filter</i> - CUPS filter directory on OS X.
+<i>/usr/libexec/cups/filter</i> - CUPS filter directory on macOS.
 <h2 class="title"><a name="EXAMPLES">Examples</a></h2>
 Define a filter that converts PostScript documents to CUPS Raster format:
 <pre class="man">
@@ -49,7 +49,7 @@ Define a filter that converts PostScript documents to CUPS Raster format:
 <a href="man-mime.types.html?TOPIC=Man+Pages"><b>mime.types</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 34168d5..8ea1dee 100644 (file)
@@ -91,7 +91,7 @@ Define two MIME media types for raster data, with one being a subset with higher
 <a href="man-mime.convs.html?TOPIC=Man+Pages"><b>mime.convs</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 0a2cec0..3339ba7 100644 (file)
@@ -31,7 +31,7 @@ Notifiers inherit the environment and can use the logging mechanism documented i
 <a href="man-filter.html?TOPIC=Man+Pages"><b>filter</b>(7),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 7e5063e..fec7465 100644 (file)
@@ -85,7 +85,7 @@ The default is to use the line feed character alone.
 <a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index aa1d6bf..40f8bb3 100644 (file)
@@ -89,7 +89,7 @@ This man page provides a quick reference to the supported keywords and should be
 <a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index e009f7e..9e6f964 100644 (file)
@@ -39,7 +39,7 @@ Multiple <i>-I</i> options can be supplied to add additional directories.
 <a href="man-ppdpo.html?TOPIC=Man+Pages"><b>ppdpo</b>(1),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index bb5c08b..920e4d5 100644 (file)
@@ -46,7 +46,7 @@ If no source file is specified, the filename <i>ppdi.drv</i> is used.
 <a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index efb0950..d09a18e 100644 (file)
@@ -43,7 +43,7 @@ Merging of different device PPDs will yield unpredictable results.
 <a href="man-ppdcfile.html?TOPIC=Man+Pages"><b>ppdcfile</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 4696f1c..a423e5a 100644 (file)
@@ -22,7 +22,7 @@ ppdpo - ppd message catalog generator (deprecated)
 ]
 <i>source-file</i>
 <h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<b>ppdpo</b> extracts UI strings from PPDC source files and updates either a GNU gettext or OS X strings format message catalog source file for translation.
+<b>ppdpo</b> extracts UI strings from PPDC source files and updates either a GNU gettext or macOS strings format message catalog source file for translation.
 <b>This program is deprecated and will be removed in a future release of CUPS.</b>
 <h2 class="title"><a name="OPTIONS">Options</a></h2>
 <b>ppdpo</b> supports the following options:
@@ -35,7 +35,7 @@ It is equivalent to using the <i>#define</i> directive in the source file.
 Multiple <i>-I</i> options can be supplied to add additional directories.
 <dt><b>-o </b><i>output-file</i>
 <dd style="margin-left: 5.0em">Specifies the output file.
-The supported extensions are <i>.po</i> or <i>.po.gz</i> for GNU gettext format message catalogs and <i>.strings</i> for OS X strings files.
+The supported extensions are <i>.po</i> or <i>.po.gz</i> for GNU gettext format message catalogs and <i>.strings</i> for macOS strings files.
 </dl>
 <h2 class="title"><a name="SEE_ALSO">See Also</a></h2>
 <a href="man-ppdc.html?TOPIC=Man+Pages"><b>ppdc</b>(1),</a>
@@ -45,7 +45,7 @@ The supported extensions are <i>.po</i> or <i>.po.gz</i> for GNU gettext format
 <b>ppdcfile(5),</b>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 8dfcce0..6ee15e1 100644 (file)
@@ -24,7 +24,7 @@ The name, location, and format of this file are an implementation detail that wi
 <a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index 0c7b5d0..0121dac 100644 (file)
@@ -24,7 +24,7 @@ The name, location, and format of this file are an implementation detail that wi
 <a href="man-printers.conf.html?TOPIC=Man+Pages"><b>printers.conf</b>(5),</a>
 CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
 <h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
-Copyright &copy; 2007-2015 by Apple Inc.
+Copyright &copy; 2007-2016 by Apple Inc.
 
 </body>
 </html>
index e29c9a4..6af2a9c 100644 (file)
@@ -435,7 +435,7 @@ CUPS_DEBUG_LEVEL=2 /usr/lib/cups/backend/snmp 2>&amp;1 | tee snmp.log
 (setenv CUPS_DEBUG_LEVEL 2; /usr/lib/cups/backend/snmp) |&amp; tee snmp.log
 </PRE>
 
-<P>On MacOS X you'll find the SNMP backend in /usr/libexec/cups/backend instead:</P>
+<P>On MacmacOS you'll find the SNMP backend in /usr/libexec/cups/backend instead:</P>
 
 <PRE CLASS="command">
 CUPS_DEBUG_LEVEL=2 /usr/libexec/cups/backend/snmp 2>&amp;1 | tee snmp.log
index 9f3a81a..044cdb6 100644 (file)
@@ -145,11 +145,11 @@ lpr -#<EM>num-copies</EM> filename
 </PRE>
 
 <P>Copies are normally <EM>not</EM> collated for you. Use the
-<CODE>-o Collate=True</CODE> option to get collated copies:</P>
+<CODE>-o collate=true</CODE> option to get collated copies:</P>
 
 <PRE CLASS="command">
-lp -n <EM>num-copies</EM> -o Collate=True filename
-lpr -#<EM>num-copies</EM> -o Collate=True filename
+lp -n <EM>num-copies</EM> -o collate=true filename
+lpr -#<EM>num-copies</EM> -o collate=true filename
 </PRE>
 
 
@@ -452,18 +452,6 @@ can make the output page numbering not match the document page numbers.</p>
 </blockquote>
 
 
-<H3><A NAME="PAGESET">Selecting Even or Odd Pages</A></H3>
-
-<P>Use the <CODE>-o page-set=set</CODE> option to select the even or odd pages:</P>
-
-<PRE CLASS="command">
-lp -o page-set=odd filename
-lp -o page-set=even filename
-lpr -o page-set=even filename
-</PRE>
-
-<P>The default is to print all pages.
-
 <H3><A NAME="NUMBERUP">N-Up Printing</A></H3>
 
 <P>The <CODE>-o number-up=value</CODE> option selects N-Up
@@ -577,78 +565,5 @@ lpr -o raw filename
 lpr -l filename
 </PRE>
 
-
-<H2 CLASS="title"><A NAME="TEXTOPTIONS">Text Options</A></H2>
-
-<P>CUPS supports several options that are only used when printing
-plain text files. These options have absolutely no effect on
-PostScript, PDF, HP-GL/2, or image files.</P>
-
-<H3><A NAME="CPI">Setting the Number of Characters Per Inch</A></H3>
-
-<P>The <CODE>-o cpi=value</CODE> option sets the number of
-characters per inch:</P>
-
-<PRE CLASS="command">
-lp -o cpi=10 filename
-lp -o cpi=12 filename
-lpr -o cpi=17 filename
-</PRE>
-
-<P>The default characters per inch is 10.</P>
-
-<H3><A NAME="LPI">Setting the Number of Lines Per Inch</A></H3>
-
-<P>The <CODE>-o lpi=value</CODE> option sets the number of lines
-per inch:</P>
-
-<PRE CLASS="command">
-lp -o lpi=6 filename
-lpr -o lpi=8 filename
-</PRE>
-
-<P>The default lines per inch is 6.</P>
-
-<H3><A NAME="MARGINS">Setting the Page Margins</A></H3>
-
-<P>Normally the page margins are set to the hard limits of the
-printer. Use the <CODE>-o page-left=value</CODE>, <CODE>-o
-page-right=value</CODE>, <CODE>-o page-top=value</CODE>, and
-<CODE>-o page-bottom=value</CODE> options to adjust the page
-margins:</P>
-
-<PRE CLASS="command">
-lp -o page-left=<EM>value</EM> filename
-lp -o page-right=<EM>value</EM> filename
-lp -o page-top=<EM>value</EM> filename
-lp -o page-bottom=<EM>value</EM> filename
-lpr -o page-left=<EM>value</EM> -o page-right=<EM>value</EM> -o page-top=<EM>value</EM> -o page-bottom=<EM>value</EM> filename
-</PRE>
-
-<P>The <CODE>value</CODE> argument is the margin in points; each
-point is 1/72 inch or 0.35mm.</P>
-
-<H3><A NAME="PRETTYPRINT">Pretty Printing</A></H3>
-
-<P>The <CODE>-o prettyprint</CODE> option puts a header at the
-top of each page with the page number, job title (usually the
-filename), and the date. Also, C and C++ keywords are
-highlighted, and comment lines are italicized:</P>
-
-<PRE CLASS="command">
-lp -o prettyprint filename
-lpr -o prettyprint filename
-</PRE>
-
-<H3><A NAME="WRAP">Turning Off Text Wrapping</A></H3>
-
-<P>The <CODE>-o nowrap</CODE> option disables wrapping of long lines:</P>
-
-<PRE CLASS="command">
-lp -o nowrap filename
-lpr -o nowrap filename
-</PRE>
-
-
 </BODY>
 </HTML>
index 367434d..a5240fc 100644 (file)
@@ -49,7 +49,7 @@ different ways.</P>
 
 <P>Click on the <var>Administration</var> tab. Click on the <var>Add Printer</var> button and follow the prompts.</P>
 
-<BLOCKQUOTE>When you are asked for a username and password, enter your login username and password or the "root" username and password. On OS X<sup>&reg;</sup>, the login username (or "short name") is typically your first and last name in lowercase.</BLOCKQUOTE>
+<BLOCKQUOTE>When you are asked for a username and password, enter your login username and password or the "root" username and password. On macOS<sup>&reg;</sup>, the login username (or "short name") is typically your first and last name in lowercase.</BLOCKQUOTE>
 
 <P>After the printer is added, CUPS will ask you to set the default printer
 options (paper size, output mode, etc.) for the printer. Make any changes as
index 1469f45..7404b83 100644 (file)
@@ -5,7 +5,7 @@
        <title>Developing PostScript Printer Drivers    </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id$"
-
   PostScript printer driver documentation for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -369,7 +367,7 @@ div.contents ul.subcontents li {
 
 <h1 class='title'>Developing PostScript Printer Drivers</h1>
 
-<p>This document describes how to develop printer drivers for PostScript printers. Topics include: <a href='#BASICS'>printer driver basics</a>, <a href='#CREATE'>creating new PPD files</a>, <a href='#IMPORT'>importing existing PPD files</a>, <a href='#FILTERS'>using custom filters</a>, <a href='#COLOR'>implementing color management</a>, and <a href='#MACOSX'>adding OS X features</a>.</p>
+<p>This document describes how to develop printer drivers for PostScript printers. Topics include: <a href='#BASICS'>printer driver basics</a>, <a href='#CREATE'>creating new PPD files</a>, <a href='#IMPORT'>importing existing PPD files</a>, <a href='#FILTERS'>using custom filters</a>, <a href='#COLOR'>implementing color management</a>, and <a href='#MACOSX'>adding macOS features</a>.</p>
 
 <div class='summary'><table summary='General Information'>
 <tbody>
@@ -392,7 +390,7 @@ div.contents ul.subcontents li {
 </ul></li>
 <li><a href="#FILTERS">Using Custom Filters</a></li>
 <li><a href="#COLOR">Implementing Color Management</a></li>
-<li><a href="#MACOSX">Adding OS X Features</a></li>
+<li><a href="#MACOSX">Adding macOS Features</a></li>
 </ul>
 <h2 class='title'><a name='BASICS'>Printer Driver Basics</a></h2>
 
@@ -660,9 +658,9 @@ information file.</P>
 <p>The options used for profile selection can be customized using the <tt>cupsICCQualifier2</tt> and <tt>cupsICCQualifier3</tt> attributes.</p>
 
 
-<h2 class='title'><a name='MACOSX'>Adding OS X Features</a></h2>
+<h2 class='title'><a name='MACOSX'>Adding macOS Features</a></h2>
 
-<p>OS X printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>
+<p>macOS printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>
 
 <pre class='example'>
 <a href='ref-ppdcfile.html#Attribute'>Attribute</a> APDialogExtension "" /Library/Printers/Vendor/filename.plugin
index 729e268..52ad901 100644 (file)
@@ -5,7 +5,7 @@
        <title>Introduction to the PPD Compiler </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id$"
-
   PPD compiler documentation for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -616,7 +614,7 @@ follows:</P>
 
        <LI>Bits per color. In the example file, we define 8 bits per color, for
        a continuous-tone grayscale output. All versions of CUPS support 1 and
-       8 bits per color.  CUPS 1.2 and higher (OS X 10.5 and higher) also
+       8 bits per color.  CUPS 1.2 and higher (macOS 10.5 and higher) also
        supports 16 bits per color.</LI>
 
        <LI>Rows per band. In the example file, we define 0 rows per band to
index 8055705..92157c1 100644 (file)
@@ -5,7 +5,7 @@
        <title>Developing Raster Printer Drivers        </title>
        <meta name="keywords" content="Programming">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id$"
-
   Raster printer driver documentation for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -369,7 +367,7 @@ div.contents ul.subcontents li {
 
 <h1 class='title'>Developing Raster Printer Drivers</h1>
 
-<p>This document describes how to develop printer drivers for raster printers. Topics include: <a href='#BASICS'>printer driver basics</a>, <a href='#CREATE'>creating new PPD files</a>, <a href='#FILTERS'>using filters</a>, <a href='#COLOR'>implementing color management</a>, and <a href='#MACOSX'>adding OS X features</a>.</p>
+<p>This document describes how to develop printer drivers for raster printers. Topics include: <a href='#BASICS'>printer driver basics</a>, <a href='#CREATE'>creating new PPD files</a>, <a href='#FILTERS'>using filters</a>, <a href='#COLOR'>implementing color management</a>, and <a href='#MACOSX'>adding macOS features</a>.</p>
 
 <div class='summary'><table summary='General Information'>
 <tbody>
@@ -390,7 +388,7 @@ div.contents ul.subcontents li {
 <li><a href="#CREATING">Creating New PPD Files</a></li>
 <li><a href="#FILTERS">Using Filters</a></li>
 <li><a href="#COLOR">Implementing Color Management</a></li>
-<li><a href="#MACOSX">Adding OS X Features</a></li>
+<li><a href="#MACOSX">Adding macOS Features</a></li>
 </ul>
 <h2 class='title'><a name='BASICS'>Printer Driver Basics</a></h2>
 
@@ -566,9 +564,9 @@ div.contents ul.subcontents li {
 
 <p>The options used for profile selection can be customized using the <tt>cupsICCQualifier2</tt> and <tt>cupsICCQualifier3</tt> attributes.</p>
 
-<h3><span class='info'>Since OS X 10.5</span>Custom Color Matching Support</h3>
+<h3><span class='info'>Since macOS 10.5</span>Custom Color Matching Support</h3>
 
-<p>OS X printer drivers that are based on an existing standard RGB colorspace can tell the system to use the corresponding colorspace instead of an arbitrary ICC color profile when doing color management. The <a href='#APCustom'><tt>APSupportsCustomColorMatching</tt></a> and <tt>APDefaultCustomColorMatchingProfile</tt> attributes can be used to enable this mode:</p>
+<p>macOS printer drivers that are based on an existing standard RGB colorspace can tell the system to use the corresponding colorspace instead of an arbitrary ICC color profile when doing color management. The <a href='#APCustom'><tt>APSupportsCustomColorMatching</tt></a> and <tt>APDefaultCustomColorMatchingProfile</tt> attributes can be used to enable this mode:</p>
 
 <pre class='example'>
 <a href='ref-ppdcfile.html#Attribute'>Attribute</a> APSupportsCustomColorMatching "" true
@@ -576,9 +574,9 @@ div.contents ul.subcontents li {
 </pre>
 
 
-<h2 class='title'><a name='MACOSX'>Adding OS X Features</a></h2>
+<h2 class='title'><a name='MACOSX'>Adding macOS Features</a></h2>
 
-<p>OS X printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>
+<p>macOS printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>
 
 <pre class='example'>
 <a href='ref-ppdcfile.html#Attribute'>Attribute</a> APDialogExtension "" /Library/Printers/Vendor/filename.plugin
index 1c77a73..6c84abd 100644 (file)
@@ -434,7 +434,7 @@ suffixes:</p>
 <p>The <code>#po</code> directive defines a message catalog to use for the
 given POSIX language abbreviation. Multiple <code>#po</code> directives can be
 specified to list multiple catalogs. The filename can be an absolute path or
-relative to the driver information file. GNU gettext and OS X .strings
+relative to the driver information file. GNU gettext and macOS .strings
 files are supported.</p>
 
 
@@ -2414,8 +2414,8 @@ supported keywords for each type.</p>
 
        <BR>&nbsp;
 
-       <BR><A NAME="REF_COLOR_APPLE">*</A> = This colorspace is not supported on OS X prior to 10.4.
-       <BR><A NAME="REF_COLOR_APPLE2">**</A> = This colorspace is not supported on OS X.</LI>
+       <BR><A NAME="REF_COLOR_APPLE">*</A> = This colorspace is not supported on macOS prior to 10.4.
+       <BR><A NAME="REF_COLOR_APPLE2">**</A> = This colorspace is not supported on macOS.</LI>
 
 </UL>
 
@@ -2441,7 +2441,7 @@ supported keywords for each type.</p>
        <BR><A NAME="REF_COLOR_APPLE2">*</A> = This color order
        is not supported by the current Apple RIP filters and
        should not be used when developing printer drivers for
-       OS X.</LI>
+       macOS.</LI>
 
 </UL>
 
index d96cbf0..d5d22e2 100644 (file)
@@ -33,7 +33,7 @@ server.</P>
 
        <P><B>Recommendation:</B> Enable encryption to hide the
        username and password information - this is the default on
-       MacOS X and systems with GNU TLS or OpenSSL installed.</P></LI>
+       MacmacOS and systems with GNU TLS or OpenSSL installed.</P></LI>
 
        <LI>Local certificate authentication passes 128-bit
        "certificates" that identify an authenticated user.
@@ -117,7 +117,7 @@ variety of denial of service attacks:</P>
 
 <H2 CLASS="title"><A NAME="ENCRYPTION">Encryption Issues</A></H2>
 
-<P>CUPS supports 128-bit TLS encryption of network connections via the GNU TLS library, OS X Security framework, and Windows Schannel APIs. Secure deployment of TLS depends on proper certificate management and software maintenance.</P>
+<P>CUPS supports 128-bit TLS encryption of network connections via the GNU TLS library, macOS Security framework, and Windows Schannel APIs. Secure deployment of TLS depends on proper certificate management and software maintenance.</P>
 
 </BODY>
 </HTML>
index e13cfed..9763da7 100644 (file)
@@ -49,7 +49,7 @@ lpadmin -p printer -o printer-op-policy=authenticated
 <h2><a name="AUTO_IPP">Automatic Configuration using IPP</a></h2>
 
 <blockquote><b>Note:</b>
-<p>This method of configuration does not work on OS X 10.7 or later because sandboxed applications do not always have direct network access.</p>
+<p>This method of configuration does not work on macOS 10.7 or later because sandboxed applications do not always have direct network access.</p>
 </blockquote>
 
 <p>CUPS can be configured to run without a local spooler and send all jobs to a
@@ -91,7 +91,7 @@ port. The environment variable overrides both the user and system
 <h2><a name="MANUAL">Manual Configuration of Print Queues</a></h2>
 
 <blockquote><b>Note:</b>
-<p>This method of configuration does not work on OS X 10.7 or later because sandboxed applications do not always have direct network access.</p>
+<p>This method of configuration does not work on macOS 10.7 or later because sandboxed applications do not always have direct network access.</p>
 </blockquote>
 
 <p>The most tedious method of configuring client machines is to configure
index 65b0961..e9cb0e8 100644 (file)
@@ -8,8 +8,6 @@
 </head>
 <body>
 <!--
-  "$Id$"
-
   Banner file format specification for CUPS.
 
   Copyright 2008-2011 by Apple Inc.
diff --git a/doc/help/spec-cmp.html b/doc/help/spec-cmp.html
deleted file mode 100644 (file)
index d2a44ac..0000000
+++ /dev/null
@@ -1,885 +0,0 @@
-<!DOCTYPE html>
-<HTML>
-<!-- SECTION: Specifications -->
-<HEAD>
-       <TITLE>CUPS Developer Guide</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="../cups-printable.css">
-</HEAD>
-<BODY>
-
-<H1 CLASS="title">CUPS Developer Guide</H1>
-
-<P>This developer guide documents the guidelines and processes we use when developing and maintaining CUPS and related software. Our goal is to provide reliable and efficient software and documentation that addresses the needs of our users.</P>
-
-
-<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 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>
-
-<P>CUPS interfaces, including the C APIs and command-line arguments, environment variables, configuration files, and output format, are stable across patch versions and are generally backwards-compatible with interfaces used in prior major and minor versions. However, program interfaces such as those used by the scheduler to run filter, port monitor, and backend processes for job processing should only be considered stable from the point of view of a filter, port monitor, or backend. Software that simulates the scheduler in order to run those programs outside of CUPS must necessarily be updated when the corresponding interface is changed in a subsequent CUPS release, otherwise undefined behavior can occur.</P>
-
-<P>CUPS C APIs starting with an underscore (_) are considered to be private to CUPS and are not subject to the normal guarantees of stability between CUPS releases and must <em>never</em> be used in non-CUPS source code. Similarly, configuration and state files written by CUPS are considered private if a corresponding man page is not provided with the CUPS release. <em>Never</em> rely on undocumented files or formats when developing software for CUPS. <em>Always</em> use a published C API to access data stored in a file to avoid compatibility problems in the future.</P>
-
-
-<H2 CLASS="title"><A NAME="COMMUNICATION">Communication</A></H2>
-
-<H3><A NAME="CONTACT">How to Contact the Developers</A></H3>
-
-<P>The <A HREF="https://www.cups.org/lists.php">CUPS.org mailing lists</A> are the primary means of asking questions and informally discussing issues and feature requests with the CUPS developers and other experienced CUPS users and developers. The <a href="https://www.cups.org/mailman/listinfo/cups">cups&#x40;cups.org</a> mailing list is intended for CUPS usage questions and new software announcements while the <a href="https://www.cups.org/mailman/listinfo/cups-devel">cups-devel&#x40;cups.org</a> mailing list provides a forum for CUPS developers and monitoring new bugs.</p>
-
-
-<H3><A NAME="SUBMIT">How to Submit a Bug Report or Feature Request</A></H3>
-
-<P>The CUPS.org <A HREF="https://www.cups.org/str.php">Bugs</A> page provides access to the CUPS <em>Software Trouble Report</em> (STR) database and is the formal way to submit a bug report or feature request to the CUPS developers. Please note, however, that we <em>do not</em> provide answers to usage questions or resolve problems in third-party software on this page - use the <A HREF="#CONTACT">CUPS.org mailing lists</A> for that instead.</P>
-
-<P>Unlike discussions that occur on the CUPS.org mailing lists, formal bug reports and feature requests must be acted on by the CUPS developers. This does not mean that every bug report is resolved or every feature request is implemented, but we do respond and keep track of them all for posterity.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>Please use the search feature of the Bugs page before submitting a new bug report or feature request. If you see an existing report that matches your issue, please post a message to that report ("I have this issue as well", "I would also like to see", etc.) rather than submitting a new report. This helps speed the resolution of your issue by reducing the CUPS developers' work load and identifying popular issues.</P></BLOCKQUOTE>
-
-
-<H3><A NAME="PATCH">How to Prepare a Patch</A></H3>
-
-<P>When submitting a bug report or feature request, you can include patch files that resolve the bug or implement the feature to speed the inclusion of that bug fix or feature in a new CUPS release. For changes to existing files, we prefer a unified diff against the current GIT "master" branch, which can be generated easily using the following Git command:</P>
-
-<PRE CLASS="command">
-git format-patch remotes/trunk >filename.patch
-</PRE>
-
-<P>If you produce a patch using a released source archive, use one of the following commands instead:</P>
-
-<PRE CLASS="command">
-diff -u oldfilename filename >filename.patch
-
-diff -urN olddirectory directory >filename.patch
-</PRE>
-
-<P>New files and files with significant changes can be submitted in their entirety, however that may delay the adoption of your changes.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>Patches and files must conform to the standards outlined in the "<A HREF="#CODING">Coding Guidelines</A>" and "<A HREF="#MAKEFILES">Makefile Guidelines</A>" sections in this document. In addition, since Apple Inc. provides CUPS under multiple licenses, we require that you <A HREF="https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf">license</A> significant changes and files to us for inclusion in CUPS. The CUPS developers will inform you if licensing is required.</P></BLOCKQUOTE>
-
-
-<H2 CLASS="title"><A NAME="PRACTICES">Software Development Practices</A></H2>
-
-<H3><A NAME="VERSIONS">Version Numbering</A></H3>
-
-<P>CUPS uses a three-part version number separated by periods to represent the major, minor, and patch release numbers. Major release numbers indicate large design changes or backwards-incompatible changes to the CUPS API or CUPS Imaging API. Minor release numbers indicate new features and other smaller changes which are backwards-compatible with previous CUPS releases. Patch numbers indicate bug fixes to the previous feature release.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>When we talk about compatibility, we are talking about binary compatibility for public APIs and output format compatibility for program interfaces. Changes to configuration file formats or the default behavior of programs are not generally considered incompatible as the upgrade process can normally address such changes gracefully.</P></BLOCKQUOTE>
-
-<P>Production releases use the plain version numbers:</P>
-
-<PRE CLASS="command">
-MAJOR.MINOR.PATCH
-1.0.0
-1.0.1
-1.0.2
-...
-1.1.0
-...
-1.1.23
-1.2.0
-1.2.1
-...
-1.3.0
-...
-2.0.0
-</PRE>
-
-<P>The first production release in a MAJOR.MINOR series (MAJOR.MINOR.0) is called a feature release. Feature releases are the only releases that may contain new features. Subsequent production releases in a MAJOR.MINOR series may only contain bug fixes.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>We did not hold to this limitation in the CUPS 1.1 series for a variety of reasons. Starting with CUPS 1.2, the "no new features in a patch release" policy has been strictly enforced. The policy has also resulted in fewer new features (and interactions!) to validate/test in the subsequence feature releases.</P></BLOCKQUOTE>
-
-<P>Beta-test releases are identified by appending the letter B to the major and minor version numbers followed by the beta release number:</P>
-
-<PRE CLASS="command">
-MAJOR.MINORbNUMBER
-1.2b1
-</PRE>
-
-<P>Release candidates are identified by appending the letters RC to the major and minor version numbers followed by the release candidate number:</P>
-
-<PRE CLASS="command">
-MAJOR.MINORrcNUMBER
-1.2rc1
-</PRE>
-
-<P>Developer snapshots are identified by appending the letters SVN-R to the major and minor version numbers followed by the revision number:</P>
-
-<PRE CLASS="command">
-MAJOR.MINORsvn-rREV
-1.2svn-r1234
-</PRE>
-
-<P>Beta-test releases, release candidates, and developer snapshots are only created for new minor releases. Once a production release has been made (MAJOR.MINOR.0), subsequent patch releases are issued without preliminary beta or release testing.</P>
-
-<H3>Version Control (Subversion)</H3>
-
-<P>The CUPS source files are managed by the Subversion ("SVN") software, available at:</P>
-
-<PRE CLASS="command">
-<A HREF="http://subversion.apache.org/" TARGET="_blank">subversion.apache.org</A>
-</PRE>
-
-<p>A public read-only Git mirror is maintained for external developers. Details can be found on the CUPS.org <a href="https://www.cups.org/software.php">Software</a> page.</P>
-
-<P>Source files are "checked in" with each change so that modifications can be tracked, and each checkin must reference any applicable STRs. The following format <em>must</em> be used for commit log messages:</P>
-
-<PRE CLASS="command">
-Summary of the change on one line followed by bug number (STR #NNNN)
-
-Detailed list of changes.
-</PRE>
-
-<P>Primary development occurs on the <var>trunk</var> branch, with changes merged back to release branches as needed.</P>
-
-<P>The branch for a MAJOR.MINOR release are created when the first production release (MAJOR.MINOR.0) is made using the name "branch-MAJOR.MINOR". Release tags are created for every beta, candidate, and production release using the name "release-MAJOR.MINORbNUMBER", "release-MAJOR.MINORrcNUMBER", or "release-MAJOR.MINOR.PATCH", respectively. No release tags are created for developer snapshots.</P>
-
-
-<H3>Files and Directories</H3>
-
-<P>File and directory names may not exceed 16 characters in length to ensure compatibility with older UNIX filesystems. In addition, to avoid problems with case-insensitive filesystems, you may not use names which differ only by case, for example "ReadMe" and "README" are not allowed in the same directory.</P>
-
-<P>Source files must be documented and formatted as described in "<A HREF="#CODING">Coding Requirements</A>". Makefiles must follow the guidelines in "<A HREF="#MAKEFILE">Makefile Guidelines</A>".</P>
-
-
-<H3>Build System</H3>
-
-<P>The CUPS build system uses <A HREF="http://www.gnu.org/software/autoconf/">GNU autoconf</A> to tailor the library to the local operating system. Project files for the current release of Microsoft Visual Studio are also provided for Microsoft Windows<SUP>&reg;</SUP>. To improve portability, makefiles must not make use of features unique to <A HREF="http://www.gnu.org/software/make/">GNU make</A>. See the <A HREF="#MAKEFILES">Makefile Guidelines</A> section for a description of the allowed make features and makefile guidelines.</P>
-
-<P>Additional GNU build programs such as <A HREF="http://www.gnu.org/software/automake">GNU automake</A> and <A HREF="http://www.gnu.org/software/libtool">GNU libtool</A> must not be used. GNU automake produces non-portable makefiles which depend on GNU-specific extensions, and GNU libtool is not portable or reliable enough for CUPS.</P>
-
-
-<H3><A NAME="PACKAGING">Packaging</A></H3>
-
-<P>Source packages are created using the <VAR>tools/makesrcdist</VAR> script in the Subversion repository. The script optionally uses a version number argument:</P>
-
-<PRE CLASS="command">
-tools/makesrcdist
-tools/makesrcdist <I>version</I>
-</PRE>
-
-<P>When run with no arguments, the script creates a snapshot of the current working copy and names it using the highest revision number in the WC, for example "/tmp/cups-1.3svn-r1234-source.tar.bz2" and "/tmp/cups-1.3svn-r1234-source.tar.gz". When run with two arguments, the script creates a release tag in the repository and exports that tag, creating the files
-"/tmp/cups-<I>version</I>-source.tar.bz2" and "/tmp/cups-<I>version</I>-source.tar.gz".</P>
-
-<P>Binary packages are not generally distributed by the CUPS team, however the <VAR>packaging/cups.spec</VAR> and <VAR>packaging/cups.list</VAR> files may be used to create binary packages on Linux, OS X, and UNIX. The <VAR>packaging/cups.spec</VAR> file produces a binary package using the <CODE>rpmbuild(8)</CODE> software:</P>
-
-<PRE CLASS="command">
-rpmbuild -ta cups-<I>version</I>-source.tar.gz
-</PRE>
-
-<P>The <VAR>cups.list</VAR> file is generated by the <VAR>configure</VAR> script and produces binary packages for many platforms using the <A HREF="https://www.msweet.org/projects.php?Z2" TARGET="_blank">EPM</A> software. Table 3 shows the targets that are available for each type of binary package:</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="Binary Package Targets">
-<CAPTION>Table 3: Binary Package Targets</CAPTION>
-<TR>
-       <TH>Target</TH>
-       <TH>Type of Package</TH>
-</TR>
-<TR>
-       <TD>bsd</TD>
-       <TD>*BSD pkg_install</TD>
-</TR>
-<TR>
-       <TD>deb</TD>
-       <TD>Debian dpkg</TD>
-</TR>
-<TR>
-       <TD>epm</TD>
-       <TD>Portable tarball with install script</TD>
-</TR>
-<TR>
-       <TD>pkg</TD>
-       <TD>Solaris pkgadd</TD>
-</TR>
-<TR>
-       <TD>rpm</TD>
-       <TD>RPM binary</TD>
-</TR>
-<TR>
-       <TD>slackware</TD>
-       <TD>Slackware install</TD>
-</TR>
-</TABLE></DIV>
-
-<P>Finally, the <VAR>tools/testrpm</VAR> and <VAR>tools/testosx</VAR> scripts can be used to create binary packages from the current working copy for testing on Linux and OS X, respectively:</P>
-
-<PRE CLASS="command">
-tools/testrpm
-sudo rpm -U /usr/src/redhat/RPMS/{arm,i386,x64_64}/cups*.rpm
-
-sudo tools/testosx
-open cups.pkg
-</PRE>
-
-
-<H3><A NAME="TESTING">Testing</A></H3>
-
-<P>Software testing is conducted according to the <A HREF="spec-stp.html">CUPS Software Test Plan</A>. This testing is automated via the top-level makefile <VAR>test</VAR> target:</P>
-
-<PRE CLASS="command">
-make test
-</PRE>
-
-<P>The test environment allows for both short-term automated testing and long-term testing and development without the automated test script.</P>
-
-
-<H2 CLASS="title"><A NAME="STR">Trouble Report Processing</A></H2>
-
-<P>A Software Trouble Report ("STR") must be submitted every time a user or vendor experiences a problem with the CUPS software. Trouble reports are maintained on the <A HREF="https://www.cups.org/str.php" TARGET="_blank">Bugs</A> page with one of the following states:</P>
-
-<OL>
-
-       <LI>STR is closed with complete resolution</LI>
-
-       <LI>STR is closed without resolution</LI>
-
-       <LI>STR is active, waiting on information from submitter</LI>
-
-       <LI>STR is pending with additional information from submitter</LI>
-
-       <LI>STR is newly submitted</LI>
-
-</OL>
-
-<P>Trouble reports are processed using the following steps.</P>
-
-<H3>1. Classification</H3>
-
-<P>When a trouble report is received it must be classified at one of the following priority levels:</P>
-
-<OL>
-
-       <LI>Request for enhancement, e.g. asking for a feature
-
-       <LI>Low, e.g. a documentation error or undocumented side-effect
-
-       <LI>Moderate, e.g. unable to print a file or unable to compile the software
-
-       <LI>High, e.g. unable to print to a printer or key functionality not working
-
-       <LI>Critical, e.g. unable to print at all
-
-</OL>
-
-<P>Level 4 and 5 trouble reports must be resolved in the next software release. Level 2 and 3 trouble reports are scheduled for resolution in a specific release at the discretion of the release coordinator. Level 1 trouble reports are scheduled for resolution in a future feature release.</P>
-
-<P>The scope of the problem is also determined as:</P>
-
-<OL>
-
-       <LI>Specific to a machine or printer
-
-       <LI>Specific to an operating system
-
-       <LI>Applies to all machines, printers, and operating systems
-
-</OL>
-
-<H3>2. Identification</H3>
-
-<P>Once the level and scope of the trouble report is determined the software sub-system(s) involved with the problem are determined. This may involve additional communication with the user or vendor to isolate the problem to a specific cause.</P>
-
-<P>When the sub-system(s) involved have been identified, an engineer will then determine the change(s) needed and estimate the time required for the change(s).</P>
-
-<H3>3. Correction</H3>
-
-<P>Corrections are scheduled based upon the severity and complexity of the problem. Once all changes have been made, documented, and tested successfully a new software release snapshot is generated. Additional tests are added as necessary for proper testing of the changes.</P>
-
-<H3>4. Notification</H3>
-
-<P>The user or vendor is notified when the fix is available or if the problem was caused by user error.</P>
-
-
-<H2 CLASS="title"><A NAME="RELEASES">Release Management</A></H2>
-
-<P>When testing has been completed successfully, a new source package is created using the <VAR>tools/makesrcdist</VAR> script. Three types of releases - beta, candidate, and production - are created and released to the public using the basic schedule in Table 4. At least one beta and one release candidate must be created prior to a production release, and there must be at least two weeks between the last beta and first candidate and last candidate and first production release.</P>
-
-<DIV CLASS="table"><TABLE SUMMARY="CUPS Basic Release Schedule">
-<CAPTION>Table: CUPS Basic Release Schedule</CAPTION>
-<TR>
-       <TH>Week</TH>
-       <TH>Version</TH>
-       <TH>Description</TH>
-</TR>
-<TR>
-       <TD>T-6 weeks</TD>
-       <TD>1.2b1</TD>
-       <TD>First beta release</TD>
-</TR>
-<TR>
-       <TD>T-5 weeks</TD>
-       <TD>1.2b2</TD>
-       <TD>Second beta release</TD>
-</TR>
-<TR>
-       <TD>T-3 weeks</TD>
-       <TD>1.2rc1</TD>
-       <TD>First release candidate</TD>
-</TR>
-<TR>
-       <TD>T-2 weeks</TD>
-       <TD>1.2rc2</TD>
-       <TD>Second release candidate</TD>
-</TR>
-<TR>
-       <TD>T-0 weeks</TD>
-       <TD>1.2.0</TD>
-       <TD>Production (feature) release</TD>
-</TR>
-</TABLE></DIV>
-
-
-<H2 CLASS="title"><A NAME="CODING">Coding Guidelines</A></H2>
-
-<P>These coding guidelines provide detailed information on source file formatting and documentation content and must be applied to all C and C++ source files provided with CUPS. Source code for other languages should conform to these guidelines as allowed by the language.</P>
-
-
-<H3>Source Files</H3>
-
-<P>All source files names must be 16 characters or less in length to ensure compatibility with older UNIX filesystems. Source files containing functions have an extension of ".c" for ANSI C and ".cxx" for C++ source files. All other "include" files have an extension of ".h". Tabs are set to 8 characters.</P>
-
-<BLOCKQUOTE><B>Note:</B>
-
-<P>The ".cxx" extension is used because it is the only common C++ extension between Linux, OS X, UNIX, and Windows.</P></BLOCKQUOTE>
-
-<P>The top of each source file contains a header giving the name of the file, the purpose or nature of the source file, and the copyright and licensing notice.  The file name and revision information is provided by the Subversion "&#36;Id$" tag:</P>
-
-<PRE CLASS="command">
-/*
- * "&#36;Id$"
- *
- * Description of file contents.
- *
- * Copyright 2013 by Apple Inc.
- *
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- * which should have been included with this file.  If this file is
- * file is missing or damaged, see the license at "http://www.cups.org/".
- */
-</PRE>
-
-<P>For source files that are subject to the Apple OS-Developed Software exception, the following additional comment appears after the contact information:</P>
-
-<PRE CLASS="command">
- * This file is subject to the Apple OS-Developed Software exception.
-</PRE>
-
-<P>The bottom of each source file contains a trailer giving the name of the file using the Subversion "&#36;Id$" tag. The primary purpose of this is to mark the end of a source file; if the trailer is missing it is possible that code has been lost near the end of the file:</P>
-
-<PRE CLASS="command">
-/*
- * End of "&#36;Id$".
- */
-</PRE>
-
-
-<H3>Header Files</H3>
-
-<P>All public header files must include the <var>versioning.h</var> header file, or a header that does so. Function declarations are then "decorated" with the correct <tt>_CUPS_API_major_minor</tt> macro to define its availability based on the build environment, for example:</p>
-
-<PRE CLASS="command">
-extern int cupsDoThis(int foo, int bar) _CUPS_API_2_0;
-</PRE>
-
-<P>Private API header files must be named with the suffix "-private", for example the <var>cups.h</var> header file defines all of the public CUPS APIs while the <var>cups-private.h</var> header file defines all of the private CUPS APIs as well. Typically a private API header file will include the corresponding public API header file.</P>
-
-
-<H3>Comments</H3>
-
-<P>All source code utilizes block comments within functions to describe the operations being performed by a group of statements; avoid putting a comment per line unless absolutely necessary, and then consider refactoring the code so that it is not necessary.  C source files use the block comment format ("/* comment */") since many vendor C compilers still do not support C99/C++ comments ("// comment"):</P>
-
-<PRE CLASS="command">
- /*
-  * Clear the state array before we begin...
-  */
-
-  for (i = 0; i &lt; (sizeof(array) / sizeof(sizeof(array[0])); i ++)
-    array[i] = CUPS_STATE_IDLE;
-
- /*
-  * Wait for state changes on another thread...
-  */
-
-  do
-  {
-    for (i = 0; i &lt; (sizeof(array) / sizeof(sizeof(array[0])); i ++)
-      if (array[i] != CUPS_STATE_IDLE)
-        break;
-
-    if (i == (sizeof(array) / sizeof(array[0])))
-      sleep(1);
-  } while (i == (sizeof(array) / sizeof(array[0])));
-</PRE>
-
-<H3>Indentation</H3>
-
-<P>All code blocks enclosed by brackets begin with the opening brace on a new line. The code then follows starting on a new line after the brace and is indented 2 spaces. The closing brace is then placed on a new line following the code at the original indentation:</P>
-
-<PRE CLASS="command">
-{
-  int i; /* Looping var */
-
-
- /*
-  * Process foobar values from 0 to 999...
-  */
-
-  for (i = 0; i &lt; 1000; i ++)
-  {
-    do_this(i);
-    do_that(i);
-  }
-}
-</PRE>
-
-<P>Single-line statements following "do", "else", "for", "if", and "while" are indented 2 spaces as well. Blocks of code in a "switch" block are indented 4 spaces after each "case" and "default" case:</P>
-
-<PRE CLASS="command">
-switch (array[i])
-{
-  case CUPS_STATE_IDLE :
-      do_this(i);
-      do_that(i);
-      break;
-  default :
-      do_nothing(i);
-      break;
-}
-</PRE>
-
-
-<H3>Spacing</H3>
-
-<P>A space follows each reserved word such as "if", "while", etc. Spaces are not inserted between a function name and the arguments in parenthesis.</P>
-
-
-<H3>Return Values</H3>
-
-<P>Parenthesis surround values returned from a function:</P>
-
-<PRE CLASS="command">
-return (CUPS_STATE_IDLE);
-</PRE>
-
-
-<H3>Functions</H3>
-
-<P>Functions with a global scope have a lowercase prefix followed by capitalized words, e.g., "cupsDoThis", "cupsDoThat", "cupsDoSomethingElse", etc. Private global functions begin with a leading underscore, e.g., "_cupsDoThis", "_cupsDoThat", etc.</P>
-
-<P>Functions with a local scope are declared "static" with lowercase names and underscores between words, e.g., "do_this", "do_that", "do_something_else", etc.</P>
-
-<P>Each function begins with a comment header describing what the function does, the possible input limits (if any), and the possible output values (if any), and any special information needed:</P>
-
-<PRE CLASS="command">
-/*
- * 'do_this()' - Compute y = this(x).
- *
- * Notes: none.
- */
-
-static float                            /* O - Inverse power value, 0.0 &lt;= y &lt;= 1.1 */
-do_this(float x)                        /* I - Power value (0.0 &lt;= x &lt;= 1.1) */
-{
-  ...
-  return (y);
-}
-</PRE>
-
-<P>Return/output values are indicated using an "O" prefix, input values are indicated using the "I" prefix, and values that are both input and output use the "IO" prefix for the corresponding in-line comment.</P>
-
-<P>The Mini-XML documentation generator also understands the following special text in the function description comment:</P>
-
-<UL>
-
-       <LI><CODE>@deprecated@</CODE> - Marks the function as deprecated (not recommended for new development and scheduled for removal)</LI>
-
-       <LI><CODE>@since CUPS <I>version</I>@</CODE> - Marks the function as new in the specified version of CUPS.</LI>
-
-       <LI><CODE>@private@</CODE> - Marks the function as private (same as starting the function name with an underscore)</LI>
-
-</UL>
-
-
-<H3>Variables</H3>
-
-<P>Variables with a global scope are capitalized, e.g., "ThisVariable", "ThatVariable", "ThisStateVariable", etc. Globals in CUPS libraries are either part of the per-thread global values managed by the "_cupsGlobals()" function or are suitably protected for concurrent access. Global variables should be replaced by function arguments whenever possible.</P>
-
-<P>Variables with a local scope are lowercase with underscores between words, e.g., "this_variable", "that_variable", etc. Any "local global" variables shared by functions within a source file are declared "static". As for global variables, local static variables are suitably protected for concurrent access.</P>
-
-<P>Each variable is declared on a separate line and is immediately followed by a comment block describing the variable:</P>
-
-<PRE CLASS="command">
-int         ThisVariable;    /* The current state of this */
-static int  that_variable;   /* The current state of that */
-</PRE>
-
-
-<H3>Types</H3>
-
-<P>All type names are lowercase with underscores between words and "_t" appended to the end of the name, e.g., "cups_this_type_t", "cups_that_type_t", etc. Type names start with a prefix, typically "cups" or the name of the program, to avoid conflicts with system types. Private type names start with an underscore, e.g., "_cups_this_t", "_cups_that_t", etc.</P>
-
-<P>Each type has a comment block immediately after the typedef:</P>
-
-<PRE CLASS="command">
-typedef int cups_this_type_t;       /* This type is for CUPS foobar options. */
-</PRE>
-
-
-<H3>Structures</H3>
-
-<P>All structure names are lowercase with underscores between words and "_s" appended to the end of the name, e.g., "cups_this_s", "cups_that_s", etc. Structure names start with a prefix, typically "cups" or the name of the program, to avoid conflicts with system types. Private structure names start with an underscore, e.g., "_cups_this_s", "_cups_that_s", etc.</P>
-
-<P>Each structure has a comment block immediately after the struct and each member is documented similar to the variable naming policy above:</P>
-
-<PRE CLASS="command">
-struct cups_this_struct_s     /* This structure is for CUPS foobar options. */
-{
-  int this_member;            /* Current state for this */
-  int that_member;            /* Current state for that */
-};
-</PRE>
-
-
-<H3>Constants</H3>
-
-<P>All constant names are uppercase with underscores between words, e.g., "CUPS_THIS_CONSTANT", "CUPS_THAT_CONSTANT", etc. Constants begin with an uppercase prefix, typically "CUPS" or the program name. Private constants start with an underscore, e.g., "_CUPS_THIS_CONSTANT", "_CUPS_THAT_CONSTANT", etc.</P>
-
-<P>Typed enumerations should be used whenever possible to allow for type checking by the compiler.</P>
-
-<P>Comment blocks immediately follow each constant:</P>
-
-<PRE CLASS="command">
-enum
-{
-  CUPS_THIS_TRAY,                       /* This tray */
-  CUPS_THAT_TRAY                        /* That tray */
-};
-</PRE>
-
-
-<H2 CLASS="title"><A NAME="MAKEFILES">Makefile Guidelines</A></H2>
-
-<P>The following is a guide to the makefile-based build system used by CUPS. These standards have been developed over the years to allow CUPS to be built on as many systems and environments as possible.</P>
-
-
-<H3>General Organization</H3>
-
-<P>The CUPS source code is organized functionally into a top-level makefile, include file, and subdirectories each with their own makefile and dependencies files. The ".in" files are template files for the <CODE>autoconf</CODE> software and are used to generate a static version of the corresponding file.</P>
-
-
-<H3>Makefile Documentation</H3>
-
-<P>Each makefile starts with the standard CUPS header containing the Subversion "&#36;Id$" keyword, description of the file, and CUPS copyright and license notice:</P>
-
-<PRE CLASS="command">
-#
-# "&#36;Id$"
-#
-# Makefile for ...
-#
-# Copyright 2013 by Apple Inc.
-#
-# These coded instructions, statements, and computer programs are the
-# property of Apple Inc. and are protected by Federal copyright
-# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-# which should have been included with this file.  If this file is
-# file is missing or damaged, see the license at "http://www.cups.org/".
-#
-</PRE>
-
-<P>The end of each makefile has a comment saying:</P>
-
-<PRE CLASS="command">
-#
-# End of "&#36;Id$".
-#
-</PRE>
-
-<P>The purpose of the trailer is to indicate the end of the makefile so that truncations are immediately obvious.</P>
-
-
-<H3>Portable Makefile Construction</H3>
-
-<P>CUPS uses a common subset of make program syntax to ensure that the software can be compiled "out of the box" on as many systems as possible. The following is a list of assumptions we follow when constructing makefiles:</P>
-
-<UL>
-
-       <LI><b>Targets</b>; we assume that the make program supports the notion of simple targets of the form "name:" that perform tab-indented commands that follow the target, e.g.:
-       <PRE CLASS="command">
-target:
-&rarr; target commands</PRE></LI>
-
-       <LI><b>Dependencies</b>; we assume that the make program supports recursive dependencies on targets, e.g.:
-       <PRE CLASS="command">
-target: foo bar
-&rarr; target commands
-
-foo: bla
-&rarr; foo commands
-
-bar:
-&rarr; bar commands
-
-bla:
-&rarr; bla commands</PRE></LI>
-
-       <LI><b>Variable Definition</b>; we assume that the make program supports variable definition on the command-line or in the makefile using the following form:
-       <PRE CLASS="command">
-name=value</PRE>
-
-       <LI><b>Variable Substitution</b>; we assume that the make program supports variable substitution using the following forms:
-       <UL>
-               <LI><CODE>$(name)</CODE>; substitutes the value of "name",</LI>
-               <LI><CODE>($name:.old=.new)</CODE>; substitutes the value of "name"     with the filename extension ".old" changed to ".new",</LI>
-               <LI><CODE>$(MAKEFLAGS)</CODE>; substitutes the command-line options passed to the program without the leading hyphen (-),</LI>
-               <LI><CODE>$$</CODE>; substitutes a single <CODE>$</CODE> character,</LI>
-               <LI><CODE>$&lt;</CODE>; substitutes the current source file or dependency, and</LI>
-               <LI><CODE>$@</CODE>; substitutes the current target name.</LI>
-       </UL></LI>
-
-       <LI><b>Suffixes</b>; we assume that the make program supports filename suffixes with assumed dependencies, e.g.:
-       <PRE CLASS="command">
-.SUFFIXES: .c .o
-.c.o:
-&rarr; $(CC) $(CFLAGS) -o $@ -c $&lt;</PRE></LI>
-
-       <LI><b>Include Files</b>; we assume that the make program
-       supports the <CODE>include</CODE> directive, e.g.:
-       <PRE CLASS="command">
-include ../Makedefs
-include Dependencies</PRE></LI>
-
-       <LI><b>Comments</b>; we assume that comments begin with a <CODE>#</CODE> character and proceed to the end of the current line.</LI>
-
-       <LI><b>Line Length</b>; we assume that there is no practical limit to the length of lines.</LI>
-
-       <LI><b>Continuation of long lines</b>; we assume that the <CODE>\</CODE> character may be placed at the end of a line to concatenate two or more lines in a makefile to form a single long line.</LI>
-
-       <LI><b>Shell</b>; we assume a POSIX-compatible shell is present on the build system.</LI>
-
-</UL>
-
-
-<H3>Standard Variables</H3>
-
-<P>The following variables are defined in the "Makedefs" file generated by the <CODE>autoconf</CODE> software:</P>
-
-<UL>
-
-       <LI><CODE>ALL_CFLAGS</CODE>; the combined C compiler options,</LI>
-
-       <LI><CODE>ALL_CXXFLAGS</CODE>; the combined C++ compiler options,</LI>
-
-       <LI><CODE>AMANDIR</CODE>; the administrative man page installation directory (section 8/1m depending on the platform),</LI>
-
-       <LI><CODE>AR</CODE>; the library archiver command,</LI>
-
-       <LI><CODE>ARFLAGS</CODE>; options for the library archiver command,</LI>
-
-       <LI><CODE>AWK</CODE>; the local awk command,</LI>
-
-       <LI><CODE>BINDIR</CODE>; the binary installation directory,</LI>
-
-       <LI><CODE>BUILDROOT</CODE>; optional installation prefix (defaults to DSTROOT),</LI>
-
-       <LI><CODE>CC</CODE>; the C compiler command,</LI>
-
-       <LI><CODE>CFLAGS</CODE>; options for the C compiler command,</LI>
-
-       <LI><CODE>CHMOD</CODE>; the chmod command,</LI>
-
-       <LI><CODE>CXX</CODE>; the C++ compiler command,</LI>
-
-       <LI><CODE>CXXFLAGS</CODE>; options for the C++ compiler command,</LI>
-
-       <LI><CODE>DATADIR</CODE>; the data file installation directory,</LI>
-
-       <LI><CODE>DSO</CODE>; the C shared library building command,</LI>
-
-       <LI><CODE>DSOXX</CODE>; the C++ shared library building command,</LI>
-
-       <LI><CODE>DSOFLAGS</CODE>; options for the shared library building command,</LI>
-
-       <LI><CODE>INCLUDEDIR</CODE>; the public header file installation directory,</LI>
-
-       <LI><CODE>INSTALL</CODE>; the <CODE>install</CODE> command,</LI>
-
-       <LI><CODE>INSTALL_BIN</CODE>; the program installation command,</LI>
-
-       <LI><CODE>INSTALL_COMPDATA</CODE>; the compressed data file installation command,</LI>
-
-       <LI><CODE>INSTALL_CONFIG</CODE>; the configuration file installation command,</LI>
-
-       <LI><CODE>INSTALL_DATA</CODE>; the data file installation command,</LI>
-
-       <LI><CODE>INSTALL_DIR</CODE>; the directory installation command,</LI>
-
-       <LI><CODE>INSTALL_LIB</CODE>; the library installation command,</LI>
-
-       <LI><CODE>INSTALL_MAN</CODE>; the documentation installation command,</LI>
-
-       <LI><CODE>INSTALL_SCRIPT</CODE>; the shell script installation command,</LI>
-
-       <LI><CODE>LD</CODE>; the linker command,</LI>
-
-       <LI><CODE>LDFLAGS</CODE>; options for the linker,</LI>
-
-       <LI><CODE>LIBDIR</CODE>; the library installation directory,</LI>
-
-       <LI><CODE>LIBS</CODE>; libraries for all programs,</LI>
-
-       <LI><CODE>LN</CODE>; the <CODE>ln</CODE> command,</LI>
-
-       <LI><CODE>MAN1EXT</CODE>; extension for man pages in section 1,</LI>
-
-       <LI><CODE>MAN3EXT</CODE>; extension for man pages in section 3,</LI>
-
-       <LI><CODE>MAN5EXT</CODE>; extension for man pages in section 5,</LI>
-
-       <LI><CODE>MAN7EXT</CODE>; extension for man pages in section 7,</LI>
-
-       <LI><CODE>MAN8DIR</CODE>; subdirectory for man pages in section 8,</LI>
-
-       <LI><CODE>MAN8EXT</CODE>; extension for man pages in section 8,</LI>
-
-       <LI><CODE>MANDIR</CODE>; the man page installation directory,</LI>
-
-       <LI><CODE>OPTIM</CODE>; common compiler optimization options,</LI>
-
-       <LI><CODE>PRIVATEINCLUDE</CODE>; the private header file installation directory,</LI>
-
-       <LI><CODE>RM</CODE>; the <CODE>rm</CODE> command,</LI>
-
-       <LI><CODE>SHELL</CODE>; the <CODE>sh</CODE> (POSIX shell) command,</LI>
-
-       <LI><CODE>STRIP</CODE>; the <CODE>strip</CODE> command,</LI>
-
-       <LI><CODE>srcdir</CODE>; the source directory.</LI>
-
-</UL>
-
-
-<H3>Standard Targets</H3>
-
-<P>The following standard targets are defined in each makefile:</P>
-
-<UL>
-
-       <LI><CODE>all</CODE>; creates all target programs, libraries, and documentation files,</LI>
-
-       <LI><CODE>clean</CODE>; removes all target programs libraries, documentation files, and object files,</LI>
-
-       <LI><CODE>depend</CODE>; generates automatic dependencies for any C or C++ source files (also see <A HREF="#DEPEND_TARGET">"Dependencies"</A>),</LI>
-
-       <LI><CODE>distclean</CODE>; removes autoconf-generated files in addition to those removed by the "clean" target,</LI>
-
-       <LI><CODE>install</CODE>; installs all distribution files in their corresponding locations (also see <A HREF="#INSTALL_TARGET">"Install/Uninstall Support"</A>),</LI>
-
-       <LI><CODE>install-data</CODE>; installs all data files in their corresponding locations (also see <A HREF="#INSTALL_TARGET">"Install/Uninstall Support"</A>),</LI>
-
-       <LI><CODE>install-exec</CODE>; installs all executable files in their corresponding locations (also see <A HREF="#INSTALL_TARGET">"Install/Uninstall Support"</A>),</LI>
-
-       <LI><CODE>install-headers</CODE>; installs all include files in their corresponding locations (also see <A HREF="#INSTALL_TARGET">"Install/Uninstall Support"</A>),</LI>
-
-       <LI><CODE>install-libs</CODE>; installs all library files in their corresponding locations (also see <A HREF="#INSTALL_TARGET">"Install/Uninstall Support"</A>),</LI>
-
-       <LI><CODE>uninstall</CODE>; removes all distribution files from their corresponding locations (also see <A HREF="#INSTALL_TARGET">"Install/Uninstall Support"</A>), and</LI>
-
-</UL>
-
-
-<H3>Object Files</H3>
-
-<P>Object files (the result of compiling a C or C++ source file) have the extension ".o".</P>
-
-
-<H3>Programs</H3>
-
-<P>Program files are the result of linking object files and libraries together to form an executable file. A typical program target looks like:</P>
-
-<PRE CLASS="command">
-program: $(OBJS)
-&rarr; echo Linking $@...
-&rarr; $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
-</PRE>
-
-
-<H3>Static Libraries</H3>
-
-<P>Static libraries have a prefix of "lib" and the extension ".a". A typical static library target looks like:</P>
-
-<PRE CLASS="command">
-libname.a: $(OBJECTS)
-&rarr; echo Creating $@...
-&rarr; $(RM) $@
-&rarr; $(AR) $(ARFLAGS) $@ $(OBJECTS)
-&rarr; $(RANLIB) $@
-</PRE>
-
-
-<H3>Shared Libraries</H3>
-
-<P>Shared libraries have a prefix of "lib" and the extension ".dylib" or ".so" depending on the operating system. A typical shared library is composed of several targets that look like:</P>
-
-<PRE CLASS="command">
-libname.so: $(OBJECTS)
-&rarr; echo $(DSOCOMMAND) libname.so.$(DSOVERSION) ...
-&rarr; $(DSOCOMMAND) libname.so.$(DSOVERSION) $(OBJECTS)
-&rarr; $(RM) libname.so libname.so.$(DSOMAJOR)
-&rarr; $(LN) libname.so.$(DSOVERSION) libname.so.$(DSOMAJOR)
-&rarr; $(LN) libname.so.$(DSOVERSION) libname.so
-
-libname.dylib: $(OBJECTS)
-&rarr; echo $(DSOCOMMAND) libname.$(DSOVERSION).dylib ...
-&rarr; $(DSOCOMMAND) libname.$(DSOVERSION).dylib \
-&rarr; &rarr; -install_name $(libdir)/libname.$(DSOMAJOR).dylib \
-&rarr; &rarr; -current_version libname.$(DSOVERSION).dylib \
-&rarr; &rarr; -compatibility_version $(DSOMAJOR).0 \
-&rarr; &rarr; $(OBJECTS) $(LIBS)
-&rarr; $(RM) libname.dylib
-&rarr; $(RM) libname.$(DSOMAJOR).dylib
-&rarr; $(LN) libname.$(DSOVERSION).dylib libname.$(DSOMAJOR).dylib
-&rarr; $(LN) libname.$(DSOVERSION).dylib libname.dylib
-</PRE>
-
-
-<H3>Dependencies</H3>
-
-<P>Static dependencies are expressed in each makefile following the target, for example:</P>
-
-<PRE CLASS="command">
-foo: bar
-</PRE>
-
-<P>Static dependencies are only used when it is not possible to automatically generate them. Automatic dependencies are stored in a file named "Dependencies" and included at the end of the makefile. The following "depend" target rule is used to create the automatic dependencies:
-
-<PRE CLASS="command">
-depend:
-&rarr; $(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) >Dependencies
-</PRE>
-
-<P>We regenerate the automatic dependencies on an OS X system and express any non-OS X dependencies statically in the makefile.</P>
-
-
-<H3><A NAME="TARGET_INSTALL">Install/Uninstall Support</A></H3>
-
-<P>All makefiles contains install and uninstall rules which install or remove the corresponding software. These rules must use the <CODE>$(BUILDROOT)</CODE> variable as a prefix to any installation directory so that CUPS can be installed in a temporary location for packaging by programs like <CODE>rpmbuild</CODE>.</P>
-
-<P>The <CODE>$(INSTALL_BIN)</CODE>, <CODE>$(INSTALL_COMPDATA)</CODE>, <CODE>$(INSTALL_CONFIG)</CODE>, <CODE>$(INSTALL_DATA)</CODE>, <CODE>$(INSTALL_DIR)</CODE>, <CODE>$(INSTALL_LIB)</CODE>, <CODE>$(INSTALL_MAN)</CODE>, and <CODE>$(INSTALL_SCRIPT)</CODE> variables must be used when installing files so that the proper ownership and permissions are set on the installed files.</P>
-
-<P>The <CODE>$(RANLIB)</CODE> command must be run on any static libraries after installation since the symbol table is invalidated when the library is copied on some platforms.</P>
-
-</BODY>
-</HTML>
index 0609357..ac33ce4 100644 (file)
@@ -8,8 +8,6 @@
 </head>
 <body>
 <!--
-  "$Id$"
-
   CUPS command file format specification for CUPS.
 
   Copyright 2007-2011 by Apple Inc.
index 76cbd9c..73d07b8 100644 (file)
@@ -31,7 +31,7 @@ WIDTH="768" HEIGHT="768" ALT="CUPS Block Diagram"></TD></TR>
 
 <H4>Config Files</H4>
 
-<P>The scheduler uses several configuration files to store the server settings (<A HREF="man-cupsd.conf.html">cupsd.conf</A>), available classes (<A HREF="man-classes.conf.html">classes.conf</A>), available printers (<A HREF="man-printers.conf.html">printers.conf</A>), current notification subscriptions (<A HREF="man-subscriptions.conf.html">subscriptions.conf</A>), and supported file types and filters (<A HREF="man-mime.types.html">mime.types</A>, <A HREF="man-mime.convs.html">mime.convs</A>). In addition, PostScript Printer Description ("PPD") files or interface scripts are associated with each printer, and the scheduler has cache files for remote printers, PPD files, and current jobs to optimize the scheduler's startup speed and availability.</P>
+<P>The scheduler uses several configuration files to store the server settings (<A HREF="man-cupsd.conf.html">cupsd.conf</A>), available classes (<A HREF="man-classes.conf.html">classes.conf</A>), available printers (<A HREF="man-printers.conf.html">printers.conf</A>), current notification subscriptions (<A HREF="man-subscriptions.conf.html">subscriptions.conf</A>), and supported file types and filters (<A HREF="man-mime.types.html">mime.types</A>, <A HREF="man-mime.convs.html">mime.convs</A>). In addition, PostScript Printer Description ("PPD") files are associated with each printer, and the scheduler has cache files for remote printers, PPD files, and current jobs to optimize the scheduler's startup speed and availability.</P>
 
 <H4>Job Files</H4>
 
index 3a9fd6c..0dd2dc4 100644 (file)
@@ -1,4 +1,4 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!DOCTYPE HTML>
 <html>
 <!-- SECTION: Specifications -->
 <head>
@@ -8,11 +8,9 @@
 </head>
 <body>
 <!--
-  "$Id$"
+  IPP specification for CUPS.
 
-  CUPS IPP specification for CUPS.
-
-  Copyright 2007-2013 by Apple Inc.
+  Copyright 2007-2016 by Apple Inc.
   Copyright 1997-2007 by Easy Software Products.
 
   These coded instructions, statements, and computer programs are the
 
 <h2 class='title'><a name='INTRODUCTION'>Introduction</a></h2>
 
-<p>CUPS implements IPP/2.1 and the operations and attributes
-defined in the "IPP: Job and Printer Set Operations", "IPP/1.1:
-Output-bin Attribute Extension", and "IPP/1.1: finishings
-'fold',' trim', and 'bale' attribute values extension"
-specifications.</p>
+<p>CUPS implements <a href="http://ftp.pwg.org/pub/pwg/standards/std-ipp20-20151030-5100.12.pdf">IPP/2.1</a> and the operations and attributes defined in the following specifications:</p>
+
+<ul>
+
+       <li><a href="http://ftp.pwg.org/pub/pwg/candidates/cs-ippjobprinterext10-20101030-5100.11.pdf">PWG 5100.11: IPP Job and Printer Extensions - Set 2 (JPS2)</a> (all operations plus the "job-creation-attributes-supported", "job-ids", "job-password", "job-password-encryption", "media-col-database", and "which-jobs" attributes)</li>
+
+       <li><a href="http://ftp.pwg.org/pub/pwg/candidates/cs-ippjobprinterext3v10-20120727-5100.13.pdf">PWG 5100.13: IPP Job and Printer Extensions - Set 3 (JPS3)</a> (all operations/attributes required for IPP Everywhere except "printer-geo-location" and "printer-icc-profiles")</li>
+
+       <li><a href="http://ftp.pwg.org/pub/pwg/candidates/cs-ippeve10-20130128-5100.14.pdf">PWG 5100.14: IPP Everywhere</a> (conforming to the Client and most of the Printer requirements)</li>
+
+       <li><a href="http://ftp.pwg.org/pub/pwg/candidates/cs-ippfaxout10-20140618-5100.15.pdf">PWG 5100.15: IPP FaxOut Service</a> (for facsimile queues)</li>
+
+       <li><a href="http://ftp.pwg.org/pub/pwg/candidates/cs-ipptrans10-20131108-5100.16.pdf">PWG 5100.16: IPP Transaction-Based Printing Extensions</a></li>
+
+       <li><a href="http://tools.ietf.org/html/rfc3998">RFC 3998: IPP Job and Printer Administrative Operations</a> (Disable-Printer, Enable-Printer, Hold-New-Jobs, and Release-Held-New-Jobs operations)</li>
+
+       <li><a href="http://tools.ietf.org/html/rfc7472">RFC 7472: IPP over HTTPS Transport Binding and 'ipps' URI Scheme</a></li>
 
-<p>CUPS also provides 16 new operations and many new attributes
-to support multiple IPP printers and printer classes on a single
-host.</p>
+</ul>
+
+<p>CUPS also provides 17 new operations and many new attributes to support multiple IPP printers and printer classes on a single host.</p>
 
 <h3 class='title'><a name='IPP_URIS'>IPP URIs</a></h3>
 
-<p>CUPS supports the "http", "https", and "ipp" schemes. The
-following resource names are used:</p>
+<p>CUPS supports the "http", "https", "ipp", and "ipps" schemes. The following resource names are used:</p>
 
 <dl>
 
        <dt><tt>scheme://hostname:port/</tt></dt>
 
-       <dd>Can be used for all "get" operations and for server
-       subscriptions.</dd>
+       <dd>Can be used for all "get" operations and for server subscriptions.</dd>
 
        <dt><tt>scheme://hostname:port/admin/</tt></dt>
 
@@ -66,15 +74,11 @@ following resource names are used:</p>
 
 </dl>
 
-<p>So a typical printer URI would be
-"ipp://foo.bar.com/printers/LaserJet". In addition, the CUPS
-server also supports normal browser access via
-"http://hostname:port/" and "https://hostname:port/".</p>
+<p>So a typical printer URI would be "ipp://foo.example.com/printers/LaserJet". In addition, the CUPS scheduler also supports (when enabled) normal browser access via "http://foo.example.com:port/" and "https://foo.example.com:port/".</p>
 
 <h3 class='title'><a name='IPP_OPERATIONS'>CUPS IPP Operations</a></h3>
 
-<p>CUPS provides 16 extension operations in addition to most of the
-standard IPP and registered extension operations:
+<p>CUPS provides 17 vendor extension operations in addition to most of the standard IPP and registered extension operations:</p>
 
 <div class='table'><table align='center' border='1' width='80%'
 summary='Supported Operations'>
@@ -88,7 +92,7 @@ summary='Supported Operations'>
 </thead>
 <tbody>
 <tr>
-       <td><a href='#PRINT_JOB'>Print-Job</a></td>
+       <td>Print-Job</td>
        <td>1.0</td>
        <td>0x0002</td>
        <td>Print a file.</td>
@@ -100,7 +104,7 @@ summary='Supported Operations'>
        <td>Validate job attributes.</td>
 </tr>
 <tr>
-       <td><a href='#CREATE_JOB'>Create-Job</a></td>
+       <td>Create-Job</td>
        <td>1.1</td>
        <td>0x0005</td>
        <td>Create a print job.</td>
@@ -172,7 +176,13 @@ summary='Supported Operations'>
        <td>Purge all jobs.</td>
 </tr>
 <tr>
-       <td><a href='#SET_JOB_ATTRIBUTES'>Set-Job-Attributes</a></td>
+       <td>Set-Printer-Attributes</td>
+       <td>1.4</td>
+       <td>0x0013</td>
+       <td>Set attributes for a printer.</td>
+</tr>
+<tr>
+       <td>Set-Job-Attributes</td>
        <td>1.1</td>
        <td>0x0014</td>
        <td>Set attributes for a pending or held job.</td>
@@ -232,6 +242,36 @@ summary='Supported Operations'>
        <td>Rejects jobs on a printer.</td>
 </tr>
 <tr>
+       <td>Hold-New-Jobs</td>
+       <td>1.4</td>
+       <td>0x0025</td>
+       <td>Hold new jobs by default.</td>
+</tr>
+<tr>
+       <td>Release-Held-New-Jobs</td>
+       <td>1.4</td>
+       <td>0x0026</td>
+       <td>Releases all jobs that were previously held.</td>
+</tr>
+<tr>
+       <td>Cancel-Jobs</td>
+       <td>1.5</td>
+       <td>0x0038</td>
+       <td>Cancel all jobs (administrator).</td>
+</tr>
+<tr>
+       <td>Cancel-My-Jobs</td>
+       <td>1.5</td>
+       <td>0x0039</td>
+       <td>Cancel all jobs (user).</td>
+</tr>
+<tr>
+       <td>Close-Job</td>
+       <td>1.5</td>
+       <td>0x003b</td>
+       <td>Close a created job.</td>
+</tr>
+<tr>
        <td><a href='#CUPS_GET_DEFAULT'>CUPS-Get-Default</a></td>
        <td>1.0</td>
        <td>0x4001</td>
@@ -274,16 +314,16 @@ summary='Supported Operations'>
        <td>Delete a printer class.</td>
 </tr>
 <tr>
-       <td><a href='#CUPS_ACCEPT_JOBS'>CUPS-Accept-Jobs</a></td>
+       <td>CUPS-Accept-Jobs</td>
        <td>1.0</td>
        <td>0x4008</td>
-       <td>Accept jobs on a printer or printer class.</td>
+       <td>Accept jobs on a printer or printer class. This operation is deprecated - use the Enable-Printer operation instead.</td>
 </tr>
 <tr>
-       <td><a href='#CUPS_REJECT_JOBS'>CUPS-Reject-Jobs</a></td>
+       <td>CUPS-Reject-Jobs</td>
        <td>1.0</td>
        <td>0x4009</td>
-       <td>Reject jobs on a printer or printer class.</td>
+       <td>Reject jobs on a printer or printer class. This operation is deprecated - use the Disable-Printer operation instead.</td>
 </tr>
 <tr>
        <td><a href='#CUPS_SET_DEFAULT'>CUPS-Set-Default</a></td>
@@ -327,536 +367,66 @@ summary='Supported Operations'>
        <td>0x4027</td>
        <td>Get a document file from a job.</td>
 </tr>
+<tr>
+       <td><a href='#CUPS_CREATE_LOCAL_PRINTER'>CUPS-Create-Local-Printer</a></td>
+       <td>2.2</td>
+       <td>0x4028</td>
+       <td>Creates a local (temporary) print queue pointing to a remote IPP Everywhere printer.</td>
+</tr>
 </tbody>
 </table></div>
 
 <h2 class='title'><a name='OPERATIONS'>Operations</a></h2>
 
-<p>The following sections describe the operations supported by CUPS.
-In the interest of brevity, operations which use only the standard
-IPP attributes are not described.
-
-<h3 class='title'><a name='PRINT_JOB'>Print-Job Operation</a></h3>
-
-<p>The Print-Job operation (0x0002) prints a file.
-
-<h4>Print-Job Request</h4>
-
-<p>The following groups of attributes are supplied as part of the
-Print-Job request:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
-
-       <dt>"printer-uri" (uri):
-
-       <dd>The client MUST supply a URI for the specified printer.
-
-</dl>
-
-<p>Group 2: Job Template Attributes
-
-<dl>
-
-       <dt>"auth-info" (1setOf text(MAX)):<span class='info'>CUPS 1.3/OS X 10.5</span>
-
-       <dd>The client OPTIONALLY supplies one or more authentication values as specified by the "auth-info-required" attribute.
-
-       <dt>"job-billing" (text(MAX))<span class='info'>CUPS 1.1</span> or
-       "job-account-id (text(MAX))"<span class='info'>CUPS 1.7</span>:
-
-       <dd>The client OPTIONALLY supplies a billing string that is logged
-       with the page accounting information.
-
-       <dt>"job-sheets" (1setof type3 keyword | name(MAX)):<span class='info'>CUPS 1.1</span>
-
-       <dd>The client OPTIONALLY supplies one or two banner pages that
-       are printed before and after any files in the print job. The
-       name of "none" is reserved to indicate that no banner page
-       should be printed. If the client does not specify this
-       attribute then the value of the "job-sheets-default" printer
-       object attribute is used.
-
-       <blockquote><b>Note:</b> Standard IPP only allows
-       specification of a single job-sheets attribute
-       value.</blockquote>
-
-       <dt>"media" (1setof type3 keyword | name(MAX)):
-
-       <dd>The client OPTIONALLY supplies one or more media attributes
-       specifying the size, type, source, and color of the output
-       media. If the client does not specify this attribute then the
-       value of the "media-default" printer object attribute is used.
-
-       <blockquote><b>Note:</b> Standard IPP only allows
-       specification of a single media attribute
-       value.</blockquote>
-
-       <dt>Other Job Template Attributes
-
-</dl>
-
-<p>The Print-Job request is followed by a file to be printed.
-
-<h4>Print-Job Response</h4>
-
-<p>The following groups of attributes are send as part of the Print-Job
-Response:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Status Message:
-
-       <dd>The standard response status message.
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
-
-</dl>
-
-<p>Group 2: Job Attributes
-
-<dl>
-
-       <dt>Standard Job Attributes
-
-</dl>
-
-<p>Group 3: Unsupported Attributes (status=client-eror-attributes-or-values-not-supported)
-
-<dl>
-
-       <dt>auth-info-required (1setOf Type2 keyword)
-
-       <dd>The required authentication information.
-
-</dl>
-
-<h3 class='title'><span class='info'>CUPS 1.1</span><a name='CREATE_JOB'>Create-Job Operation</a></h3>
-
-<p>The Create-Job operation (0x0005) creates a new, empty print job.
-
-<h4>Create-Job Request</h4>
-
-<p>The following groups of attributes are supplied as part of the
-Create-Job request:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
-
-       <dt>"printer-uri" (uri):
-
-       <dd>The client MUST supply a URI for the specified printer.
-
-</dl>
-
-<p>Group 2: Job Template Attributes
-
-<dl>
-
-       <dt>"auth-info" (1setOf text(MAX)):<span class='info'>CUPS 1.3/OS X 10.5</span>
-
-       <dd>The client OPTIONALLY supplies one or more authentication values as specified by the "auth-info-required" attribute.
-
-       <dt>"job-billing" (text(MAX))<span class='info'>CUPS 1.1</span> or
-       "job-account-id (text(MAX))<span class='info'>CUPS 1.7</span>:
-
-       <dd>The client OPTIONALLY supplies a billing string that is logged
-       with the page accounting information.
-
-       <dt>"job-sheets" (1setof type3 keyword | name(MAX)):<span class='info'>CUPS 1.1</span>
-
-       <dd>The client OPTIONALLY supplies one or two banner pages that
-       are printed before and after any files in the print job. The
-       name of "none" is reserved to indicate that no banner page
-       should be printed. If the client does not specify this
-       attribute then the value of the "job-sheets-default" printer
-       object attribute is used.
-
-       <blockquote><b>Note:</b> Standard IPP only allows
-       specification of a single job-sheets attribute
-       value.</blockquote>
-
-       <dt>"media" (1setof type3 keyword | name(MAX)):
-
-       <dd>The client OPTIONALLY supplies one or more media attributes
-       specifying the size, type, source, and color of the output
-       media. If the client does not specify this attribute then the
-       value of the "media-default" printer object attribute is used.
-
-       <blockquote><b>Note:</b> Standard IPP only allows
-       specification of a single media attribute
-       value.</blockquote>
-
-       <dt>Standard Job Template Attributes
-
-</dl>
-
-<h4>Create-Job Response</h4>
-
-<p>The following groups of attributes are send as part of the
-Create-Job Response:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Status Message:
-
-       <dd>The standard response status message.
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
-
-</dl>
-
-<p>Group 2: Job Attributes
-
-<dl>
-
-       <dt>Standard Job Attributes
-
-</dl>
-
-<p>Group 3: Unsupported Attributes (status=client-eror-attributes-or-values-not-supported)
-
-<dl>
-
-       <dt>auth-info-required (1setOf Type2 keyword)
-
-       <dd>The required authentication information.
-
-</dl>
+<p>The following sections describe the operations supported by CUPS. In the interest of brevity, operations which use only the standard IPP attributes are not described.
 
-<h3 class='title'><a name='CANCEL_JOB'>Cancel Job Operation</a></h3>
 
-<p>The Cancel-Job operation (0x0008) cancels the specified job. CUPS 1.4 adds
-a new <tt>purge-job (boolean)</tt> attribute that allows you to purge both
-active and completed jobs, removing all history and document files for the
-job as well.
+<h3 class='title'><a name='CANCEL_JOB'>Cancel Job Operation (Extension)</a></h3>
 
-<h4>Cancel-Job Request</h4>
+<p>The Cancel-Job operation (0x0008) cancels the specified job. CUPS 1.4 added support for the <tt>purge-job (boolean)</tt> operation attribute that (if 'true') removes all history and document files for the job as well.</p>
 
-<p>The following groups of attributes are supplied as part of the
-Cancel-Job request:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
-
-       <dt>"printer-uri" (uri) and "job-id" (integer)
-       <br><i>OR</i>
-       <br>"job-uri":
-
-       <dd>The client MUST supply a URI for the specified printer and
-       a job ID number, or the job URI.
-
-       <dt><span class="info">CUPS 1.4/OS X 10.6</span>"purge-job" (boolean):
-
-       <dd>The client OPTIONALLY supplies this attribute. When true,
-       all job files (history and document) are purged. The default
-       is false, leading to the standard IPP behavior.
-
-</dl>
-
-<h4>Cancel-Job Response</h4>
-
-<p>The following groups of attributes are send as part of the Cancel-Job
-Response:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Status Message:
-
-       <dd>The standard response status message.
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
-
-</dl>
 
 <h3 class='title'><a name='PURGE_JOBS'>Purge-Jobs Operation</a></h3>
 
-<p>The Purge-Jobs operation (0x0012) cancels all of the jobs on a
-given destination and optionally removes all history and document
-files for the jobs as well.
-
-<h4>Purge-Jobs Request</h4>
-
-<p>The following groups of attributes are supplied as part of the
-Purge-Jobs request:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
-
-       <dt>"printer-uri" (uri):
-
-       <dd>The client MUST supply a URI for the specified printer or
-       "ipp://.../printers" for all printers and classes.
-
-       <dt><span class="info">CUPS 1.2/OS X 10.5</span>"requesting-user-name" (name(MAX)):
-
-       <dd>The client OPTIONALLY supplies this attribute to specify whose jobs
-       jobs are purged or canceled.
-
-       <dt><span class="info">CUPS 1.2/OS X 10.5</span>"my-jobs" (boolean):
-
-       <dd>The client OPTIONALLY supplies this attribute to specify that only
-       the jobs owned by the requesting user are purged or canceled. The
-       default is false.
-
-       <dt><span class="info">CUPS 1.2/OS X 10.5</span>"purge-jobs" (boolean):
-
-       <dd>The client OPTIONALLY supplies this attribute to specify
-       whether the jobs are purged (true) or just canceled (false).
-       The default is true.
-
-</dl>
-
-<h4>Purge-Jobs Response</h4>
-
-<p>The following groups of attributes are send as part of the Purge-Jobs
-Response:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Status Message:
-
-       <dd>The standard response status message.
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
-
-</dl>
-
-<h3 class='title'><span class='info'>CUPS 1.1</span><a name='SET_JOB_ATTRIBUTES'>Set-Job-Attributes Operation</a></h3>
-
-<p>The Set-Job-Attributes operation (0x0014) changes the attributes of
-an active (not completed) job.
+<p>The Purge-Jobs operation (0x0012) cancels all of the jobs on a given destination and optionally removes all history and document files for the jobs as well. CUPS 1.2 added support for the <tt>purge-job (boolean)</tt> operation attribute that (if 'false') retains all history and document files for the canceled jobs.</p>
 
-<h4>Set-Job-Attributes Request</h4>
-
-<p>The following groups of attributes are supplied as part of the
-Set-Job-Attributes request:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
-
-       <dt>"printer-uri" (uri) and "job-id" (integer)
-       <br><i>OR</i>
-       <br>"job-uri":
-
-       <dd>The client MUST supply a URI for the specified printer and
-       a job ID number, or the job URI.
-
-</dl>
-
-<p>Group 2: Job Template Attributes
-
-<dl>
-
-       <dt>"job-sheets" (1setof type3 keyword | name(MAX)):<span class='info'>CUPS 1.1</span>
-
-       <dd>The client OPTIONALLY supplies one or two banner pages that
-       are printed before and after any files in the print job. The
-       name of "none" is reserved to indicate that no banner page
-       should be printed. If the client does not specify this
-       attribute then the value of the "job-sheets-default" printer
-       object attribute is used.
-
-       <blockquote><b>Note:</b> Standard IPP only allows
-       specification of a single job-sheets attribute
-       value.</blockquote>
-
-       <dt>"media" (1setof type3 keyword | name(MAX)):
-
-       <dd>The client OPTIONALLY supplies one or more media attributes
-       specifying the size, type, source, and color of the output
-       media. If the client does not specify this attribute then the
-       value of the "media-default" printer object attribute is used.
-
-       <blockquote><b>Note:</b> Standard IPP only allows
-       specification of a single media attribute
-       value.</blockquote>
-
-       <dt>Other Job Template Attributes
-
-</dl>
-
-<h4>Set-Job-Attributes Response</h4>
-
-<p>The following groups of attributes are send as part of the Set-Job-Attributes
-Response:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Status Message:
-
-       <dd>The standard response status message.
-
-       <dt>Natural Language and Character Set:
+<blockquote><b>Note:</b>
+       <p>The Cancel-Jobs and Cancel-My-Jobs operations should be used instead of Purge-Jobs.</p>
+</blockquote>
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
 
-</dl>
 
-<h3 class='title'><span class='info'>CUPS 1.2/OS X 10.5</span><a
+<h3 class='title'><span class='info'>CUPS 1.2/macOS 10.5</span><a
 name='CREATE_PRINTER_SUBSCRIPTION'>Create-Printer-Subscription</a></h3>
 
-<p>The Create-Printer-Subscription operation (0x0016) creates a
-subscription for printer or server event notifications. CUPS
-provides several additional events in addition to the standard
-events in the IPP notifications specification.</p>
-
-<h4>Create-Printer-Subscription Request</h4>
-
-<p>The following groups of attributes are supplied as part of the
-request:</p>
-
-<p>Group 1: Operation Attributes</p>
-
-<dl>
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
-
-       <dt>"printer-uri" (uri):
-
-       <dd>The printer
-       (<tt>ipp://server/printers/printername</tt>), class
-       (<tt>ipp://server/classes/classname</tt>), or server
-       (<tt>ipp://server/</tt>) URI for event notifications.
-
-       <dt>"notify-events" (1setOf keyword):
-
-       <dd>The events to monitor. In addition to the standard
-       events, CUPS adds the following keywords:
-       <ul>
-
-               <li><tt>printer-added</tt> - Get notified
-               whenever a printer or class is added</li>
-
-               <li><tt>printer-deleted</tt> - Get notified
-               whenever a printer or class is deleted</li>
+<p>The Create-Printer-Subscription operation (0x0016) creates a subscription for printer or server event notifications. CUPS provides several additional events in addition to the standard events in the IPP notifications specification. CUPS adds the following <tt>notify-events (1setOf type2 keyword)</tt> values:<p>
 
-               <li><tt>printer-modified</tt> - Get notified
-               whenever a printer or class is modified</li>
-
-               <li><tt>server-audit</tt> - Get notified when a
-               security condition occurs</li>
-
-               <li><tt>server-restarted</tt> - Get notified when
-               the server is restarted</li>
-
-               <li><tt>server-started</tt> - Get notified when
-               the server is started</li>
-
-               <li><tt>server-stopped</tt> - Get notified when
-               the server is stopped</li>
-
-       </ul>
-
-</dl>
-
-<h4>Create-Printer-Subscription Response</h4>
-
-<p>The following groups of attributes are send as part of the
-response:</p>
-
-<p>Group 1: Operation Attributes</p>
-
-<dl>
-
-       <dt>Status Message:
+<ul>
 
-       <dd>The standard response status message.
+       <li><tt>printer-added</tt> - Get notified whenever a printer or class is added</li>
 
-       <dt>Natural Language and Character Set:
+       <li><tt>printer-deleted</tt> - Get notified whenever a printer or class is deleted</li>
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <li><tt>printer-modified</tt> - Get notified whenever a printer or class is modified</li>
 
-</dl>
+       <li><tt>server-audit</tt> - Get notified when a security condition occurs</li>
 
-<p>Group 2: Subscription Object Attributes</p>
+       <li><tt>server-restarted</tt> - Get notified when the server is restarted</li>
 
-<dl>
+       <li><tt>server-started</tt> - Get notified when the server is started</li>
 
-       <dt>"subscription-id" (integer):
+       <li><tt>server-stopped</tt> - Get notified when the server is stopped</li>
 
-       <dd>The subscription number.
+</ul>
 
-</dl>
 
 <h3 class='title'><a name='CUPS_GET_DEFAULT'>CUPS-Get-Default Operation</a></h3>
 
-<p>The CUPS-Get-Default operation (0x4001) returns the default printer
-URI and attributes.
+<p>The CUPS-Get-Default operation (0x4001) returns the default printer URI and attributes.
 
 <h4>CUPS-Get-Default Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Get-Default request:
+<p>The following groups of attributes are supplied as part of the CUPS-Get-Default request:
 
 <p>Group 1: Operation Attributes
 
@@ -864,38 +434,29 @@ CUPS-Get-Default request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
-       <dt>"requested-attributes" (1setOf keyword) :
+       <dt>"requested-attributes" (1setOf keyword):
 
-       <dd>The client OPTIONALLY supplies a set of attribute names
-       and/or attribute group names in whose values the requester is
-       interested. If the client omits this attribute, the server
-       responds as if this attribute had been supplied with a value of
-       'all'.
+       <dd>The client OPTIONALLY supplies a set of attribute names and/or attribute group names in whose values the requester is interested. If the client omits this attribute, the server responds as if this attribute had been supplied with a value of 'all'.
 
 </dl>
 
 <h4>CUPS-Get-Default Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Get-Default Response:
+<p>The following groups of attributes are send as part of the CUPS-Get-Default Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
@@ -909,14 +470,11 @@ CUPS-Get-Default Response:
 
 <h3 class='title'><a name='CUPS_GET_PRINTERS'>CUPS-Get-Printers Operation</a></h3>
 
-<p>The CUPS-Get-Printers operation (0x4002) returns the printer
-attributes for every printer known to the system. This may include
-printers that are not served directly by the server.
+<p>The CUPS-Get-Printers operation (0x4002) returns the printer attributes for every printer known to the system. This may include printers that are not served directly by the server.
 
 <h4>CUPS-Get-Printers Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Get-Printers request:
+<p>The following groups of attributes are supplied as part of the CUPS-Get-Printers request:
 
 <p>Group 1: Operation Attributes
 
@@ -924,69 +482,57 @@ CUPS-Get-Printers request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
-       <dt>"first-printer-name" (name(127)):<span class='info'>CUPS 1.2/OS X 10.5</span>
+       <dt>"first-printer-name" (name(127)): <span class='info'>CUPS 1.2/macOS 10.5</span>
 
-       <dd>The client OPTIONALLY supplies this attribute to
-       select the first printer that is returned.
+       <dd>The client OPTIONALLY supplies this attribute to select the first printer that is returned.
 
        <dt>"limit" (integer (1:MAX)):
 
-       <dd>The client OPTIONALLY supplies this attribute limiting the
-       number of printers that are returned.
+       <dd>The client OPTIONALLY supplies this attribute limiting the number of printers that are returned.
+
+       <dt>"printer-id" (integer(0:65535)): <span class='info'>CUPS 2.2</span>
+
+       <dd>The client OPTIONALLY supplies this attribute to select which printer is returned.
 
        <dt>"printer-location" (text(127)): <span class='info'>CUPS 1.1.7</span>
 
-       <dd>The client OPTIONALLY supplies this attribute to
-       select which printers are returned.
+       <dd>The client OPTIONALLY supplies this attribute to select which printers are returned.
 
        <dt>"printer-type" (type2 enum): <span class='info'>CUPS 1.1.7</span>
 
-       <dd>The client OPTIONALLY supplies a printer type enumeration to
-       select which printers are returned.
+       <dd>The client OPTIONALLY supplies a printer type enumeration to select which printers are returned.
 
        <dt>"printer-type-mask" (type2 enum): <span class='info'>CUPS 1.1.7</span>
 
-       <dd>The client OPTIONALLY supplies a printer type mask
-       enumeration to select which bits are used in the "printer-type"
-       attribute.
+       <dd>The client OPTIONALLY supplies a printer type mask enumeration to select which bits are used in the "printer-type" attribute.
 
-       <dt>"requested-attributes" (1setOf keyword) :
+       <dt>"requested-attributes" (1setOf keyword):
 
-       <dd>The client OPTIONALLY supplies a set of attribute names
-       and/or attribute group names in whose values the requester is
-       interested. If the client omits this attribute, the server
-       responds as if this attribute had been supplied with a value of
-       'all'.
+       <dd>The client OPTIONALLY supplies a set of attribute names and/or attribute group names in whose values the requester is interested. If the client omits this attribute, the server responds as if this attribute had been supplied with a value of 'all'.
 
-       <dt>"requested-user-name" (name(127)) : <span class='info'>CUPS 1.2/OS X 10.5</span>
+       <dt>"requested-user-name" (name(127)): <span class='info'>CUPS 1.2/macOS 10.5</span>
 
-       <dd>The client OPTIONALLY supplies a user name that is used to filter
-       the returned printers.
+       <dd>The client OPTIONALLY supplies a user name that is used to filter the returned printers.
 
 </dl>
 
 <h4>CUPS-Get-Printers Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Get-Printers Response:
+<p>The following groups of attributes are send as part of the CUPS-Get-Printers Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
@@ -994,20 +540,18 @@ CUPS-Get-Printers Response:
 
 <dl>
 
-       <dt>The set of requested attributes and their current values for
-       each printer.
+       <dt>The set of requested attributes and their current values for each printer.
 
 </dl>
 
+
 <h3 class='title'><a name='CUPS_ADD_MODIFY_PRINTER'>CUPS-Add-Modify-Printer Operation</a></h3>
 
-<p>The CUPS-Add-Modify-Printer operation (0x4003) adds a new printer or
-modifies an existing printer on the system.
+<p>The CUPS-Add-Modify-Printer operation (0x4003) adds a new printer or modifies an existing printer on the system.
 
 <h4>CUPS-Add-Modify-Printer Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Add-Modify-Printer request:
+<p>The following groups of attributes are supplied as part of the CUPS-Add-Modify-Printer request:
 
 <p>Group 1: Operation Attributes
 
@@ -1015,9 +559,7 @@ CUPS-Add-Modify-Printer request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri):
 
@@ -1029,79 +571,59 @@ CUPS-Add-Modify-Printer request:
 
 <dl>
 
-       <dt>"auth-info-required" (1setOf type2 keyword):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"auth-info-required" (1setOf type2 keyword): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies one or more authentication keywords that are required to communicate with the printer/remote queue.
 
-       <dt>"job-sheets-default" (1setOf name(127)): <span
-       class='info'>CUPS 1.1.7</span>
+       <dt>"job-sheets-default" (1setOf name(127)): <span class='info'>CUPS 1.1.7</span>
 
-       <dd>The client OPTIONALLY supplies one or two banner page
-       names that are printed before and after files in a job.
-       The reserved name "none" is used to specify that no
-       banner page should be printed.
+       <dd>The client OPTIONALLY supplies one or two banner page names that are printed before and after files in a job. The reserved name "none" is used to specify that no banner page should be printed.
 
        <dt>"device-uri" (uri):
 
-       <dd>The client OPTIONALLY supplies a device URI for the
-       specified printer.
+       <dd>The client OPTIONALLY supplies a device URI for the specified printer.
 
        <dt>"port-monitor" (name(127)):
 
-       <dd>The client OPTIONALLY supplies a port monitor name for the
-       specified printer.
+       <dd>The client OPTIONALLY supplies a port monitor name for the specified printer.
 
-       <dt>"ppd-name" (name(127)):
+       <dt>"ppd-name" (name(255)):
 
-       <dd>The client OPTIONALLY supplies a PPD name for the specified
-       printer.
+       <dd>The client OPTIONALLY supplies a PPD name for the specified printer.
 
        <dt>"printer-is-accepting-jobs" (boolean):
 
-       <dd>The client OPTIONALLY supplies this boolean attribute
-       indicating whether or not the printer object should accept new jobs.
+       <dd>The client OPTIONALLY supplies this boolean attribute indicating whether the printer object should accept new jobs.
 
        <dt>"printer-info" (text(127)):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating the
-       printer information string.
+       <dd>The client OPTIONALLY supplies this attribute indicating the printer information string.
 
        <dt>"printer-location" (text(127)):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating a
-       textual location of the printer.
+       <dd>The client OPTIONALLY supplies this attribute indicating a textual location of the printer.
 
        <dt>"printer-more-info" (uri):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating a
-       URI for additional printer information.
+       <dd>The client OPTIONALLY supplies this attribute indicating a URI for additional printer information.
 
        <dt>"printer-state" (type2 enum):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating the
-       initial/current state of the printer. Only the "idle" and "stopped"
-       enumerations are recognized.
+       <dd>The client OPTIONALLY supplies this attribute indicating the initial/current state of the printer. Only the 'idle(3)' and 'stopped(5)' enumerations are recognized.
 
        <dt>"printer-state-message" (text(MAX)):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating a
-       textual reason for the current printer state.
+       <dd>The client OPTIONALLY supplies this attribute indicating a textual reason for the current printer state.
 
        <dt>"requesting-user-name-allowed" (1setof name(127) | delete)
        <br><i>OR</i>
        <br>"requesting-user-name-denied" (1setof name(127) | delete):
 
-       <dd>The client OPTIONALLY supplies one of these attributes to
-       specify an access control list for incoming print jobs. To allow
-       all users access to a printer, use the delete tag for the
-       attribute value.
+       <dd>The client OPTIONALLY supplies one of these attributes to specify an access control list for incoming print jobs. To allow all users access to a printer, use the delete tag for the attribute value.
 
 </dl>
 
-<p>The CUPS-Add-Modify-Printer request can optionally be followed by a PPD
-file or System V interface script to be used for the printer. The
-"ppd-name" attribute overrides any file that is attached to the end of
-the request with a local CUPS PPD file.
+<p>The CUPS-Add-Modify-Printer request can optionally be followed by a PPD file to be used for the printer. The "ppd-name" attribute overrides any file that is attached to the end of the request with a local CUPS PPD file.
 
 <h4>CUPS-Add-Modify-Printer Response</h4>
 
@@ -1112,27 +634,24 @@ CUPS-Add-Modify-Printer Response:
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
+
 <h3 class='title'><a name='CUPS_DELETE_PRINTER'>CUPS-Delete-Printer Operation</a></h3>
 
-<p>The CUPS-Delete-Printer operation (0x4004) removes an existing
-printer from the system.
+<p>The CUPS-Delete-Printer operation (0x4004) removes an existing printer from the system.
 
 <h4>CUPS-Delete-Printer Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Delete-Printer request:
+<p>The following groups of attributes are supplied as part of the CUPS-Delete-Printer request:
 
 <p>Group 1: Operation Attributes
 
@@ -1140,9 +659,7 @@ CUPS-Delete-Printer request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri):
 
@@ -1152,35 +669,30 @@ CUPS-Delete-Printer request:
 
 <h4>CUPS-Delete-Printer Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Delete-Printer Response:
+<p>The following groups of attributes are send as part of the CUPS-Delete-Printer Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
+
 <h3 class='title'><a name='CUPS_GET_CLASSES'>CUPS-Get-Classes Operation</a></h3>
 
-<p>The CUPS-Get-Classes operation (0x4005) returns the printer
-attributes for every printer class known to the system. This may
-include printer classes that are not served directly by the server.
+<p>The CUPS-Get-Classes operation (0x4005) returns the printer attributes for every printer class known to the system. This may include printer classes that are not served directly by the server.
 
 <h4>CUPS-Get-Classes Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Get-Classes request:
+<p>The following groups of attributes are supplied as part of the CUPS-Get-Classes request:
 
 <p>Group 1: Operation Attributes
 
@@ -1188,65 +700,53 @@ CUPS-Get-Classes request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
-       <dt>"first-printer-name" (name(127)):<span class='info'>CUPS 1.2/OS X 10.5</span>
+       <dt>"first-printer-name" (name(127)): <span class='info'>CUPS 1.2/macOS 10.5</span>
 
-       <dd>The client OPTIONALLY supplies this attribute to
-       select the first printer that is returned.
+       <dd>The client OPTIONALLY supplies this attribute to select the first printer that is returned.
 
        <dt>"limit" (integer (1:MAX)):
 
-       <dd>The client OPTIONALLY supplies this attribute limiting the
-       number of printer classes that are returned.
+       <dd>The client OPTIONALLY supplies this attribute limiting the number of printer classes that are returned.
 
        <dt>"printer-location" (text(127)): <span class='info'>CUPS 1.1.7</span>
-       <dd>The client OPTIONALLY supplies this attribute to
-       select which printer classes are returned.
+
+       <dd>The client OPTIONALLY supplies this attribute to select which printer classes are returned.
 
        <dt>"printer-type" (type2 enum): <span class='info'>CUPS 1.1.7</span>
-       <dd>The client OPTIONALLY supplies a printer type enumeration to
-       select which printer classes are returned.
+
+       <dd>The client OPTIONALLY supplies a printer type enumeration to select which printer classes are returned.
 
        <dt>"printer-type-mask" (type2 enum): <span class='info'>CUPS 1.1.7</span>
-       <dd>The client OPTIONALLY supplies a printer type mask
-       enumeration to select which bits are used in the "printer-type"
-       attribute.
 
-       <dt>"requested-attributes" (1setOf keyword) :
+       <dd>The client OPTIONALLY supplies a printer type mask enumeration to select which bits are used in the "printer-type" attribute.
 
-       <dd>The client OPTIONALLY supplies a set of attribute names
-       and/or attribute group names in whose values the requester is
-       interested. If the client omits this attribute, the server responds as
-       if this attribute had been supplied with a value of 'all'.
+       <dt>"requested-attributes" (1setOf keyword):
 
-       <dt>"requested-user-name" (name(127)) : <span class='info'>CUPS 1.2/OS X 10.5</span>
+       <dd>The client OPTIONALLY supplies a set of attribute names and/or attribute group names in whose values the requester is interested. If the client omits this attribute, the server responds as if this attribute had been supplied with a value of 'all'.
 
-       <dd>The client OPTIONALLY supplies a user name that is used to filter
-       the returned printers.
+       <dt>"requested-user-name" (name(127)): <span class='info'>CUPS 1.2/macOS 10.5</span>
+
+       <dd>The client OPTIONALLY supplies a user name that is used to filter the returned printers.
 
 </dl>
 
 <h4>CUPS-Get-Classes Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Get-Classes Response:
+<p>The following groups of attributes are send as part of the CUPS-Get-Classes Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
@@ -1254,20 +754,17 @@ CUPS-Get-Classes Response:
 
 <dl>
 
-       <dt>The set of requested attributes and their current values for
-       each printer class.
+       <dt>The set of requested attributes and their current values for each printer class.
 
 </dl>
 
 <h3 class='title'><a name='CUPS_ADD_MODIFY_CLASS'>CUPS-Add-Modify-Class Operation</a></h3>
 
-<p>The CUPS-Add-Modify-Class operation (0x4006) adds a new printer class or
-modifies and existing printer class on the system.
+<p>The CUPS-Add-Modify-Class operation (0x4006) adds a new printer class or modifies and existing printer class on the system.
 
 <h4>CUPS-Add-Modify-Class Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Add-Modify-Class request:
+<p>The following groups of attributes are supplied as part of the CUPS-Add-Modify-Class request:
 
 <p>Group 1: Operation Attributes
 
@@ -1275,9 +772,7 @@ CUPS-Add-Modify-Class request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri):
 
@@ -1289,54 +784,43 @@ CUPS-Add-Modify-Class request:
 
 <dl>
 
-       <dt>"auth-info-required" (1setOf type2 keyword):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"auth-info-required" (1setOf type2 keyword): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies one or more authentication keywords that are required to communicate with the printer/remote queue.
 
        <dt>"member-uris" (1setof uri):
 
-       <dd>The client OPTIONALLY supplies the "member-uris" set
-       specifying the printers and printer classes that are part of the class.
+       <dd>The client OPTIONALLY supplies the "member-uris" set specifying the printers and printer classes that are part of the class.
 
        <dt>"printer-is-accepting-jobs" (boolean):
 
-       <dd>The client OPTIONALLY supplies this boolean attribute
-       indicating whether or not the class object should accept new jobs.
+       <dd>The client OPTIONALLY supplies this boolean attribute indicating whether the class object should accept new jobs.
 
        <dt>"printer-info" (text(127)):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating the
-       printer information string.
+       <dd>The client OPTIONALLY supplies this attribute indicating the printer information string.
 
        <dt>"printer-location" (text(127)):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating a
-       textual location of the class.
+       <dd>The client OPTIONALLY supplies this attribute indicating a textual location of the class.
 
        <dt>"printer-more-info" (uri):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating a
-       URI for additional class information.
+       <dd>The client OPTIONALLY supplies this attribute indicating a URI for additional class information.
 
        <dt>"printer-state" (type2 enum):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating the
-       initial/current state of the class. Only the "idle" and "stopped"
-       enumerations are recognized.
+       <dd>The client OPTIONALLY supplies this attribute indicating the initial/current state of the class. Only the 'idle(3)' and 'stopped(5)' enumerations are recognized.
 
        <dt>"printer-state-message" (text(MAX)):
 
-       <dd>The client OPTIONALLY supplies this attribute indicating a
-       textual reason for the current class state.
+       <dd>The client OPTIONALLY supplies this attribute indicating a textual reason for the current class state.
 
        <dt>"requesting-user-name-allowed" (1setof name(127))
        <br><i>OR</i>
        <br>"requesting-user-name-denied" (1setof name(127)):
 
-       <dd>The client OPTIONALLY supplies one of these attributes to
-       specify an access control list for incoming print jobs. To allow
-       all users access to a class, use the delete tag for the
-       attribute value.
+       <dd>The client OPTIONALLY supplies one of these attributes to specify an access control list for incoming print jobs. To allow all users access to a class, use the delete tag for the attribute value.
 
 </dl>
 
@@ -1348,27 +832,24 @@ CUPS-Add-Modify-Class request:
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
+
 <h3 class='title'><a name='CUPS_DELETE_CLASS'>CUPS-Delete-Class Operation</a></h3>
 
-<p>The CUPS-Delete-Class operation (0x4007) removes an existing printer
-class from the system.
+<p>The CUPS-Delete-Class operation (0x4007) removes an existing printer class from the system.
 
 <h4>CUPS-Delete-Class Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Delete-Class request:
+<p>The following groups of attributes are supplied as part of the CUPS-Delete-Class request:
 
 <p>Group 1: Operation Attributes
 
@@ -1376,9 +857,7 @@ CUPS-Delete-Class request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri):
 
@@ -1388,35 +867,7 @@ CUPS-Delete-Class request:
 
 <h4>CUPS-Delete-Class Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Delete-Class Response:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Status Message:
-
-       <dd>The standard response status message.
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
-
-</dl>
-
-<h3 class='title'><a name='CUPS_ACCEPT_JOBS'>CUPS-Accept-Jobs Operation</a></h3>
-
-<p>The CUPS-Accept-Jobs operation (0x4008) sets the
-"printer-is-accepting-jobs" attribute to true for the specified printer
-or printer class.
-
-<h4>CUPS-Accept-Jobs Request</h4>
-
-<p>The following groups of attributes are supplied as part of the
-CUPS-Accept-Jobs request:
+<p>The following groups of attributes are send as part of the CUPS-Delete-Class Response:
 
 <p>Group 1: Operation Attributes
 
@@ -1424,106 +875,22 @@ CUPS-Accept-Jobs request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
-
-       <dt>"printer-uri" (uri):
-
-       <dd>The client MUST supply a URI for the specified printer or printer class.
-
-</dl>
-
-<h4>CUPS-Accept-Jobs Response</h4>
-
-<p>The following groups of attributes are send as part of the
-CUPS-Accept-Jobs Response:
-
-<p>Group 1: Operation Attributes
-
-<dl>
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
        <dt>Status Message:
 
        <dd>The standard response status message.
 
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
-
-</dl>
-
-<h3 class='title'><a name='CUPS_REJECT_JOBS'>CUPS-Reject-Jobs Operation</a></h3>
-
-<p>The CUPS-Reject-Jobs operation (0x4009) sets
-the"printer-is-accepting-jobs" attribute to false for the specified
-printer or printer class.
-
-<h4>CUPS-Reject-Jobs Request</h4>
-
-<p>The following groups of attributes are supplied as part of the
-CUPS-Reject-Jobs request:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
-
-       <dt>"printer-uri" (uri):
-
-       <dd>The client MUST supply a URI for the specified printer or printer class.
-
-</dl>
-
-<p>Group 2: Printer Object Attributes
-
-<dl>
-
-       <dt>"printer-state-message" (text(MAX)):
-
-       <dd>The client OPTIONALLY supplies this attribute indicating a
-       textual reason for the current printer state.
-
 </dl>
 
-<h4>CUPS-Reject-Jobs Response</h4>
-
-<p>The following groups of attributes are send as part of the
-CUPS-Reject-Jobs Response:
-
-<p>Group 1: Operation Attributes
-
-<dl>
-
-       <dt>Status Message:
-
-       <dd>The standard response status message.
-
-       <dt>Natural Language and Character Set:
-
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
-
-</dl>
 
 <h3 class='title'><a name='CUPS_SET_DEFAULT'>CUPS-Set-Default Operation</a></h3>
 
-<p>The CUPS-Set-Default operation (0x400A) sets the default printer
-destination for all clients when a resource name of "/printers" is
-specified.
+<p>The CUPS-Set-Default operation (0x400A) sets the default printer destination for all clients when a resource name of "/printers" is specified.
 
 <h4>CUPS-Set-Default Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Set-Default request:
+<p>The following groups of attributes are supplied as part of the CUPS-Set-Default request:
 
 <p>Group 1: Operation Attributes
 
@@ -1531,47 +898,40 @@ CUPS-Set-Default request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri):
 
-       <dd>The client MUST supply a URI for the specified printer or
-       printer class.
+       <dd>The client MUST supply a URI for the specified printer or printer class.
 
 </dl>
 
 <h4>CUPS-Set-Default Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Set-Default Response:
+<p>The following groups of attributes are send as part of the CUPS-Set-Default Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
-<h3 class='title'><span class='info'>CUPS 1.1</span><a name='CUPS_GET_DEVICES'>CUPS-Get-Devices Operation</a></h3>
 
-<p>The CUPS-Get-Devices operation (0x400B) returns all of the
-supported device-uri's for the server.</p>
+<h3 class='title'><span class='info'>Deprecated</span><a name='CUPS_GET_DEVICES'>CUPS-Get-Devices Operation</a></h3>
+
+<p>The CUPS-Get-Devices operation (0x400B) returns all of the supported device-uri's for the server.</p>
 
 <h4>CUPS-Get-Devices Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Get-Devices request:
+<p>The following groups of attributes are supplied as part of the CUPS-Get-Devices request:
 
 <p>Group 1: Operation Attributes
 
@@ -1579,70 +939,53 @@ CUPS-Get-Devices request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"device-class" (type1 keyword):
 
-       <dd>The client OPTIONALLY supplies a device class keyword to select
-       which devices are returned.
+       <dd>The client OPTIONALLY supplies a device class keyword to select which devices are returned.
 
-       <dt>"exclude-schemes" (1setOf name) :<span class='info'>CUPS 1.4/OS X 10.6</span>
+       <dt>"exclude-schemes" (1setOf name): <span class='info'>CUPS 1.4/macOS 10.6</span>
 
-       <dd>The client OPTIONALLY supplies a set of scheme names that the
-       requestor does not want to discover. If the client omits this attribute,
-       the server responds with devices of all schemes specified by
-       the "include-schemes" attribute.
+       <dd>The client OPTIONALLY supplies a set of scheme names that the requestor does not want to discover. If the client omits this attribute, the server responds with devices of all schemes specified by the "include-schemes" attribute.
 
-       <dt>"include-schemes" (1setOf name) :<span class='info'>CUPS 1.4/OS X 10.6</span>
+       <dt>"include-schemes" (1setOf name): <span class='info'>CUPS 1.4/macOS 10.6</span>
 
-       <dd>The client OPTIONALLY supplies a set of scheme names that the
-       requestor wants to discover. If the client omits this attribute,
-       the server responds with devices of all schemes except those specified
-       by the "exclude-schemes" attribute.
+       <dd>The client OPTIONALLY supplies a set of scheme names that the requestor wants to discover. If the client omits this attribute, the server responds with devices of all schemes except those specified by the "exclude-schemes" attribute.
 
        <dt>"limit" (integer (1:MAX)):
 
-       <dd>The client OPTIONALLY supplies this attribute limiting the number of
-       devices that are returned.
+       <dd>The client OPTIONALLY supplies this attribute limiting the number of devices that are returned.
 
-       <dt>"requested-attributes" (1setOf keyword) :
+       <dt>"requested-attributes" (1setOf keyword):
 
-       <dd>The client OPTIONALLY supplies a set of attribute names and/or
-       attribute group names in whose values the requester is interested. If
-       the client omits this attribute, the server responds as if this
-       attribute had been supplied with a value of 'all'.
+       <dd>The client OPTIONALLY supplies a set of attribute names and/or attribute group names in whose values the requester is interested. If the client omits this attribute, the server responds as if this attribute had been supplied with a value of 'all'.
 
-       <dt>"timeout" (integer (1:MAX)) :<span class='info'>CUPS 1.4/OS X 10.6</span>
+       <dt>"timeout" (integer (1:MAX)): <span class='info'>CUPS 1.4/macOS 10.6</span>
 
-       <dd>The client OPTIONALLY supplies this attribute to limit the duration
-       of the lookup. The default timeout is 15 seconds.
+       <dd>The client OPTIONALLY supplies this attribute to limit the duration of the lookup. The default timeout is 15 seconds.
 
 </dl>
 
 <h4>CUPS-Get-Devices Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Get-Devices Response:
+<p>The following groups of attributes are send as part of the CUPS-Get-Devices Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
-<p>Group 2: Device Object Attributes
+<p>Groups 2-N: Device Object Attributes (using printer-attributes-tag group)
 
 <dl>
 
@@ -1651,15 +994,14 @@ CUPS-Get-Devices Response:
 
 </dl>
 
-<h3 class='title'><span class='info'>CUPS 1.1</span><a name='CUPS_GET_PPDS'>CUPS-Get-PPDs Operation</a></h3>
 
-<p>The CUPS-Get-PPDs operation (0x400C) returns all of the
-locally available PPD files on the system.</p>
+<h3 class='title'><span class='info'>Deprecated</span><a name='CUPS_GET_PPDS'>CUPS-Get-PPDs Operation</a></h3>
+
+<p>The CUPS-Get-PPDs operation (0x400C) returns all of the locally available PPD files on the system.</p>
 
 <h4>CUPS-Get-PPDs Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Get-PPDs request:
+<p>The following groups of attributes are supplied as part of the CUPS-Get-PPDs request:
 
 <p>Group 1: Operation Attributes
 
@@ -1667,23 +1009,15 @@ CUPS-Get-PPDs request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
-       <dt>"exclude-schemes" (1setOf name) :<span class='info'>CUPS 1.4/OS X 10.6</span>
+       <dt>"exclude-schemes" (1setOf name): <span class='info'>CUPS 1.4/macOS 10.6</span>
 
-       <dd>The client OPTIONALLY supplies a set of scheme names that the
-       requestor does not want to list. If the client omits this attribute,
-       the server responds with PPDs of all schemes specified by the
-       "include-schemes" attribute.
+       <dd>The client OPTIONALLY supplies a set of scheme names that the requestor does not want to list. If the client omits this attribute, the server responds with PPDs of all schemes specified by the "include-schemes" attribute.
 
-       <dt>"include-schemes" (1setOf name) :<span class='info'>CUPS 1.4/OS X 10.6</span>
+       <dt>"include-schemes" (1setOf name): <span class='info'>CUPS 1.4/macOS 10.6</span>
 
-       <dd>The client OPTIONALLY supplies a set of scheme names that the
-       requestor wants to list. If the client omits this attribute, the server
-       responds with PPDs of all schemes except those specified by the
-       "exclude-schemes" attribute.
+       <dd>The client OPTIONALLY supplies a set of scheme names that the requestor wants to list. If the client omits this attribute, the server responds with PPDs of all schemes except those specified by the "exclude-schemes" attribute.
 
        <dt>"limit" (integer (1:MAX)):
 
@@ -1693,31 +1027,31 @@ CUPS-Get-PPDs request:
 
        <dd>The client OPTIONALLY supplies a printer manufacturer to select which PPDs are returned.
 
-       <dt>"ppd-make-and-model" (text(127)):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"ppd-make-and-model" (text(127)): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies a make and model to select which PPDs are returned.
 
-       <dt>"ppd-model-number" (integer):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"ppd-model-number" (integer): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies a model number to select which PPDs are returned.
 
-       <dt>"ppd-natural-language" (naturalLanguage):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"ppd-natural-language" (naturalLanguage): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies a language to select which PPDs are returned.
 
-       <dt>"ppd-product" (text(127)):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"ppd-product" (text(127)): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies a PostScript product string to select which PPDs are returned.
 
-       <dt>"ppd-psversion" (text(127)):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"ppd-psversion" (text(127)): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies a PostScript version string to select which PPDs are returned.
 
-       <dt>"ppd-type" (type1 keyword):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"ppd-type" (type1 keyword): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies a driver type to select which PPDs are returned.
 
-       <dt>"requested-attributes" (1setOf keyword) :
+       <dt>"requested-attributes" (1setOf keyword):
 
        <dd>The client OPTIONALLY supplies a set of attribute names and/or attribute group names in whose values the requester is interested. If the client omits this attribute, the server responds as if this attribute had been supplied with a value of 'all'. Specify "ppd-make" to get a list of manufacturers.
 
@@ -1732,36 +1066,32 @@ CUPS-Get-PPDs Response:
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
-<p>Group 2: PPD Attributes
+<p>Groups 2-N: PPD Attributes (using printer-attributes-tag group)
 
 <dl>
 
-       <dt>The set of requested attributes and their current values for each
-       PPD file.
+       <dt>The set of requested attributes and their current values for each PPD file.
 
 </dl>
 
+
 <h3 class='title'><span class='info'>CUPS 1.1</span><a name='CUPS_MOVE_JOB'>CUPS-Move-Job Operation</a></h3>
 
-<p>The CUPS-Move-Job operation (0x400D) moves an active print job or all print
-jobs for a printer to a different printer.</p>
+<p>The CUPS-Move-Job operation (0x400D) moves an active print job or all print jobs for a printer to a different printer.</p>
 
 <h4>CUPS-Move-Job Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Move-Job request:
+<p>The following groups of attributes are supplied as part of the CUPS-Move-Job request:
 
 <p>Group 1: Operation Attributes
 
@@ -1769,18 +1099,15 @@ CUPS-Move-Job request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri)
        <br><i>OR</i>
        <dt>"printer-uri" (uri) and "job-id" (integer)
        <br><i>OR</i>
-       <br>"job-uri":
+       <br>"job-uri" (uri):
 
-       <dd>The client MUST supply a URI for the specified printer, the URI for
-       the specified printer and a job ID number, or the job URI.
+       <dd>The client MUST supply a URI for the specified printer, the URI for the specified printer and a job ID number, or the job URI.
 
 </dl>
 
@@ -1788,7 +1115,7 @@ CUPS-Move-Job request:
 
 <dl>
 
-       <dt>"job-printer-uri" (uri)
+       <dt>"job-printer-uri" (uri):
 
        <dd>The client MUST supply a URI for a printer on the same server.
 
@@ -1796,8 +1123,7 @@ CUPS-Move-Job request:
 
 <h4>CUPS-Move-Job Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Move-Job Response:
+<p>The following groups of attributes are send as part of the CUPS-Move-Job Response:
 
 <p>Group 1: Operation Attributes
 
@@ -1809,23 +1135,17 @@ CUPS-Move-Job Response:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
 </dl>
 
-<h3 class='title'><span class='info'>CUPS 1.2/OS X 10.5</span><a name='CUPS_AUTHENTICATE_JOB'>CUPS-Authenticate-Job Operation</a></h3>
+<h3 class='title'><span class='info'>CUPS 1.2/macOS 10.5</span><a name='CUPS_AUTHENTICATE_JOB'>CUPS-Authenticate-Job Operation</a></h3>
 
-<p>The CUPS-Authenticate-Job operation (0x400E) authenticates a print job for
-printing, releasing the job if it is held. Typically this is used when printing
-to a remote server. The authentication information is passed in the HTTP
-request; the HTTP connection is normally encrypted for this type of request.</p>
+<p>The CUPS-Authenticate-Job operation (0x400E) authenticates a print job for printing, releasing the job if it is held. Typically this is used when printing to a remote server. The authentication information is passed in the HTTP request; the HTTP connection is normally encrypted for this type of request.</p>
 
 <h4>CUPS-Authenticate-Job Request</h4>
 
-<p>The following groups of attributes are supplied as part of the
-CUPS-Authenticate-Job request:
+<p>The following groups of attributes are supplied as part of the CUPS-Authenticate-Job request:
 
 <p>Group 1: Operation Attributes
 
@@ -1833,16 +1153,13 @@ CUPS-Authenticate-Job request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri) and "job-id" (integer)
        <br><i>OR</i>
-       <br>"job-uri":
+       <br>"job-uri" (uri):
 
-       <dd>The client MUST supply a URI for the specified printer and
-       a job ID number, or the job URI.
+       <dd>The client MUST supply a URI for the specified printer and a job ID number, or the job URI.
 
 </dl>
 
@@ -1850,36 +1167,31 @@ CUPS-Authenticate-Job request:
 
 <dl>
 
-       <dt>"auth-info" (1setOf text(MAX)):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"auth-info" (1setOf text(MAX)): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
        <dd>The client OPTIONALLY supplies one or more authentication values as specified by the "auth-info-required" attribute.
 
-       <dt>"job-hold-until" (keyword | name(MAX)):<span class='info'>CUPS 1.3/OS X 10.5</span>
+       <dt>"job-hold-until" (keyword | name(MAX)): <span class='info'>CUPS 1.3/macOS 10.5</span>
 
-       <dd>The client OPTIONALLY supplies a new job-hold-until value for the
-       job. If specified and not the "no-hold" value, the job is held instead
-       of released for printing.
+       <dd>The client OPTIONALLY supplies a new job-hold-until value for the job. If specified and not the "no-hold" value, the job is held instead of released for printing.
 
 </dl>
 
 <h4>CUPS-Authenticate-Job Response</h4>
 
-<p>The following groups of attributes are send as part of the
-CUPS-Authenticate-Job Response:
+<p>The following groups of attributes are send as part of the CUPS-Authenticate-Job Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
 </dl>
 
@@ -1893,28 +1205,20 @@ CUPS-Authenticate-Job Response:
 
 </dl>
 
-<h3 class='title'><span class='info'>CUPS 1.3/OS X 10.5</span><a name='CUPS_GET_PPD'>CUPS-Get-PPD Operation</a></h3>
 
-<p>The CUPS-Get-PPD operation (0x400F) gets a PPD file from the
-server. The PPD file can be specified using a <tt>ppd-name</tt>
-returned by <a href='#CUPS_GET_PPDS'><tt>CUPS-Get-PPDs</tt></a>
-or using the <tt>printer-uri</tt> for a queue.</p>
+<h3 class='title'><span class='info'>Deprecated</span><a name='CUPS_GET_PPD'>CUPS-Get-PPD Operation</a></h3>
+
+<p>The CUPS-Get-PPD operation (0x400F) gets a PPD file from the server. The PPD file can be specified using a <tt>ppd-name</tt> returned by <a href='#CUPS_GET_PPDS'><tt>CUPS-Get-PPDs</tt></a> or using the <tt>printer-uri</tt> for a queue.</p>
 
-<p>If the PPD file is found, <tt>successful-ok</tt> is returned with
-the PPD file following the response data.</p>
+<p>If the PPD file is found, <tt>successful-ok</tt> is returned with the PPD file following the response data.</p>
 
-<p>If the PPD file cannot be served by the local server because
-the <tt>printer-uri</tt> attribute points to an external printer,
-a <tt>cups-see-other</tt> status is returned with the correct
-URI to use.</p>
+<p>If the PPD file cannot be served by the local server because the <tt>printer-uri</tt> attribute points to an external printer, a <tt>cups-see-other</tt> status is returned with the correct URI to use.</p>
 
-<p>If the PPD file does not exist, <tt>client-error-not-found</tt> is
-returned.</p>
+<p>If the PPD file does not exist, <tt>client-error-not-found</tt> is returned.</p>
 
 <h4>CUPS-Get-PPD Request</h4>
 
-<p>The following group of attributes is supplied as part of the
-CUPS-Get-PPD request:
+<p>The following group of attributes is supplied as part of the CUPS-Get-PPD request:
 
 <p>Group 1: Operation Attributes
 
@@ -1922,9 +1226,7 @@ CUPS-Get-PPD request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri)
        <br><i>OR</i>
@@ -1936,53 +1238,42 @@ CUPS-Get-PPD request:
 
 <h4>CUPS-Get-PPD Response</h4>
 
-<p>The following group of attributes is sent as part of the
-CUPS-Get-PPD Response:
+<p>The following group of attributes is sent as part of the CUPS-Get-PPD Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
        <dt>"printer-uri" (uri):
 
-       <dd>The printer that provides the actual PPD file when
-       the status code is cups-see-other (0x280)
+       <dd>The printer that provides the actual PPD file when the status code is cups-see-other (0x280).
 
 </dl>
 
-<p>If the status code is <tt>successful-ok</tt>, the PPD file follows
-the end of the IPP response.</p>
+<p>If the status code is <tt>successful-ok</tt>, the PPD file follows the end of the IPP response.</p>
 
-<h3 class='title'><span class='info'>CUPS 1.4/OS X 10.6</span><a name='CUPS_GET_DOCUMENT'>CUPS-Get-Document Operation</a></h3>
 
-<p>The CUPS-Get-Document operation (0x4027) gets a document file from a
-job on the server. The document file is specified using the
-<tt>document-number</tt> and either the <tt>job-uri</tt> or <tt>printer-uri</tt>
-and <tt>job-id</tt> identifying the job.</p>
+<h3 class='title'><span class='info'>CUPS 1.4/macOS 10.6</span><a name='CUPS_GET_DOCUMENT'>CUPS-Get-Document Operation</a></h3>
 
-<p>If the document file is found, <tt>successful-ok</tt> is returned with
-the document file following the response data.</p>
+<p>The CUPS-Get-Document operation (0x4027) gets a document file from a job on the server. The document file is specified using the <tt>document-number</tt> and either the <tt>job-uri</tt> or <tt>printer-uri</tt> and <tt>job-id</tt> identifying the job.</p>
 
-<p>If the document file does not exist, <tt>client-error-not-found</tt> is
-returned.</p>
+<p>If the document file is found, <tt>successful-ok</tt> is returned with the document file following the response data.</p>
 
-<p>If the requesting user does not have access to the document file,
-<tt>client-error-not-authorized</tt> is returned.
+<p>If the document file does not exist, <tt>client-error-not-found</tt> is returned.</p>
+
+<p>If the requesting user does not have access to the document file, <tt>client-error-not-authorized</tt> is returned.
 
 <h4>CUPS-Get-Document Request</h4>
 
-<p>The following group of attributes is supplied as part of the
-CUPS-Get-Document request:
+<p>The following group of attributes is supplied as part of the CUPS-Get-Document request:
 
 <p>Group 1: Operation Attributes
 
@@ -1990,9 +1281,7 @@ CUPS-Get-Document request:
 
        <dt>Natural Language and Character Set:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.1 of the IPP Model and
-       Semantics document.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
        <dt>"printer-uri" (uri) and "job-id" (integer)
        <br><i>OR</i>
@@ -2002,33 +1291,25 @@ CUPS-Get-Document request:
 
        <dt>"document-number" (integer(1:MAX)):
 
-       <dd>The client MUST supply a document number to retrieve. The
-       <tt>document-count</tt> attribute for the job defines the maximum
-       document number that can be specified. In the case of jobs with
-       banners (<tt>job-sheets</tt> is not "none"), document number 1
-       will typically contain the start banner and document number N
-       will typically contain the end banner.
+       <dd>The client MUST supply a document number to retrieve. The <tt>document-count</tt> attribute for the job defines the maximum document number that can be specified. In the case of jobs with banners (<tt>job-sheets</tt> is not "none"), document number 1 will typically contain the start banner and document number N will typically contain the end banner.
 
 </dl>
 
 <h4>CUPS-Get-Document Response</h4>
 
-<p>The following group of attributes is sent as part of the
-CUPS-Get-Document Response:
+<p>The following group of attributes is sent as part of the CUPS-Get-Document Response:
 
 <p>Group 1: Operation Attributes
 
 <dl>
 
-       <dt>Status Message:
+       <dt>Natural Language and Character Set:
 
-       <dd>The standard response status message.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-       <dt>Natural Language and Character Set:
+       <dt>Status Message:
 
-       <dd>The "attributes-charset" and "attributes-natural-language"
-       attributes as described in section 3.1.4.2 of the IPP Model and
-       Semantics document.
+       <dd>The standard response status message.
 
        <dt>"document-format" (mimeType):
 
@@ -2044,560 +1325,439 @@ CUPS-Get-Document Response:
 
 </dl>
 
-<p>If the status code is <tt>successful-ok</tt>, the document file follows
-the end of the IPP response.</p>
+<p>If the status code is <tt>successful-ok</tt>, the document file follows the end of the IPP response.</p>
 
 
-<h2 class='title'><a name='ATTRIBUTES'>Attributes</a></h2>
+<h3 class='title'><a name='CUPS_CREATE_LOCAL_PRINTER'>CUPS-Create-Local-Printer</a></h3>
 
-<p>CUPS provides many extension attributes to support multiple
-devices, PPD files, standard job filters, printers, and printer
-classes.</p>
+<p>The CUPS-Create-Local-Printer operation (0x4028) creates a local (temporary) print queue pointing to a remote IPP Everywhere Printer. The queue will remain until the scheduler idle exits, is restarted, or the system is restarted or shutdown. Temporary print queues can be made permanent by an administrator by setting the "printer-is-shared" attribute to 'true'.</p>
 
-<h3 class='title'><a name='DEVICE_ATTRIBUTES'>Device Attributes</a></h3>
+<p>At a minimum, the scheduler requires a name and URI for the Printer to add. When successful, the local "printer-uri" values are returned and may be used by the Client to submit Job Creation Requests, monitor for state changes, and so forth.</p>
 
-<p>Device attributes are returned by the CUPS-Get-Devices
-operation and enumerate all of the available hardware devices and
-network protocols that are supported by the server.</p>
+<p>If the named printer already exists, the scheduler will reject the request with the 'client-error-not-possible' status code.</p>
 
-<h4><a name="device-class">device-class (type2 keyword)</a></h4>
+<p>Access Rights: The authenticated user performing this operation MUST be a Local User of the system, and the request MUST be made over a local (domain socket or loopback interface) address. Otherwise, the request will be rejected with the 'client-error-forbidden' status code.</p>
 
-<p>The device-class attribute specifies the class of device and can be
-one of the following:
+<h4>CUPS-Create-Local-Printer Request</h4>
 
-<ul>
+<p>The following group of attributes is supplied as part of the CUPS-Create-Local-Printer request:
 
-       <li>"file" - a disk file.
+<p>Group 1: Operation Attributes
 
-       <li>"direct" - a parallel or fixed-rate serial data port,
-       currently used for Centronics, IEEE-1284, and USB printer
-       ports.
+<dl>
 
-       <li>"serial" - a variable-rate serial port.
+       <dt>Natural Language and Character Set:
 
-       <li>"network" - a network connection, typically via AppSocket,
-       HTTP, IPP, LPD, or SMB/CIFS protocols.
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.1 of the IPP Model and Semantics document.
 
-</ul>
+</dl>
 
-<h4><a name="device-id">device-id (text(127))</a><span class="info">CUPS 1.2/OS X 10.5</span></h4>
+<p>Group 2: Printer Attributes
 
-<p>The device-id attribute specifies the IEEE-1284 device ID
-string for the device.</p>
+<dl>
 
-<h4><a name="device-info">device-info (text(127))</a></h4>
+       <dt>"printer-name" (name(127)):
 
-<p>The device-info attribute specifies a human-readable string describing
-the device, e.g. "Parallel Port #1".
+       <dd>The Client MUST supply this attribute which provides the name for the new Printer.
 
-<h4><a name="device-location">device-location (text(127))</a><span class="info">CUPS 1.4/OS X 10.6</span></h4>
+       <dt>"device-uri" (uri):
 
-<p>The device-location attribute specifies the physical location of the
-printer.
+       <dd>The Client MUST supply this attribute which provides an "ipp" or "ipps" URI pointing to an IPP Everywhere Printer.
 
-<h4><a name="device-make-and-model">device-make-and-model (text(127))</a></h4>
+       <dt>"printer-device-id" (text(1023)):
 
-<p>The device-make-and-model attribute specifies a device
-identification string provided by the printer connected to the device.
-If the device or printer does not support identification then this
-attribute contains the string "unknown".
+       <dd>The Client OPTIONALLY supplies this attribute which provides the IEEE 1284 device ID for the new Printer.
 
-<h4><a name="device-uri">device-uri (uri)</a></h4>
+       <dt>"printer-geo-location" (uri):
 
-<p>The device-uri attribute specifies a unique identifier for the
-device. The actual format of the device-uri string depends on the value
-of the device-class attribute:
+       <dd>The Client OPTIONALLY supplies this attribute which provides the geo-location of the new Printer as a "geo" URI.
 
-<ul>
+       <dt>"printer-info" (text(127)):
 
-       <li>"file" - The device-uri will be of the form
-       "file:///path/to/filename".
-
-       <li>"direct" - The device-uri will be of the form
-       "scheme:/dev/filename" or "scheme://vendor/identifier",
-       where scheme may be "parallel" or "usb" in the current
-       implementation.
-
-       <li>"serial" - The device-uri will be of the form
-       "serial:/dev/filename?baud=value+parity=value+flow=value".
-       The baud value is the data rate in bits per second; the
-       supported values depend on the underlying hardware.
-       The parity value can be one of "none", "even", or "odd".
-       The flow value can be one of "none", "soft" (XON/XOFF
-       handshaking), "hard" or "rts/cts" (RTS/CTS handshaking),
-       or "dtrdsr" (DTR/DSR handshaking).
-
-       <p>The URI returned by CUPS-Get-Devices will contain the
-       maximum baud rate supported by the device and the best
-       type of flow control available ("soft" or "hard").
-
-       <li>"network" - The device-uri will be of the form
-       "scheme://[username:password@]hostname[:port]/[resource]",
-       where scheme may be "http", "https", "ipp", "lpd", "smb", or
-       "socket" in the current implementation.
-
-       <p>The URI returned by CUPS-Get-Devices will only contain
-       the scheme name ("scheme"). It is up to the client
-       application to add the appropriate host and other
-       information when adding a new printer.
-
-       <p>The URI returned by Get-Printer-Attributes and
-       CUPS-Get-Printers has any username and password information
-       stripped; the information is still stored and used by the
-       server internally to perform any needed authentication.
+       <dd>The Client OPTIONALLY supplies this attribute which provides the description for the new Printer.
 
-</ul>
+       <dt>"printer-location" (text(127)):
 
-<h3 class='title'><a name='JOB_TEMPLATE_ATTRIBUTES'>Job Template Attributes</a></h3>
+       <dd>The Client OPTIONALLY supplies this attribute which provides the location of the new Printer.
 
-<h4><a name="auth-info">auth-info (1setOf text(MAX))</a><span class="info">CUPS 1.3/OS X 10.5</span></h4>
+</dl>
 
-<p>The auth-info attribute specifies the authentication information to use when printing to a remote device. The order and content of each text value is specifed by the <a href="#auth-info-required">auth-info-required</a> printer attribute.
+<h4>CUPS-Create-Local-Printer Response</h4>
 
-<h4><a name="cpi">cpi (type2 enum)</a></h4>
+<p>The following group of attributes is sent as part of the CUPS-Create-Local-Printer Response:
 
-<p>The cpi attribute specifies the number of characters per inch when
-printing text files. Only the values 10, 12, and 17 are currently
-supported. The default value is 10.
+<p>Group 1: Operation Attributes
 
-<h4><a name="fit-to-page">fit-to-page (boolean)</a><span class="info">CUPS 1.4/OS X 10.6</span></h4>
+<dl>
 
-<p>The fit-to-page attribute specifies whether to scale documents to fit on the
-selected media (fit-to-page=true) or use the physical size specified in the
-document (fit-to-page=false). The default value is false.
+       <dt>Natural Language and Character Set:
 
-<h4><a name="job-billing">job-billing (text(MAX))</a><span class='info'>CUPS 1.1</span></h4>
+       <dd>The "attributes-charset" and "attributes-natural-language" attributes as described in section 3.1.4.2 of the IPP Model and Semantics document.
 
-<p>The job-billing attribute provides a text value to associate with a job
-for billing purposes.
+       <dt>Status Message:
 
-<blockquote><b>Note:</b> This attribute has been superceded by the "job-account-id" attribute defined in PWG 5100.11: Job and Printer Extensions - Set 2.</blockquote>
+       <dd>The standard response status message.
 
-<h4><a name="job-cancel-after">job-cancel-after (integer(1:MAX))</a><span class='info'>CUPS 2.0</span></h4>
+</dl>
 
-<p>The job-cancel-after attribute provides the maximum number of seconds that are allowed for processing a job.</p>
+<p>Group 2: Printer Attributes
 
-<h4><a name="job-hold-until">job-hold-until (keyword | name(MAX))</a><span class='info'>CUPS 1.1</span></h4>
+<dl>
 
-<p>The job-hold-until attribute specifies a hold time. In addition to the
-standard IPP/1.1 keyword names, CUPS supports name values of the form
-"HH:MM" and "HH:MM:SS" that specify a hold time. The hold time is in
-Universal Coordinated Time (UTC) and <i>not</i> in the local time zone. If the
-specified time is less than the current time, the job is held until the
-next day.
+       <dt>"printer-id" (integer(0:65535)):
 
-<h4><a name="job-media-progress">job-media-progress (integer(0:100))</a><span class='info'>CUPS 1.4/OS X 10.6</span></h4>
+       <dd>The numeric identifier for the created Printer.
 
-<p>The job-media-progress attribute specifies the percentage of completion of
-the current page. It is only valid when the job-state attribute has the
-"processing" value (5).</p>
+       <dt>"printer-is-accepting-jobs" (boolean):
 
-<h4><a name="job-printer-state-message">job-printer-state-message (text(MAX))</a><span class='info'>CUPS 1.3/OS X 10.5</span></h4>
+       <dd>Whether the created Printer is accepting jobs at the time of the response.
 
-<p>The job-printer-state-message attribute provides the last known value of the printer-state-message attribute for the printer that processed (or is processing) the job.</p>
+       <dt>"printer-state" (type1 enum):
 
-<h4><a name="job-printer-state-reasons">job-printer-state-reasons (1setOf type2 keyword)</a><span class='info'>CUPS 1.3/OS X 10.5</span></h4>
+       <dd>The state of the created Printer at the time of the response.
 
-<p>The job-printer-state-reasons attribute provides the last known value of the printer-state-reasons attribute for the printer that processed (or is processing) the job.</p>
+       <dt>"printer-state-reasons" (1setOf type2 keyword):
 
-<h4><a name="job-sheets">job-sheets (1setof type3 keyword | name(MAX))</a><span class='info'>CUPS 1.1</span></h4>
+       <dd>The state keywords for the created Printer at the time of the response.
 
-<p>The job-sheets attribute specifies one or two banner files that are printed
-before and after a job. The reserved value of "none" disables banner printing.
-The default value is stored in the job-sheets-default attribute.
+       <dt>"printer-uri-supported" (1setOf uri):
 
-<p>If only one value is supplied, the banner file is printed before the job.
-If two values are supplied, the first value is used as the starting banner
-file and the second as the ending banner file.
+       <dd>The URIs for the created Printer.
 
-<h4><a name="job-originating-host-name">job-originating-host-name (name(MAX))</a></h4>
+</dl>
 
-<p><i>(CUPS 1.1.5 and higher)</i>
 
-<p>The job-originating-host-name attribute specifies the host
-from which the job was queued. The value will be the hostname or
-IP address of the client depending on whether hostname
-resolution is enabled.  The localhost address (127.0.0.1) is
-<b>always</b> resolved to the name "localhost".
+<h2 class='title'><a name='ATTRIBUTES'>Attributes</a></h2>
 
-<p>This attribute is read-only.
+<p>CUPS provides many extension attributes to support multiple devices, PPD files, standard job filters, printers, and printer classes.</p>
 
-<h4><a name="lpi">lpi (type2 enum)</a></h4>
+<h3 class='title'><a name='DEVICE_ATTRIBUTES'>Device Attributes</a><span class="info">Deprecated</span></h3>
 
-<p>The lpi attribute specifies the number of lines per inch when
-printing text files. Only the values 6 and 8 are currently supported.
-The default value is 6.
+<p>Device attributes are returned by the CUPS-Get-Devices operation and enumerate all of the available hardware devices and network protocols that are supported by the server. Device attributes are reported in the printer-attributes-tag group.</p>
 
-<h4><a name="mirror">mirror (boolean)</a></h4>
+<h4><a name="device-class">device-class (type2 keyword)</a><span class="info">Deprecated</span></h4>
 
-<p>The mirror attribute specifies whether pages are mirrored on
-their X axis, which is useful for printing transfer images on
-special media. The default value is false.
+<p>The "device-class" attribute provides the class of device and can be one of the following:
 
-<h4><a name="number-up-layout">number-up-layout (type2 keyword)</a><span class='info'>Deprecated/Introduced in CUPS 1.1.15</span></h4>
+<ul>
 
-<p>The number-up-layout attribute specifies the order each input
-page is placed on each output page. The following keywords are
-presently defined:
+       <li>'file': A disk file.
 
-<ul>
+       <li>'direct': A parallel or fixed-rate serial data port,
+       currently used for Centronics, IEEE-1284, and USB printer
+       ports.
 
-       <li><CODE>btlr</CODE> - Bottom to top, left to right</li>
+       <li>'serial': A variable-rate serial port.
 
-       <li><CODE>btrl</CODE> - Bottom to top, right to left</li>
+       <li>'network': A network connection, typically via AppSocket, HTTP, IPP, LPD, or SMB/CIFS protocols.
 
-       <li><CODE>lrbt</CODE> - Left to right, bottom to top</li>
+</ul>
 
-       <li><CODE>lrtb</CODE> - Left to right, top to bottom (default)</li>
+<h4><a name="device-id">device-id (text(1023))</a><span class="info">Deprecated</span></h4>
 
-       <li><CODE>rlbt</CODE> - Right to left, bottom to top</li>
+<p>The "device-id" attribute provides the IEEE-1284 device ID string for the device.</p>
 
-       <li><CODE>rltb</CODE> - Right to left, top to bottom</li>
+<h4><a name="device-info">device-info (text(127))</a><span class="info">Deprecated</span></h4>
 
-       <li><CODE>tblr</CODE> - Top to bottom, left to right</li>
+<p>The "device-info" attribute specifies a human-readable string describing the device, e.g., 'Parallel Port #1'.
 
-       <li><CODE>tbrl</CODE> - Top to bottom, right to left</li>
+<h4><a name="device-location">device-location (text(127))</a><span class="info">Deprecated</span></h4>
 
-</ul>
+<p>The "device-location" attribute specifies the physical location of the printer, e.g., '2nd Floor Computer Lab'.
 
-<blockquote><b>Note:</b>
+<h4><a name="device-make-and-model">device-make-and-model (text(127))</a><span class="info">Deprecated</span></h4>
 
-<p>This attribute is deprecated in favor of the PWG presentation-direction-number-up attribute and will be removed in a future release.</p>
+<p>The "device-make-and-model" attribute specifies a device identification string provided by the printer connected to the device. If the device or printer does not support identification then this attribute contains the string 'unknown'.
 
-</blockquote>
+<h4><a name="device-uri">device-uri (uri)</a></h4>
 
-<h4><a name="page-border">page-border (type2 keyword)</a><span class='info'>CUPS 1.1.15</span></h4>
-<p>The page-border attribute specifies whether a border is
-draw around each page. The following keywords are presently
-defined:
+<p>The "device-uri" attribute specifies a unique identifier for the device. The actual format of the "device-uri" string depends on the value of the "device-class" attribute:
 
 <ul>
 
-       <li><CODE>double</CODE> - Two hairline borders are drawn</li>
+       <li>'file': The "device-uri" will be of the form 'file:///path/to/filename'.
+
+       <li>'direct': The "device-uri" will be of the form 'scheme:/dev/filename' or 'scheme://vendor/identifier', where scheme may be 'parallel' or 'usb' in the current implementation.
+
+       <li>'serial': The "device-uri" will be of the form 'serial:/dev/filename?baud=value+parity=value+flow=value'. The baud value is the data rate in bits per second; the supported values depend on the underlying hardware. The parity value can be one of "none", "even", or "odd". The flow value can be one of "none", "soft" (XON/XOFF handshaking), "hard" or "rts/cts" (RTS/CTS handshaking), or "dtrdsr" (DTR/DSR handshaking).
 
-       <li><CODE>double-thick</CODE> - Two 1pt borders are drawn</li>
+       <p>The URI returned by CUPS-Get-Devices will contain the maximum baud rate supported by the device and the best type of flow control available ("soft" or "hard").
 
-       <li><CODE>none</CODE> - No border is drawn (default)</li>
+       <li>'network': The "device-uri" will be of the form 'scheme://[username:password@]hostname[:port]/[resource]', where scheme may be "http", "https", "ipp", "lpd", "smb", or "socket" in the current implementation.
 
-       <li><CODE>single</CODE> - A single hairline border is drawn</li>
+       <p>The URI returned by CUPS-Get-Devices MAY only contain the scheme name ('scheme'). It is up to the client application to add the appropriate host and other information when adding a new printer.
 
-       <li><CODE>single-thick</CODE> - A single 1pt border is drawn</li>
+       <p>The URI returned by Get-Printer-Attributes and CUPS-Get-Printers has any username and password information stripped; the information is still stored and used by the server internally to perform any needed authentication.
 
 </ul>
 
-<h4><a name="page-bottom">page-bottom (integer(0:MAX))</a><span class="info">Deprecated</span></h4>
 
-<p>The page-bottom attribute specifies the bottom margin in points (72 points
-equals 1 inch). The default value is the device physical margin.
+<h3 class='title'><a name='JOB_ATTRIBUTES'>Job Attributes</a></h3>
+
+<h4><a name="auth-info">auth-info (1setOf text(MAX))</a><span class="info">CUPS 1.3/macOS 10.5</span></h4>
+
+<p>The "auth-info" attribute specifies the authentication information to use when printing to a remote device. The order and content of each text value is specifed by the <a href="#auth-info-required">auth-info-required</a> printer attribute.
+
+<h4><a name="job-cancel-after">job-cancel-after (integer(1:MAX))</a><span class='info'>CUPS 2.0</span></h4>
+
+<p>The "job-cancel-after" attribute provides the maximum number of seconds that are allowed for processing a job.</p>
+
+<h4><a name="job-hold-until">job-hold-until (keyword | name(MAX))</a><span class='info'>CUPS 1.1</span></h4>
+
+<p>The "job-hold-until" attribute specifies a hold time. In addition to the standard IPP/1.1 keyword names, CUPS supports name values of the form "HH:MM" and "HH:MM:SS" that specify a hold time. The hold time is in Universal Coordinated Time (UTC) and <i>not</i> in the local time zone. If the specified time is less than the current time, the job is held until the next day.
+
+<h4><a name="job-media-progress">job-media-progress (integer(0:100))</a><span class='info'>CUPS 1.4/macOS 10.6</span></h4>
+
+<p>The "job-media-progress" status attribute specifies the percentage of completion of the current page. It is only valid when the "job-state" attribute has the 'processing(5)' value.</p>
+
+<h4><a name="job-printer-state-message">job-printer-state-message (text(MAX))</a><span class='info'>CUPS 1.3/macOS 10.5</span></h4>
+
+<p>The "job-printer-state-message" status attribute provides the last known value of the "printer-state-message" attribute for the printer that processed (or is processing) the job.</p>
+
+<h4><a name="job-printer-state-reasons">job-printer-state-reasons (1setOf type2 keyword)</a><span class='info'>CUPS 1.3/macOS 10.5</span></h4>
+
+<p>The "job-printer-state-reasons" status attribute provides the last known value of the "printer-state-reasons" attribute for the printer that processed (or is processing) the job.</p>
+
+<h4><a name="job-sheets">job-sheets (1setof type3 keyword | name(MAX))</a><span class='info'>CUPS 1.1</span></h4>
+
+<p>The "job-sheets" attribute specifies one or two banner files that are printed before and after a job. The reserved value of "none" disables banner printing. The default value is stored in the "job-sheets-default" attribute.
+
+<p>If only one value is supplied, the banner file is printed before the job. If two values are supplied, the first value is used as the starting banner file and the second as the ending banner file.
+
+<h4><a name="job-originating-host-name">job-originating-host-name (name(MAX))</a><span class='info'>CUPS 1.1.5/macOS 10.2</span></h4>
+
+<p>The "job-originating-host-name" status attribute specifies the host from which the job was queued. The value will be the hostname or IP address of the client depending on whether hostname resolution is enabled.  The localhost address (127.0.0.1) is <b>always</b> resolved to the name "localhost".
 
-<h4><a name="page-label">page-label (text(MAX))</a><span class='info'>Deprecated</span></h4>
-<p>The page-label attribute provides a text value to place in
-the header and footer on each page. If a classification level is
-set on the server, then this classification is printed before
-the page label.
+<p>This attribute is read-only.
 
-<h4><a name="page-left">page-left (integer(0:MAX))</a><span class="info">Deprecated</span></h4>
+<h4><a name="page-border">page-border (type2 keyword)</a><span class='info'>CUPS 1.1.15</span></h4>
 
-<p>The page-left attribute specifies the left margin in points (72 points
-equals 1 inch). The default value is the device physical margin.
+<p>The "page-border" attribute specifies whether a border is draw around each page. The following keywords are presently defined:
 
-<h4><a name="page-right">page-right (integer(0:MAX))</a><span class="info">Deprecated</span></h4>
+<ul>
 
-<p>The page-right attribute specifies the right margin in points (72 points
-equals 1 inch). The default value is the device physical margin.
+       <li>'double': Two hairline borders are drawn</li>
 
-<h4><a name="page-set">page-set (type2 keyword)</a></h4>
+       <li>'double-thick': Two 1pt borders are drawn</li>
 
-<p>The page-set attribute specifies which pages to print in a file. The
-supported keywords are "all", "even", and "odd". The default value is
-"all".
+       <li>'none': No border is drawn (default)</li>
 
-<h4><a name="page-top">page-top (integer(0:MAX))</a><span class="info">Deprecated</span></h4>
+       <li>'single': A single hairline border is drawn</li>
 
-<p>The page-top attribute specifies the top margin in points (72 points
-equals 1 inch). The default value is the device physical margin.
+       <li>'single-thick': A single 1pt border is drawn</li>
 
-<h4><a name="prettyprint">prettyprint (boolean)</a><span class="info">Deprecated</span></h4>
+</ul>
 
-<p>The prettyprint attribute specifies whether text files should be printed
-with a shaded header and keyword highlighting (prettyprint=true) or without
-additional formatting (prettyprint=false). The default value is false.
+<h4><a name="page-set">page-set (type2 keyword)</a><span class="info">Deprecated</span></h4>
 
-<h4><a name="wrap">wrap (boolean)</a><span class="info">Deprecated</span></h4>
+<p>The "page-set" attribute specifies which pages to print in a file. The supported keywords are 'all', 'even', and 'odd'. The default value is 'all'.
 
-<p>The wrap attribute specifies whether long lines should be wrapped
-(wrap=true) or not (wrap=false) when printing text files. The default
-value is true.
+<h3 class='title'><a name='PPD_ATTRIBUTES'>PPD Attributes</a><span class="info">Deprecated</span></h3>
 
-<h3 class='title'><a name='PPD_ATTRIBUTES'>PPD Attributes</a></h3>
+<p>PPD attributes are returned in the printer-attributes-tag group.
 
-<h4><a name="ppd-device-id">ppd-device-id (text(127))</a></h4>
+<h4><a name="ppd-device-id">ppd-device-id (text(127))</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-device-id attribute specifies the IEEE-1284 device ID
-string for the device described by the PPD file.</p>
+<p>The "ppd-device-id" attribute specifies the IEEE-1284 device ID string for the device described by the PPD file.</p>
 
-<h4><a name="ppd-make">ppd-make (text(127))</a></h4>
+<h4><a name="ppd-make">ppd-make (text(127))</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-make attribute specifies the manufacturer of the printer
-(the Manufacturer attribute in the PPD file). If the manufacturer
-is not specified in the PPD file then an educated guess is made using
-the NickName attribute in the PPD file.
+<p>The "ppd-make" attribute specifies the manufacturer of the printer (the Manufacturer attribute in the PPD file). If the manufacturer is not specified in the PPD file then an educated guess is made using the NickName attribute in the PPD file.
 
-<h4><a name="ppd-make-and-model">ppd-make-and-model (text(127))</a></h4>
+<h4><a name="ppd-make-and-model">ppd-make-and-model (text(127))</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-make-and-model attribute specifies the manufacturer and model
-name of the PPD file (the NickName attribute in the PPD file). If the
-make and model is not specified in the PPD file then the ModelName or
-ShortNickName attributes are used instead.
+<p>The "ppd-make-and-model" attribute specifies the manufacturer and model name of the PPD file (the NickName attribute in the PPD file). If the make and model is not specified in the PPD file then the ModelName or ShortNickName attributes are used instead.
 
-<h4><a name="ppd-model-number">ppd-model-number (integer)</a><span class="info">CUPS 1.3/OS X 10.5</span></h4>
+<h4><a name="ppd-model-number">ppd-model-number (integer)</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-model-number attribute provides the <tt>cupsModelNumber</tt> value from the PPD file.
+<p>The "ppd-model-number" attribute provides the <tt>cupsModelNumber</tt> value from the PPD file.
 
-<h4><a name="ppd-name">ppd-name (name(255))</a></h4>
+<h4><a name="ppd-name">ppd-name (name(255))</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-name attribute specifies either the PPD filename on the server relative to the model directory or a URI that maps to a specific driver interface in the driver directory. The forward slash (/) is used to delineate directories.
+<p>The "ppd-name" attribute specifies either the PPD filename on the server relative to the model directory or a URI that maps to a specific driver interface in the driver directory. The forward slash (/) is used to delineate directories.
 
-<h4><a name="ppd-natural-language">ppd-natural-language (1setOf naturalLanguage)</a></h4>
+<h4><a name="ppd-natural-language">ppd-natural-language (1setOf naturalLanguage)</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-natural-language attribute specifies the language encoding
-of the PPD file (the LanguageVersion attribute in the PPD file). If the
-language is unknown or undefined then "en" (English) is assumed.
+<p>The "ppd-natural-language" attribute specifies the language encoding of the PPD file (the LanguageVersion attribute in the PPD file). If the language is unknown or undefined then "en" (English) is assumed.
 
-<h4><a name="ppd-product">ppd-product (1setOf text(127))</a></h4>
+<h4><a name="ppd-product">ppd-product (1setOf text(127))</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-product attribute specifies the Product attribute values in the PPD file.
+<p>The "ppd-product" attribute specifies the Product attribute values in the PPD file.
 
-<h4><a name="ppd-psversion">ppd-psversion (1setOf text(127))</a><span class="info">CUPS 1.3/OS X 10.5</span></h4>
+<h4><a name="ppd-psversion">ppd-psversion (1setOf text(127))</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-product attribute specifies the PSVersion attribute values in the PPD file.
+<p>The "ppd-product" attribute specifies the PSVersion attribute values in the PPD file.
 
-<h4><a name="ppd-type">ppd-type (type1 keyword)</a><span class="info">CUPS 1.3/OS X 10.5</span></h4>
+<h4><a name="ppd-type">ppd-type (type1 keyword)</a><span class="info">Deprecated</span></h4>
 
-<p>The ppd-type attribute specifies the type of driver described by the PPD file:</p>
+<p>The "ppd-type" attribute specifies the type of driver described by the PPD file:</p>
 
 <ul>
 
-       <li><tt>fax</tt> - A facsimile or multi-function device</li>
+       <li>'fax': A facsimile or multi-function device</li>
 
-       <li><tt>pdf</tt> - A PDF printer</li>
+       <li>'pdf': A PDF printer</li>
 
-       <li><tt>postscript</tt> - A PostScript printer (no filters)</li>
+       <li>'postscript': A PostScript printer (no filters)</li>
 
-       <li><tt>raster</tt> - A CUPS raster driver</li>
+       <li>'raster': A CUPS raster driver</li>
 
-       <li><tt>unknown</tt> - An unknown or hybrid driver</li>
+       <li>'unknown': An unknown or hybrid driver</li>
 
 </ul>
 
 
 <h3 class='title'><a name='PRINTER_ATTRIBUTES'>Printer Attributes</a></h3>
 
-<h4><a name="auth-info-required">auth-info-required (1setOf type2 keyword)</a><span class="info">CUPS 1.3/OS X 10.5</span></h4>
+<h4><a name="auth-info-required">auth-info-required (1setOf type2 keyword)</a><span class="info">CUPS 1.3/macOS 10.5</span></h4>
 
-<p>The auth-info-required attribute specifies the authentication information that is required for printing a job. The following keywords are recognized:</p>
+<p>The "auth-info-required" attribute specifies the authentication information that is required for printing a job. The following keywords are recognized:</p>
 
 <ul>
 
-       <li><tt>domain</tt> - A domain name is required.</li>
+       <li>'domain': A domain name is required.</li>
 
-       <li><tt>none</tt> - No authentication is required - this keyword can only appear by itself.</li>
+       <li>'none': No authentication is required - this keyword can only appear by itself.</li>
 
-       <li><tt>password</tt> - A password is required.</li>
+       <li>'password': A password is required.</li>
 
-       <li><tt>username</tt> - A username is required.</li>
+       <li>'username': A username is required.</li>
 
 </ul>
 
 <h4><a name="job-k-limit">job-k-limit (integer)</a><span class='info'>CUPS 1.1</span></h4>
 
-<p>The job-k-limit attribute specifies the maximum number of kilobytes that
-may be printed by a user, including banner files. The default value of 0
-specifies that there is no limit.
+<p>The "job-k-limit" attribute specifies the maximum number of kilobytes that may be printed by a user, including banner files. The default value of 0 specifies that there is no limit.
 
 <h4><a name="job-page-limit">job-page-limit (integer)</a><span class='info'>CUPS 1.1</span></h4>
 
-<p>The job-page-limit attribute specifies the maximum number of pages that
-may be printed by a user, including banner files. The default value of 0
-specifies that there is no limit.
+<p>The "job-page-limit" attribute specifies the maximum number of pages that may be printed by a user, including banner files. The default value of 0 specifies that there is no limit.
 
 <h4><a name="job-quota-period">job-quota-period (integer)</a><span class='info'>CUPS 1.1</span></h4>
 
-<p>The job-quota-period attribute specifies the time period used for quota
-calculations, in seconds. The default value of 0 specifies that the limits
-apply to all jobs that have been printed by a user that are still known to
-the system.
+<p>The "job-quota-period" attribute specifies the time period used for quota calculations, in seconds. The default value of 0 specifies that the limits apply to all jobs that have been printed by a user that are still known to the system.
 
-<h4><a name="job-sheets-supported">job-sheets-supported (1setof type3 keyword | name(MAX))</a><span class='info'>CUPS 1.1</span></h4>
+<h4><a name="marker-change-time">marker-change-time (integer)</a><span class='info'>CUPS 1.3/macOS 10.5</span></h4>
 
-<p>The job-sheets-supported attribute specifies the available banner files.
-There will always be at least one banner file available called "none".
+<p>The "marker-change-time" status attribute specifies the "printer-up-time" value when the last change to the marker-colors, marker-levels, marker-message, marker-names, or marker-types attributes was made.</p>
 
-<h4><a name="marker-change-time">marker-change-time (integer)</a><span class='info'>CUPS 1.3/OS X 10.5</span></h4>
+<h4><a name="marker-colors">marker-colors (1setof name(MAX))</a><span class='info'>CUPS 1.3/macOS 10.5</span></h4>
 
-<p>The marker-change-time attribute specifies the printer-up-time value when
-the last change to the marker-colors, marker-levels, marker-message,
-marker-names, or marker-types attributes was made.</p>
+<p>The "marker-colors" status attribute specifies the color(s) for each supply in the printer. It is only available when the driver provides supply levels. The color is either 'none' or one or more hex-encoded sRGB colors of the form '#RRGGBB'.</p>
 
-<h4><a name="marker-colors">marker-colors (1setof name(MAX))</a><span class='info'>CUPS 1.3/OS X 10.5</span></h4>
+<h4><a name="marker-high-levels">marker-high-levels (1setof integer(0:100))</a><span class='info'>CUPS 1.4/macOS 10.6</span></h4>
 
-<p>The marker-colors attribute specifies the color(s) for each supply in the
-printer. It is only available when the driver provides supply levels. The
-color is either "none" or one or more hex-encoded sRGB colors of the form
-"#RRGGBB".</p>
+<p>The "marker-high-levels" status attribute specifies the supply levels that indicate a near-full condition. A value of 100 should be used for supplies that are consumed/emptied, e.g. ink cartridges.</p>
 
-<h4><a name="marker-high-levels">marker-high-levels (1setof integer(0:100))</a><span class='info'>CUPS 1.4/OS X 10.6</span></h4>
+<h4><a name="marker-levels">marker-levels (1setof integer(-3:100))</a><span class='info'>CUPS 1.3/macOS 10.5</span></h4>
 
-<p>The marker-high-levels attribute specifies the supply levels that indicate
-a near-full condition. A value of 100 should be used for supplies that are
-consumed/emptied, e.g. ink cartridges.</p>
+<p>The "marker-levels" status attribute specifies the current supply levels for the printer. It is only available when the driver provides supply levels. A value of -1 indicates the level is unavailable, -2 indicates unknown, and -3 indicates the level is unknown but has not yet reached capacity. Values from 0 to 100 indicate the corresponding percentage.</p>
 
-<h4><a name="marker-levels">marker-levels (1setof integer(-3:100))</a><span class='info'>CUPS 1.3/OS X 10.5</span></h4>
+<h4><a name="marker-low-levels">marker-low-levels (1setof integer(0:100))</a><span class='info'>CUPS 1.4/macOS 10.6</span></h4>
 
-<p>The marker-levels attribute specifies the current supply levels for the
-printer. It is only available when the driver provides supply levels. A
-value of -1 indicates the level is unavailable, -2 indicates unknown, and -3
-indicates the level is unknown but has not yet reached capacity. Values from 0
-to 100 indicate the corresponding percentage.</p>
+<p>The "marker-low-levels" status attribute specifies the supply levels that indicate a near-empty condition. A value of 0 should be used for supplies that are filled, e.g. waste ink tanks.</p>
 
-<h4><a name="marker-low-levels">marker-low-levels (1setof integer(0:100))</a><span class='info'>CUPS 1.4/OS X 10.6</span></h4>
+<h4><a name="marker-message">marker-message (text(MAX))</a><span class='info'>CUPS 1.4/macOS 10.6</span></h4>
 
-<p>The marker-low-levels attribute specifies the supply levels that indicate
-a near-empty condition. A value of 0 should be used for supplies that are
-filled, e.g. waste ink tanks.</p>
+<p>The "marker-message" status attribute provides a human-readable status message for the current supply levels, e.g. "12 pages of ink remaining." It is only available when the driver provides supply levels.</p>
 
-<h4><a name="marker-message">marker-message (text(MAX))</a><span class='info'>CUPS 1.4/OS X 10.6</span></h4>
+<h4><a name="marker-names">marker-names (1setof name(MAX))</a><span class='info'>CUPS 1.3/macOS 10.5</span></h4>
 
-<p>The marker-message attribute provides a human-readable status message
-for the current supply levels, e.g. "12 pages of ink remaining." It is only
-available when the driver provides supply levels.</p>
+<p>The "marker-names" status attribute specifies the name(s) for each supply in the printer. It is only available when the driver provides supply levels.</p>
 
-<h4><a name="marker-names">marker-names (1setof name(MAX))</a><span class='info'>CUPS 1.3/OS X 10.5</span></h4>
+<h4><a name="marker-types">marker-types (1setof type3 keyword)</a><span class='info'>CUPS 1.3/macOS 10.5</span></h4>
 
-<p>The marker-names attribute specifies the name(s) for each supply in the
-printer. It is only available when the driver provides supply levels.</p>
-
-<h4><a name="marker-types">marker-types (1setof type3 keyword)</a><span class='info'>CUPS 1.3/OS X 10.5</span></h4>
-
-<p>The marker-types attribute specifies the type(s) of each supply in the
-printer. It is only available when the driver provides supply levels. The
-following (RFC 3805) types are currently supported:</p>
+<p>The "marker-types" status attribute specifies the type(s) of each supply in the printer. It is only available when the driver provides supply levels. The following (RFC 3805) types are currently supported:</p>
 
 <ul>
 
-       <li><tt>toner</tt></li>
+       <li>'toner'</li>
 
-       <li><tt>wasteToner</tt></li>
+       <li>'waste-toner'</li>
 
-       <li><tt>ink</tt></li>
+       <li>'ink'</li>
 
-       <li><tt>inkCartridge</tt></li>
+       <li>'ink-cartridge'</li>
 
-       <li><tt>inkRibbon</tt></li>
+       <li>'ink-ribbon'</li>
 
-       <li><tt>wasteInk</tt></li>
+       <li>'waste-ink'</li>
 
-       <li><tt>opc</tt></li>
+       <li>'opc'</li>
 
-       <li><tt>developer</tt></li>
+       <li>'developer'</li>
 
-       <li><tt>fuserOil</tt></li>
+       <li>'fuser-oil'</li>
 
-       <li><tt>solidWax</tt></li>
+       <li>'solid-wax'</li>
 
-       <li><tt>ribbonWax</tt></li>
+       <li>'ribbon-wax'</li>
 
-       <li><tt>wasteWax</tt></li>
+       <li>'waste-wax'</li>
 
-       <li><tt>fuser</tt></li>
+       <li>'fuser'</li>
 
-       <li><tt>coronaWire</tt></li>
+       <li>'corona-wire'</li>
 
-       <li><tt>fuserOilWick</tt></li>
+       <li>'fuser-oil-wick'</li>
 
-       <li><tt>cleanerUnit</tt></li>
+       <li>'cleaner-unit'</li>
 
-       <li><tt>fuserCleaningPad</tt></li>
+       <li>'fuser-cleaning-pad'</li>
 
-       <li><tt>transferUnit</tt></li>
+       <li>'transfer-unit'</li>
 
-       <li><tt>tonerCartridge</tt></li>
+       <li>'toner-cartridge'</li>
 
-       <li><tt>fuserOiler</tt></li>
+       <li>'fuser-oiler'</li>
 
-       <li><tt>water</tt></li>
+       <li>'water'</li>
 
-       <li><tt>wasteWater</tt></li>
+       <li>'waste-water'</li>
 
-       <li><tt>bindingSupply</tt></li>
+       <li>'binding-supply'</li>
 
-       <li><tt>bandingSupply</tt></li>
+       <li>'banding-supply'</li>
 
-       <li><tt>stichingWire</tt></li>
+       <li>'stiching-wire'</li>
 
-       <li><tt>shrinkWrap</tt></li>
+       <li>'shrink-wrap'</li>
 
-       <li><tt>paperWrap</tt></li>
+       <li>'paper-wrap'</li>
 
-       <li><tt>staples</tt></li>
+       <li>'staples'</li>
 
-       <li><tt>inserts</tt></li>
+       <li>'inserts'</li>
 
-       <li><tt>covers</tt></li>
+       <li>'covers'</li>
 
 </ul>
 
-<h4><a name="port-monitor">port-monitor" (name(127))</a></h4>
-
-<p>The port-monitor attribute specifies the port monitor to use when printing
-to this printer. The default port monitor is "none".
-
-<h4><a name="port-monitor-supported">port-monitor-supported" (1setOf name(127))</a></h4>
+<h4><a name="port-monitor">port-monitor" (name(127))</a><span class="info">Deprecated</span></h4>
 
-<p>The port-monitor-supported attribute specifies the available port monitors.
+<p>The "port-monitor" attribute specifies the port monitor to use when printing to this printer. The default port monitor is 'none'.
 
-<h4><a name="printer-commands">printer-commands (1setOf Type3 keyword)</a><span class='info'>CUPS 1.4/OS X 10.6</span></h4>
+<h4><a name="port-monitor-supported">port-monitor-supported" (1setOf name(127))</a><span class="info">Deprecated</span></h4>
 
-<p>The printer-commands attribute specifies the commands that are supported
-by the CUPS command file filter. The keyword "none" indicates that no commands
-are supported.</p>
+<p>The "port-monitor-supported" attribute specifies the available port monitors.
 
-<h4><a name="printer-dns-sd-name">printer-dns-sd-name (name(MAX) | noValue)</a><span class='info'>CUPS 1.4/OS X 10.6</span></h4>
+<h4><a name="printer-commands">printer-commands (1setOf Type3 keyword)</a><span class='info'>Deprecated</span></h4>
 
-<p>The printer-dns-sd-name attribute specifies the registered DNS-SD service
-name for the printer. If the printer is not being shared using this protocol,
-printer-dns-sd-name will have the noValue value.</p>
+<p>The "printer-commands" attribute specifies the commands that are supported by the CUPS command file filter. The keyword 'none' indicates that no commands are supported.</p>
 
-<h4><a name="printer-state-reasons">printer-state-reasons (1setOf type2 keyword)</a></h4>
+<h4><a name="printer-dns-sd-name">printer-dns-sd-name (name(MAX) | noValue)</a><span class='info'>CUPS 1.4/macOS 10.6</span></h4>
 
-<p>The printer-state-reasons attribute provides additional persistent state
-information for a printer. In addition to the keywords defined in RFC 2911,
-CUPS supports vendor-specific keywords with a domain prefix ("com.vendor.foo")
-and the following CUPS-specific keywords:</p>
+<p>The "printer-dns-sd-name" attribute specifies the registered DNS-SD service name for the printer. If the printer is not being shared using this protocol, "printer-dns-sd-name" will have the no-value value.</p>
 
-<ul>
-
-       <li><tt>cups-insecure-filter-warning</tt> - a filter or backend (or the
-       directory containing the filter or backend) has insecure file
-       permissions. CUPS will not execute programs with world write permissions
-       or setuid programs. When run as root (the default), CUPS also does not
-       execute programs that are not owned by root.
-       <span class='info'>CUPS 1.4/OS X 10.6</span></li>
+<h4><a name="printer-id">printer-id (integer(0:65535)</a><span class="info">CUPS 2.2</span></h4>
 
-       <li><tt>cups-missing-filter-warning</tt> - a filter or backend is not
-       installed. <span class='info'>CUPS 1.4/OS X 10.6</span></li>
-
-</ul>
+<p>The "printer-id" status attribute provides a unique integer identifying the printer. It is used when only an IP address and integer are provided for identifying a print queue.</p>
 
 <h4><a name="printer-type">printer-type (type2 enum)</a></h4>
 
-<p>The printer-type attribute specifies printer type and
-capability bits for the printer or class. The default value is
-computed from internal state information and the PPD file for the
-printer. The following bits are defined:</p>
+<p>The "printer-type" status attribute specifies printer type and capability bits for the printer or class. The default value is computed from internal state information and the PPD file for the printer. The following bits are defined:</p>
 
-<div class='table'><table align='center' border='1' width='80%'
-summary='Printer Type Bits'>
+<div class='table'><table align='center' border='1' width='80%' summary='Printer Type Bits'>
 <thead>
 <tr>
        <th>Bit</th>
@@ -2713,40 +1873,36 @@ summary='Printer Type Bits'>
        <td>0x04000000</td>
        <td>Queue is a printer with scanning capabilities.</td>
 </tr>
+<tr>
+       <td>0x08000000</td>
+       <td>Queue is a printer with 3D capabilities.</td>
+</tr>
 </tbody>
 </table></div>
 
 <h4>printer-type-mask (type2 enum)<span class='info'>CUPS 1.1</span></h4>
 
-<p>The printer-type-mask attribute is used to choose printers or classes with
-the CUPS-Get-Printers and CUPS-Get-Classes operations. The bits are defined
-identically to the printer-type attribute and default to all 1's.
+<p>The "printer-type-mask" attribute is used to choose printers or classes with the CUPS-Get-Printers and CUPS-Get-Classes operations. The bits are defined identically to the printer-type attribute and default to all 1's.
 
 <h4>requesting-user-name-allowed (1setof name(127))<span class='info'>CUPS 1.1</span></h4>
 
-<p>The requesting-user-name-allowed attribute lists all of the users that are
-allowed to access a printer or class. Either this attribute or the
-requesting-user-name-denied attribute will be defined, but not both.
+<p>The "requesting-user-name-allowed" attribute lists all of the users that are allowed to access a printer or class. Either this attribute or the "requesting-user-name-denied" attribute will be defined, but not both.
 
 <h4>requesting-user-name-denied (1setof name(127))<span class='info'>CUPS 1.1</span></h4>
 
-<p>The requesting-user-name-denied attribute lists all of the users that are
-not allowed to access a printer or class. Either this attribute or the
-requesting-user-name-allowed attribute will be defined, but not both.
+<p>The "requesting-user-name-denied" attribute lists all of the users that are not allowed to access a printer or class. Either this attribute or the "requesting-user-name-allowed" attribute will be defined, but not both.
 
 <h3 class='title'><a name='CLASS_ATTRIBUTES'>Printer Class Attributes</a></h3>
 
+<p>Printer class attributes are placed in the printer-attributes-tag group.</p>
+
 <h4>member-names (1setof name(127))</h4>
 
-<p>The member-names attribute specifies each of the printer-name attributes of
-the member printers and classes. Each name corresponds to the same element of
-the member-uris attribute.
+<p>The "member-names" attribute specifies the "printer-name" attributes for each the member printer and class. Each name corresponds to the same element of the "member-uris" attribute.
 
 <h4>member-uris (1setof uri)</h4>
 
-<p>The member-uris attribute specifies each of the printer-uri attributes of
-the member printers and classes. Each URI corresponds to the same element of
-the member-names attribute.
+<p>The "member-uris" attribute specifies the "printer-uri-supported" values for each member printer and class. Each URI corresponds to the same element of the "member-names" attribute.
 
 </body>
 </html>
index 110c5a3..8f14416 100644 (file)
@@ -8,8 +8,6 @@
 </head>
 <body>
 <!--
-  "$Id$"
-
   CUPS PostScript file specification for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -39,7 +37,7 @@ output will work reliably.</p>
 de-facto standard print job file format/language for UNIX-based
 applications, it is slowly being phased out in favor of Adobe's
 Portable Document Format ("PDF") which offers many advantages
-over PostScript. OS X uses PDF as the primary print job file
+over PostScript. macOS uses PDF as the primary print job file
 format and Linux is making the transition. Both PostScript and
 PDF are complex formats, and we highly recommend using high-level
 toolkits whenever possible to create your print jobs.</blockquote>
index 58c50f7..d4b5c49 100644 (file)
@@ -5,7 +5,7 @@
        <title>CUPS PPD Extensions      </title>
        <meta name="keywords" content="Specifications">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8">
-       <meta name="creator" content="Mini-XML v2.7">
+       <meta name="creator" content="Mini-XML v2.8">
 <style type="text/css"><!--
 BODY {
   font-family: lucida grande, geneva, helvetica, arial, sans-serif;
@@ -353,8 +353,6 @@ div.contents ul.subcontents li {
 <body>
 <div class='body'>
 <!--
-  "$Id$"
-
   PPD extension documentation for CUPS.
 
   Copyright 2007-2011 by Apple Inc.
@@ -402,7 +400,7 @@ div.contents ul.subcontents li {
        <li><a href="#cupsUIResolver">cupsUIResolver</a></li>
 </ul></li>
 <li><a href="#I18N">Globalized PPD Support</a></li>
-<li><a href="#OPTIONS">CUPS 1.3/OS X 10.6Custom Options</a></li>
+<li><a href="#OPTIONS">CUPS 1.3/macOS 10.6Custom Options</a></li>
 <li><a href="#RASTERPS">Writing PostScript Option Commands for Raster Drivers</a></li>
 <li><a href="#MEDIA">Media Keywords</a><ul class="subcontents">
        <li><a href="#cupsMediaQualifier2">cupsMediaQualifier2</a></li>
@@ -442,7 +440,7 @@ div.contents ul.subcontents li {
        <li><a href="#cupsVersion">cupsVersion</a></li>
        <li><a href="#JCLToPDFInterpreter">JCLToPDFInterpreter</a></li>
 </ul></li>
-<li><a href="#MACOSX">OS X Attributes</a><ul class="subcontents">
+<li><a href="#MACOSX">macOS Attributes</a><ul class="subcontents">
        <li><a href="#APDialogExtension">APDialogExtension</a></li>
        <li><a href="#APDuplexRequiresFlippedMargin">APDuplexRequiresFlippedMargin</a></li>
        <li><a href="#APHelpBook">APHelpBook</a></li>
@@ -488,11 +486,11 @@ LINE-END = CR / LF / CR LF
 
 <p>CUPS supports several methods of auto-configuration via PPD keywords.</p>
 
-<h3><span class='info'>OS X 10.5</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
+<h3><span class='info'>macOS 10.5</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
 
 <p class='summary'>*APAutoSetupTool: "/LibraryPrinters/vendor/filename"</p>
 
-<p>This OS X keyword defines a program that sets the default option choices. It is run when a printer is added from the <var>Add Printer</var> window or the <var>Nearby Printers</var> list in the <var>Print</var> dialog.</p>
+<p>This macOS keyword defines a program that sets the default option choices. It is run when a printer is added from the <var>Add Printer</var> window or the <var>Nearby Printers</var> list in the <var>Print</var> dialog.</p>
 
 <p>The program is provided with two arguments: the printer's device URI and the PPD file to be used for the printer. The program must write an updated PPD file to stdout.</p>
 
@@ -503,7 +501,7 @@ LINE-END = CR / LF / CR LF
 *APAutoSetupTool: "/Library/Printers/vendor/Tools/autosetuptool"
 </pre>
 
-<h3><span class='info'>OS X 10.2/CUPS 1.4</span><a name='QUERYKEYWORD'>?MainKeyword</a></h3>
+<h3><span class='info'>macOS 10.2/CUPS 1.4</span><a name='QUERYKEYWORD'>?MainKeyword</a></h3>
 
 <p class='summary'>*?<i>MainKeyword</i>: "<br>
   PostScript query code that writes a message using the = operator...<br>
@@ -532,7 +530,7 @@ LINE-END = CR / LF / CR LF
 *CloseUI: OptionDuplex
 </pre>
 
-<h3><span class='info'>OS X 10.4/CUPS 1.5</span><a name='OID'>OIDMainKeyword</a></h3>
+<h3><span class='info'>macOS 10.4/CUPS 1.5</span><a name='OID'>OIDMainKeyword</a></h3>
 
 <p class='summary'>*?OID<i>MainKeyword</i>: ".n.n.n..."<br>
 *OID<i>MainKeyword</i> <i>OptionKeyword1</i>: "value"<br>
@@ -555,7 +553,7 @@ LINE-END = CR / LF / CR LF
 
 <h2 class='title'><a name='PROFILES'>Color Profiles</a></h2>
 
-<p>CUPS supports three types of color profiles. The first type is based on sRGB and is used by the standard CUPS raster filters and GPL Ghostscript. The second type is based on ICC profiles and is used by the Quartz-based filters on MacOS X. The final type is based on well-known colorspaces such as sRGB and Adobe RGB.</p>
+<p>CUPS supports three types of color profiles. The first type is based on sRGB and is used by the standard CUPS raster filters and GPL Ghostscript. The second type is based on ICC profiles and is used by the Quartz-based filters on macOS. The final type is based on well-known colorspaces such as sRGB and Adobe RGB.</p>
 
 <blockquote><b>Note:</b>
 
@@ -567,7 +565,7 @@ LINE-END = CR / LF / CR LF
 
 <p class='summary'>*cupsColorProfile Resolution/MediaType: "density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22"</p>
 
-<p>This string keyword specifies an sRGB-based color profile consisting of gamma and density controls and a 3x3 CMY color transform matrix. <em>This keyword is not supported on OS X.</em></p>
+<p>This string keyword specifies an sRGB-based color profile consisting of gamma and density controls and a 3x3 CMY color transform matrix. <em>This keyword is not supported on macOS.</em></p>
 
 <p>The <i>Resolution</i> and <i>MediaType</i> values may be "-" to act as a wildcard. Otherwise they must match one of the <tt>Resolution</tt> or <tt>MediaType</tt> option keywords defined in the PPD file.</p>
 
@@ -600,7 +598,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 </pre>
 
 
-<h3><span class='info'>OS X 10.3/CUPS 1.2</span><a name='cupsICCProfile'>cupsICCProfile</a></h3>
+<h3><span class='info'>macOS 10.3/CUPS 1.2</span><a name='cupsICCProfile'>cupsICCProfile</a></h3>
 
 <p class='summary'>*cupsICCProfile ColorModel.MediaType.Resolution/Description: "filename"</p>
 
@@ -639,22 +637,22 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *cupsICCQualifier3: Resolution
 </pre>
 
-<h3><span class='info'>OS X 10.4</span><a name='APCustom'>Custom Color Matching Support</a></h3>
+<h3><span class='info'>macOS 10.4</span><a name='APCustom'>Custom Color Matching Support</a></h3>
 
 <p class='summary'>*<a href='#APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a>: true<br>
 *<a href='#APCustomColorMatchingName'>APCustomColorMatchingName</a> name/text: ""<br>
 *<a href='#APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a>: profile<br>
 *<a href='#APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a>: profile</p>
 
-<p>These keywords tell the OS X raster filters that the printer driver provides its own custom color matching and that generic color profiles should be used when generating 1-, 3-, and 4-component raster data as requested by the driver. The <tt>APCustomColorMatchingProfile</tt> and <tt>APDefaultColorMatchingProfile</tt> keywords specify alternate color profiles (sRGB or AdobeRGB) to use for 3-color (RGB) raster data.</p>
+<p>These keywords tell the macOS raster filters that the printer driver provides its own custom color matching and that generic color profiles should be used when generating 1-, 3-, and 4-component raster data as requested by the driver. The <tt>APCustomColorMatchingProfile</tt> and <tt>APDefaultColorMatchingProfile</tt> keywords specify alternate color profiles (sRGB or AdobeRGB) to use for 3-color (RGB) raster data.</p>
 
 <blockquote><b>Note:</b>
 
-<p>Prior to OS X 10.6, the default RGB color space was Apple's "GenericRGB". The new default in OS X 10.6 and later is "sRGB". For more information, see <a href="http://support.apple.com/kb/HT3712">"OS X v10.6: About gamma 2.2"</a> on Apple's support site.</p>
+<p>Prior to macOS 10.6, the default RGB color space was Apple's "GenericRGB". The new default in macOS 10.6 and later is "sRGB". For more information, see <a href="http://support.apple.com/kb/HT3712">"macOS v10.6: About gamma 2.2"</a> on Apple's support site.</p>
 
 </blockquote>
 
-<h4><span class='info'>OS X 10.5</span><a name='APCustomColorMatchingName'>APCustomColorMatchingName</a></h4>
+<h4><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingName'>APCustomColorMatchingName</a></h4>
 
 <p class='summary'>*APCustomColorMatchingName name/text: ""</p>
 
@@ -668,7 +666,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *fr.APCustomColorMatchingName name/La AcmeColor(tm): ""
 </pre>
 
-<h4><span class='info'>OS X 10.5</span><a name='APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a></h4>
+<h4><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a></h4>
 
 <p class='summary'>*APCustomColorMatchingProfile: name</p>
 
@@ -690,7 +688,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *APCustomColorMatchingProfile: AdobeRGB
 </pre>
 
-<h4><span class='info'>OS X 10.5</span><a name='APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a></h4>
+<h4><span class='info'>macOS 10.5</span><a name='APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a></h4>
 
 <p class='summary'>*APDefaultCustomColorMatchingProfile: name</p>
 
@@ -704,7 +702,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *APDefaultCustomColorMatchingProfile: sRGB
 </pre>
 
-<h4><span class='info'>OS X 10.4</span><a name='APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a></h4>
+<h4><span class='info'>macOS 10.4</span><a name='APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a></h4>
 
 <p class='summary'>*APSupportsCustomColorMatching: boolean</p>
 
@@ -740,7 +738,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 
 </blockquote>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsUIConstraints'>cupsUIConstraints</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIConstraints'>cupsUIConstraints</a></h3>
 
 <p class='summary'>*cupsUIConstraints resolver: "*Keyword1 *Keyword2 ..."<br>
 *cupsUIConstraints resolver: "*Keyword1 OptionKeyword1 *Keyword2 ..."<br>
@@ -770,7 +768,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *cupsUIConstraints photo: "*OutputMode Photo *MediaType Transparency *Resolution 1200dpi"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsUIResolver'>cupsUIResolver</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIResolver'>cupsUIResolver</a></h3>
 
 <p class='summary'>*cupsUIResolver resolver: "*Keyword1 OptionKeyword1 *Keyword2 OptionKeyword2 ..."</p>
 
@@ -872,7 +870,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 </pre>
 
 
-<h2 class='title'><a name='OPTIONS'><span class="info">CUPS 1.3/OS X 10.6</span>Custom Options</a></h2>
+<h2 class='title'><a name='OPTIONS'><span class="info">CUPS 1.3/macOS 10.6</span>Custom Options</a></h2>
 
 <p>CUPS supports custom options using an extension of the <tt>CustomPageSize</tt> and <tt>ParamCustomPageSize</tt> syntax:</p>
 
@@ -1330,7 +1328,7 @@ PRE B {
 <p>The CUPS media keywords allow drivers to specify alternate custom page
 size limits based on up to two options.</p>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMediaQualifier2'>cupsMediaQualifier2</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier2'>cupsMediaQualifier2</a></h3>
 
 <p class='summary'>*cupsMediaQualifier2: MainKeyword</p>
 
@@ -1349,7 +1347,7 @@ custom page size limits.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMediaQualifier3'>cupsMediaQualifier3</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier3'>cupsMediaQualifier3</a></h3>
 
 <p class='summary'>*cupsMediaQualifier3: MainKeyword</p>
 
@@ -1368,7 +1366,7 @@ custom page size limits.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMinSize'>cupsMinSize</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMinSize'>cupsMinSize</a></h3>
 
 <p class='summary'>*cupsMinSize .Qualifier2.Qualifier3: "width length"<br>
 *cupsMinSize .Qualifier2.: "width length"<br>
@@ -1391,7 +1389,7 @@ are used to identify options to use for matching.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMaxSize'>cupsMaxSize</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMaxSize'>cupsMaxSize</a></h3>
 
 <p class='summary'>*cupsMaxSize .Qualifier2.Qualifier3: "width length"<br>
 *cupsMaxSize .Qualifier2.: "width length"<br>
@@ -1415,11 +1413,11 @@ are used to identify options to use for matching.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsPageSizeCategory'>cupsPageSizeCategory</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPageSizeCategory'>cupsPageSizeCategory</a></h3>
 
 <p class="summary">*cupsPageSizeCategory name/text: "name name2 ... nameN"</p>
 
-<p>This keyword lists related paper size names that should be grouped together in the Print or Page Setup dialogs. The "name" portion of the keyword specifies the root/default size for the grouping. On OS X the grouped paper sizes are shown in a submenu of the main paper size. When omitted, sizes with the same dimensions are automatically grouped together, for example "Letter" and "Letter.Borderless".</p>
+<p>This keyword lists related paper size names that should be grouped together in the Print or Page Setup dialogs. The "name" portion of the keyword specifies the root/default size for the grouping. On macOS the grouped paper sizes are shown in a submenu of the main paper size. When omitted, sizes with the same dimensions are automatically grouped together, for example "Letter" and "Letter.Borderless".</p>
 
 <p>Example:</p>
 
@@ -1432,7 +1430,7 @@ are used to identify options to use for matching.</p>
 
 <h2 class='title'><a name='ATTRIBUTES'>General Attributes</a></h2>
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsBackSide'>cupsBackSide</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsBackSide'>cupsBackSide</a></h3>
 
 <p class='summary'>*cupsBackSide: keyword</p>
 
@@ -1508,7 +1506,7 @@ will be ignored.</p>
 </table>
 </div>
 
-<p><em>* - Not supported in OS X 10.5.x and earlier</em></p>
+<p><em>* - Not supported in macOS 10.5.x and earlier</em></p>
 
 <div class='figure'><table summary='Back side images'>
 <caption>Figure 1: Back side images</caption>
@@ -1528,7 +1526,7 @@ will be ignored.</p>
 <p>Also see the related <a href='#APDuplexRequiresFlippedMargin'><tt>APDuplexRequiresFlippedMargin</tt></a>
 keyword.</p>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsCommands'>cupsCommands</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsCommands'>cupsCommands</a></h3>
 
 <p class='summary'>*cupsCommands: "name name2 ... nameN"</p>
 
@@ -1544,7 +1542,7 @@ by whitespace.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsEvenDuplex'>cupsEvenDuplex</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsEvenDuplex'>cupsEvenDuplex</a></h3>
 
 <p class='summary'>*cupsEvenDuplex: boolean</p>
 
@@ -1622,21 +1620,21 @@ the special filter program "-" may be specified.</p>
 
 <p class='summary'>*cupsFlipDuplex: boolean</p>
 
-<p>Due to implementation differences between OS X and Ghostscript,
+<p>Due to implementation differences between macOS and Ghostscript,
 the <tt>cupsFlipDuplex</tt> keyword is deprecated. Instead, use
 the <a href='#cupsBackSide'><tt>cupsBackSide</tt></a> keyword to specify
 the coordinate system (pixel layout) of the page data on the back side of
 duplex pages.</p>
 
 <p>The value <code>true</code> maps to a <tt>cupsBackSide</tt> value
-of <code>Rotated</code> on OS X and <code>Flipped</code> with
+of <code>Rotated</code> on macOS and <code>Flipped</code> with
 Ghostscript.</p>
 
 <p>The default value is <code>false</code>.</p>
 
 <blockquote><b>Note:</b>
 
-<p>OS X drivers that previously used
+<p>macOS drivers that previously used
 <tt>cupsFlipDuplex</tt> may wish to provide both the old and
 new keywords for maximum compatibility, for example:</p>
 
@@ -1653,7 +1651,7 @@ Ghostscript can use:</p>
 *cupsFlipDuplex: true
 </pre></blockquote>
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsIPPFinishings'>cupsIPPFinishings</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPFinishings'>cupsIPPFinishings</a></h3>
 
 <p class='summary'>*cupsIPPFinishings number/text: "*Option Choice ..."</p>
 
@@ -1669,7 +1667,7 @@ values to PPD options and choices.</p>
 *cupsIPPFinishings 21/staple-bottom-left: "*StapleLocation SingleLandscape"
 </pre>
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsIPPReason'>cupsIPPReason</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPReason'>cupsIPPReason</a></h3>
 
 <p class='summary'>*cupsIPPReason reason/Reason Text: "optional URIs"</p>
 
@@ -1723,7 +1721,7 @@ http://www.vendor.com/help"
 </pre>
 
 
-<h3><span class='info'>CUPS 1.7/OS X 10.9</span><a name='cupsJobAccountId'>cupsJobAccountId</a></h3>
+<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountId'>cupsJobAccountId</a></h3>
 
 <p class='summary'>*cupsJobAccountId: boolean</p>
 
@@ -1737,7 +1735,7 @@ http://www.vendor.com/help"
 </pre>
 
 
-<h3><span class='info'>CUPS 1.7/OS X 10.9</span><a name='cupsJobAccountingUserId'>cupsJobAccountingUserId</a></h3>
+<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountingUserId'>cupsJobAccountingUserId</a></h3>
 
 <p class='summary'>*cupsJobAccountingUserId: boolean</p>
 
@@ -1751,7 +1749,7 @@ http://www.vendor.com/help"
 </pre>
 
 
-<h3><span class='info'>CUPS 1.7/OS X 10.9</span><a name='cupsJobPassword'>cupsJobPassword</a></h3>
+<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobPassword'>cupsJobPassword</a></h3>
 
 <p class='summary'>*cupsJobPassword: "format"</p>
 
@@ -1765,7 +1763,7 @@ http://www.vendor.com/help"
 </pre>
 
 
-<h3><span class='info'>CUPS 1.2/OS X 10.5</span><a name='cupsLanguages'>cupsLanguages</a></h3>
+<h3><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsLanguages'>cupsLanguages</a></h3>
 
 <p class='summary'>*cupsLanguages: "locale list"</p>
 
@@ -1781,7 +1779,7 @@ list of locale names ("en", "en_US", "fr_CA", etc.)</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.7/OS X 10.9</span><a name='cupsMandatory'>cupsMandatory</a></h3>
+<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsMandatory'>cupsMandatory</a></h3>
 
 <p class='summary'>*cupsMandatory: "attribute1 attribute2 ... attributeN"</p>
 
@@ -1810,7 +1808,7 @@ hardware. The default value is <code>false</code>.</p>
 *cupsManualCopies: true
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMarkerName'>cupsMarkerName</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerName'>cupsMarkerName</a></h3>
 
 <p class='summary'>*cupsMarkerName/Name Text: ""</p>
 
@@ -1824,7 +1822,7 @@ generated by the driver to human readable text.</p>
 *cupsMarkerName cyanToner/Cyan Toner: ""
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMarkerNotice'>cupsMarkerNotice</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerNotice'>cupsMarkerNotice</a></h3>
 
 <p class='summary'>*cupsMarkerNotice: "disclaimer text"</p>
 
@@ -1838,7 +1836,7 @@ are approximate".</p>
 *cupsMarkerNotice: "Supply levels are approximate."
 </pre>
 
-<h3><span class='info'>CUPS 1.6/OS X 10.8</span><a name='cupsMaxCopies'>cupsMaxCopies</a></h3>
+<h3><span class='info'>CUPS 1.6/macOS 10.8</span><a name='cupsMaxCopies'>cupsMaxCopies</a></h3>
 
 <p class='summary'>*cupsMaxCopies: integer</p>
 
@@ -1867,7 +1865,7 @@ the output for a specific model of printer.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsPJLCharset'>cupsPJLCharset</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPJLCharset'>cupsPJLCharset</a></h3>
 
 <p class='summary'>*cupsPJLCharset: "ISO character set name"</p>
 
@@ -1882,7 +1880,7 @@ assumed.</p>
 *cupsPJLCharset: "UTF-8"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsPJLDisplay'>cupsPJLDisplay</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPJLDisplay'>cupsPJLDisplay</a></h3>
 
 <p class='summary'>*cupsPJLDisplay: "what"</p>
 
@@ -1901,7 +1899,7 @@ to use "@PJL RDYMSG DISPLAY". The default is "job".</p>
 *cupsPJLDisplay: "none"
 </pre>
 
-<h3><span class='info'>CUPS 1.2/OS X 10.5</span><a name='cupsPortMonitor'>cupsPortMonitor</a></h3>
+<h3><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsPortMonitor'>cupsPortMonitor</a></h3>
 
 <p class='summary'>*cupsPortMonitor urischeme/Descriptive Text: "port monitor"</p>
 
@@ -1933,7 +1931,7 @@ to disable the port monitor for the given URI scheme.</p>
 *cupsPortMonitor usb/USB Status Monitor: "epson-usb"
 </pre>
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsPreFilter'>cupsPreFilter</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPreFilter'>cupsPreFilter</a></h3>
 
 <p class='summary'>*cupsPreFilter: "source/type cost program"</p>
 
@@ -1992,7 +1990,7 @@ before the filter that accepts the given MIME type.</p>
 *cupsSingleFile: True
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsSNMPSupplies'>cupsSNMPSupplies</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsSNMPSupplies'>cupsSNMPSupplies</a></h3>
 
 <p class='summary'>*cupsSNMPSupplies: boolean</p>
 
@@ -2023,7 +2021,7 @@ PPD file extensions was used. Currently it must be the string
 </pre>
 
 
-<h3><span class="info">CUPS 1.6/OS X 10.8</span><a name="JCLToPDFInterpreter">JCLToPDFInterpreter</a></h3>
+<h3><span class="info">CUPS 1.6/macOS 10.8</span><a name="JCLToPDFInterpreter">JCLToPDFInterpreter</a></h3>
 
 <p class="summary">*JCLToPDFInterpreter: "JCL"</p>
 
@@ -2037,9 +2035,9 @@ PPD file extensions was used. Currently it must be the string
 </pre>
 
 
-<h2 class='title'><a name='MACOSX'>OS X Attributes</a></h2>
+<h2 class='title'><a name='MACOSX'>macOS Attributes</a></h2>
 
-<h3><span class='info'>OS X 10.3</span><a name='APDialogExtension'>APDialogExtension</a></h3>
+<h3><span class='info'>macOS 10.3</span><a name='APDialogExtension'>APDialogExtension</a></h3>
 
 <p class='summary'>*APDialogExtension: "/Library/Printers/vendor/filename.plugin"</p>
 
@@ -2051,7 +2049,7 @@ plug-ins.</p>
 
 <blockquote><b>Note:</b>
 
-<p>Starting with OS X 10.5, each plug-in must be compiled "4-way fat"
+<p>Starting with macOS 10.5, each plug-in must be compiled "4-way fat"
 (32-bit and 64-bit for both PowerPC and Intel) with garbage collection enabled
 in order to be usable with all applications.</p>
 
@@ -2065,7 +2063,7 @@ in order to be usable with all applications.</p>
 *APDialogExtension: "/Library/Printers/vendor/options.plugin"
 </pre>
 
-<h3><span class='info'>OS X 10.4</span><a name='APDuplexRequiresFlippedMargin'>APDuplexRequiresFlippedMargin</a></h3>
+<h3><span class='info'>macOS 10.4</span><a name='APDuplexRequiresFlippedMargin'>APDuplexRequiresFlippedMargin</a></h3>
 
 <p class='summary'>*APDuplexRequiresFlippedMargin: boolean</p>
 
@@ -2162,7 +2160,7 @@ looking up IPP reason codes for this printer driver. The
 *APHelpBook: "file:///Library/Printers/vendor/Help.bundle"
 </pre>
 
-<h3><span class='info'>OS X 10.6</span><a name='APICADriver'>APICADriver</a></h3>
+<h3><span class='info'>macOS 10.6</span><a name='APICADriver'>APICADriver</a></h3>
 
 <p class='summary'>*APICADriver: boolean</p>
 
@@ -2176,7 +2174,7 @@ Architecture (ICA) driver for scanning. The default is <tt>False</tt>.</p>
 *APScanAppBundleID: "com.apple.ImageCaptureApp"
 </pre>
 
-<h3><span class='info'>OS X 10.3</span><a name='APPrinterIconPath'>APPrinterIconPath</a></h3>
+<h3><span class='info'>macOS 10.3</span><a name='APPrinterIconPath'>APPrinterIconPath</a></h3>
 
 <p class='summary'>*APPrinterIconPath: "/Library/Printers/vendor/filename.icns"</p>
 
@@ -2190,7 +2188,7 @@ displaying the printer. The file must be in the Apple icon format.</p>
 *APPrinterIconPath: "/Library/Printers/vendor/Icons/filename.icns"
 </pre>
 
-<h3><span class='info'>OS X 10.4</span><a name='APPrinterLowInkTool'>APPrinterLowInkTool</a></h3>
+<h3><span class='info'>macOS 10.4</span><a name='APPrinterLowInkTool'>APPrinterLowInkTool</a></h3>
 
 <p class='summary'>*APPrinterLowInkTool: "/Library/Printers/vendor/program"</p>
 
@@ -2207,7 +2205,7 @@ Technical Note TN2144</a> for more information.</p>
 *APPrinterLowInkTool: "/Library/Printers/vendor/Tools/lowinktool"
 </pre>
 
-<h3><span class='info'>OS X 10.5</span><a name='APPrinterPreset'>APPrinterPreset</a></h3>
+<h3><span class='info'>macOS 10.5</span><a name='APPrinterPreset'>APPrinterPreset</a></h3>
 
 <p class='summary'>*APPrinterPreset name/text: "*Option Choice ..."</p>
 
@@ -2277,7 +2275,7 @@ choice (*MainKeyword OptionKeyword) or a preset identifier and value
 *fr.APPrinterPreset Photo_on_Photo_Paper/Photo sur papier photographique: ""
 </pre>
 
-<h3><span class='info'>OS X 10.3</span><a name='APPrinterUtilityPath'>APPrinterUtilityPath</a></h3>
+<h3><span class='info'>macOS 10.3</span><a name='APPrinterUtilityPath'>APPrinterUtilityPath</a></h3>
 
 <p class='summary'>*APPrinterPrinterUtilityPath: "/Library/Printers/vendor/filename.app"</p>
 
@@ -2292,7 +2290,7 @@ information.</p>
 *APPrinterPrinterUtilityPath: "/Library/Printers/vendor/Tools/utility.app"
 </pre>
 
-<h3><span class='info'>OS X 10.6</span><a name='APScannerOnly'>APScannerOnly</a></h3>
+<h3><span class='info'>macOS 10.6</span><a name='APScannerOnly'>APScannerOnly</a></h3>
 
 <p class='summary'>*APScannerOnly: boolean</p>
 
@@ -2306,7 +2304,7 @@ capabilities. The default is <tt>False</tt>.</p>
 *APScannerOnly: True
 </pre>
 
-<h3><span class='info'>OS X 10.3</span><a name='APScanAppBundleID'>APScanAppBundleID</a></h3>
+<h3><span class='info'>macOS 10.3</span><a name='APScanAppBundleID'>APScanAppBundleID</a></h3>
 
 <p class='summary'>*APScanAppBundleID: "bundle ID"</p>
 
@@ -2409,7 +2407,7 @@ the device.</p>
 
 <ul>
 
-       <li>Added missing OS X <tt>AP</tt> keywords.</li>
+       <li>Added missing macOS <tt>AP</tt> keywords.</li>
 
        <li>Added section on auto-configuration including the
        <tt>OID<i>MainKeyword</i></tt> and <tt>?<i>MainKeyword</i></tt>
index 8ec1d2f..719d96f 100644 (file)
@@ -24,7 +24,7 @@
     <div class="body">
       <div class="row">
        <h1>CUPS @CUPS_VERSION@</h1>
-       <p>CUPS is the standards-based, open source printing system developed by <a href="http://www.apple.com/">Apple Inc.</a> for OS X<sup>&reg;</sup> and other UNIX<sup>&reg;</sup>-like operating systems.</p>
+       <p>CUPS is the standards-based, open source printing system developed by <a href="http://www.apple.com/">Apple Inc.</a> for macOS<sup>&reg;</sup> and other UNIX<sup>&reg;</sup>-like operating systems.</p>
       </div>
       <div class="row">
        <div class="thirds">
index 61e9d08..f68fe9f 100644 (file)
@@ -24,7 +24,7 @@
     <div class="body">
       <div class="row">
        <h1>CUPS @CUPS_VERSION@</h1>
-       <p>CUPS は、OS X<sup>&reg;</sup> およびその他の UNIX <SUP>&reg;</sup> 系 OS のために、<a href="http://www.apple.com/">Apple Inc.</a> によって開発された標準ベースのオープンソース印刷システムです。</p>
+       <p>CUPS は、macOS<sup>&reg;</sup> およびその他の UNIX <SUP>&reg;</sup> 系 OS のために、<a href="http://www.apple.com/">Apple Inc.</a> によって開発された標準ベースのオープンソース印刷システムです。</p>
       </div>
       <div class="row">
        <div class="thirds">
index 949921e..d5f0ca8 100644 (file)
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
-       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-       <TITLE>Home - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
-       <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-</HEAD>
-<BODY>
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="sel"><A HREF="/">&nbsp;&nbsp;In&iacute;cio&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/admin">&nbsp;&nbsp;Administra&ccedil;&atilde;o&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/help/">&nbsp;&nbsp;Ajuda&nbsp;online&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/jobs/">&nbsp;&nbsp;Trabalhos&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel"><A HREF="/printers/">&nbsp;&nbsp;Impressoras&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Procurar ajuda"
-AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD STYLE="padding-right: 20px;">
-
-<H1>CUPS @CUPS_VERSION@</H1>
-
-<P>CUPS &eacute; o sistema de impress&atilde;o de c&oacute;digo aberto e baseado em padr&otilde;es desenvolvido pela
-<A HREF="http://www.apple.com/">Apple Inc.</A> para o OS<SUP>&reg;</SUP> X e 
-outros sistemas operacionais similares ao UNIX<SUP>&reg;</SUP>.</P>
-
-</TD>
-<TD><A HREF="http://www.cups.org/"><IMG SRC="images/cups-icon.png" WIDTH="128"
-HEIGHT="128" ALT="CUPS"></A></TD>
-</TR>
-</TABLE>
-
-<TABLE CLASS="indent" SUMMARY="">
-<TR><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-right: 20px;">
-
-<H2>CUPS para usu&aacute;rios</H2>
-
-<P><A HREF="help/overview.html">Vis&atilde;o geral do CUPS</A></P>
-
-<P><A HREF="help/options.html">Impress&atilde;o e op&ccedil;&otilde;es em linha de comando</A></P>
-
-<P><A HREF="help/whatsnew.html">O que h&aacute; de novo no CUPS 1.7</A></P>
-
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.general">F&oacute;rum de usu&aacute;rios</A></P>
-
-</TD><TD VALIGN="top" STYLE="border-right: dotted thin #cccccc; padding-left: 20px; padding-right: 20px;">
-
-<H2>CUPS para administradores</H2>
-
-<P><A HREF="admin">Adicionar impressoras e classes</A></P>
-
-<P><A HREF="help/policies.html">Gerenciar pol&iacute;ticas de opera&ccedil;&atilde;o</A></P>
-
-<P><A HREF="help/accounting.html">B&aacute;sico de contabilidade de impress&atilde;o</A></P>
-
-<P><A HREF="help/security.html">Seguran&ccedil;a do servidor</A></P>
-
-<P><A HREF="help/kerberos.html">Usar autentica&ccedil;&atilde;o via kerberos</A></P>
-
-<P><A HREF="help/network.html">Usar impressoras de rede</A></P>
-
-<P><A HREF="help/ref-cupsd-conf.html">Refer&ecirc;ncia para o cupsd.conf</A></P>
-
-<P><A HREF="http://www.cups.org/ppd.php">Encontrar drivers de impressora</A></P>
-
-</TD><TD VALIGN="top" STYLE="padding-left: 20px;">
-
-<H2>CUPS para desenvolvedores</H2>
-
-<P><A HREF="help/api-overview.html">Introdu&ccedil;&atilde;o &agrave; programa&ccedil;&atilde;o do CUPS</A></P>
-
-<P><A HREF="help/api-cups.html">API do CUPS</A></P>
-
-<P><A HREF="help/api-filter.html">Programa&ccedil;&atilde;o de filtros e retaguarda</A></P>
-
-<P><A HREF="help/api-httpipp.html">APIs HTTP e IPP</A></P>
-
-<P><A HREF="help/api-ppd.html">API PPD</A></P>
-
-<P><A HREF="help/api-raster.html">API de rasteriza&ccedil;&atilde;o</A></P>
-
-<P><A HREF="help/ref-ppdcfile.html">Refer&ecirc;ncia para o compilador de arquivos de informa&ccedil;&atilde;o de driver PPD</A></P>
-
-<P><A HREF="http://www.cups.org/newsgroups.php?gcups.development">F&oacute;rum de desenvolvedores</A></P>
-
-</TD></TR>
-</TABLE>
-
-</TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS e o logo do CUPS s&atilde;o marcas registradas de 
-<A HREF="http://www.apple.com">Apple Inc.</A> Copyright 2007-2014 Apple
-Inc. Todos os direitos reservados.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <link rel="stylesheet" href="/cups.css" type="text/css">
+    <link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=9">
+    <meta name="viewport" content="width=device-width">
+    <title>In&iacute;cio - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
+  </head>
+  <body>
+    <div class="header">
+      <ul>
+       <li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
+       <li><a class="active" href="/">In&iacute;cio</a></li>
+       <li><a href="/admin">Administra&ccedil;&atilde;o</a></li>
+       <li><a href="/classes/">Classes</a></li>
+       <li><a href="/help/">Ajuda</a></li>
+       <li><a href="/jobs/">Trabalhos</a></li>
+       <li><a href="/printers/">Impressoras</a></li>
+      </ul>
+    </div>
+    <div class="body">
+      <div class="row">
+       <h1>CUPS @CUPS_VERSION@</h1>
+
+       <p>CUPS &eacute; o sistema de impress&atilde;o baseado em padr&otilde;es e de c&oacute;digo aberto desenvolvido pela <a href="http://www.apple.com/">Apple Inc.</a> para macOS<sup>&reg;</sup> e outros sistemas operacionais similares ao UNIX<sup>&reg;</sup>.</p>
+      </div>
+      <div class="row">
+       <div class="thirds">
+         <h2>CUPS para usu&aacute;rios</h2>
+         <p><a href="help/overview.html">Vis&atilde;o geral do CUPS</a></p>
+         <p><a href="help/options.html">Impress&atilde;o e op&ccedil;&otilde;es em linha de comando</a></p>
+         <p><a href="http://www.cups.org/lists.php?LIST=cups">F&oacute;rum de usu&aacute;rios</a></p>
+       </div>
+       <div class="thirds">
+         <h2>CUPS para administradores</h2>
+         <p><a href="admin">Adicionar impressoras e classes</a></p>
+         <p><a href="help/policies.html">Gerenciar pol&iacute;ticas de opera&ccedil;&atilde;o</a></p>
+         <p><a href="help/network.html">Usar impressoras de rede</a></p>
+         <p><a href="help/man-cupsd.conf.html">Refer&ecirc;ncia para o cupsd.conf</a></p>
+       </div>
+       <div class="thirds">
+         <h2>CUPS para desenvolvedores</h2>
+         <p><a href="help/api-overview.html">Introdu&ccedil;&atilde;o &agrave; programa&ccedil;&atilde;o do CUPS</a></p>
+         <p><a href="help/api-cups.html">API do CUPS</a></p>
+         <p><a href="help/api-filter.html">Programa&ccedil;&atilde;o de filtros e backend</a></p>
+         <p><a href="help/api-httpipp.html">APIs HTTP e IPP</a></p>
+         <p><a href="http://www.cups.org/lists.php?LIST=cups-devel">F&oacute;rum de desenvolvedores</a></p>
+       </div>
+      </div>
+    </div>
+    <div class="footer">CUPS e o logo do CUPS s&atilde;o marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2015 Apple Inc. Todos os direitos reservados.</div>
+  </body>
+</html>
index 45dcdc2..276c9c2 100644 (file)
@@ -1,31 +1,6 @@
 #
-# "$Id: robots.txt 3494 2003-03-19 15:37:44Z mike $"
-#
-#   This file tells search engines not to index your CUPS server.
-#
-#   Copyright 1993-2003 by Easy Software Products.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Easy Software Products and are protected by Federal
-#   copyright law.  Distribution and use rights are outlined in the file
-#   "LICENSE.txt" which should have been included with this file.  If this
-#   file is missing or damaged please contact Easy Software Products
-#   at:
-#
-#       Attn: CUPS Licensing Information
-#       Easy Software Products
-#       44141 Airport View Drive, Suite 204
-#       Hollywood, Maryland 20636-3111 USA
-#
-#       Voice: (301) 373-9600
-#       EMail: cups-info@cups.org
-#         WWW: http://www.cups.org
+# This file tells search engines not to index your CUPS server.
 #
 
 User-agent: *
 Disallow: /
-
-#
-# End of "$Id: robots.txt 3494 2003-03-19 15:37:44Z mike $".
-#
-
diff --git a/doc/swish-e.config b/doc/swish-e.config
deleted file mode 100644 (file)
index 662f983..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-# Where to get things
-IndexDir doc
-
-# Where to put things
-IndexFile doc/swish-e.index
-
-# Ignore image and index files
-FileRules filename contains .gif
-FileRules filename contains .gz
-FileRules filename contains .jpg
-FileRules filename contains .png
-FileRules filename contains .svg
-FileRules filename contains swish-e
-FileRules filename contains .tokens
-FileRules filename is Makefile
-
index f4737a6..47ba04c 100644 (file)
@@ -1,16 +1,14 @@
 #
-# "$Id: Makefile 3247 2011-05-12 06:22:31Z msweet $"
+# PPD compiler example makefile for CUPS.
 #
-#   PPD compiler example makefile for CUPS.
+# Copyright 2007-2011 by Apple Inc.
+# Copyright 2002-2005 by Easy Software Products.
 #
-#   Copyright 2007-2011 by Apple Inc.
-#   Copyright 2002-2005 by Easy Software Products.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 #
@@ -121,8 +119,3 @@ uninstall:
                $(RM) $(DATADIR)/examples/$$file; \
        done
        -$(RMDIR) $(DATADIR)/examples
-
-
-#
-# End of "$Id: Makefile 3247 2011-05-12 06:22:31Z msweet $".
-#
index 920f8db..ec93d63 100644 (file)
@@ -1,24 +1,17 @@
 /*
- * "$Id: ppdx.c 3833 2012-05-23 22:51:18Z msweet $"
+ * Example code for encoding and decoding large amounts of data in a PPD file.
+ * This would typically be used in a driver to save configuration/state
+ * information that could be used by an application.
  *
- *   Example code for encoding and decoding large amounts of data in a PPD file.
- *   This would typically be used in a driver to save configuration/state
- *   information that could be used by an application.
+ * Copyright 2012 by Apple Inc.
  *
- *   Copyright 2012 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   ppdxReadData()  - Read encoded data from a ppd_file_t *.
- *   ppdxWriteData() - Writes encoded data to stderr using PPD: messages.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -307,8 +300,3 @@ ppdxWriteData(const char *name,             /* I - Base name of keyword */
 
   fputs(line, stderr);
 }
-
-
-/*
- * End of "$Id: ppdx.c 3833 2012-05-23 22:51:18Z msweet $".
- */
index 14f34b3..c503087 100644 (file)
@@ -1,18 +1,15 @@
 /*
- * "$Id: ppdx.h 3833 2012-05-23 22:51:18Z msweet $"
+ * Header for PPD data encoding example code.
  *
- *   Header for PPD data encoding example code.
+ * Copyright 2012 by Apple Inc.
  *
- *   Copyright 2012 by Apple Inc.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 #ifndef _PPDX_H_
@@ -76,7 +73,3 @@ extern void   ppdxWriteData(const char *name, const void *data,
 #  endif /* __cplusplus */
 
 #endif /* !_PPDX_H */
-
-/*
- * End of "$Id: ppdx.h 3833 2012-05-23 22:51:18Z msweet $".
- */
index 372f3d5..cbaaee2 100644 (file)
@@ -1,25 +1,19 @@
 /*
- * "$Id: testppdx.c 3833 2012-05-23 22:51:18Z msweet $"
+ * Test program for PPD data encoding example code.
  *
- *   Test program for PPD data encoding example code.
+ * Compile with:
  *
- *   Compile with:
+ *     gcc -o testppdx -D_PPD_DEPRECATED="" -g testppdx.c ppdx.c -lcups -lz
  *
- *       gcc -o testppdx -D_PPD_DEPRECATED="" -g testppdx.c ppdx.c -lcups -lz
+ * Copyright 2012 by Apple Inc.
  *
- *   Copyright 2012 by Apple Inc.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main() - Read data from a test PPD file and write out new chunks.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -110,8 +104,3 @@ main(void)
 
   return (1);
 }
-
-
-/*
- * End of "$Id: testppdx.c 3833 2012-05-23 22:51:18Z msweet $".
- */
index 2e58df6..179b1ec 100644 (file)
@@ -1,6 +1,6 @@
 *PPD-Adobe: "4.3"
 *%
-*% "$Id: testppdx.ppd 3833 2012-05-23 22:51:18Z msweet $"
+*% "$Id$"
 *%
 *% Test PPD file for data encoding example.
 *%
 *Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
 *Font ZapfDingbats: Special "(001.004S)" Standard ROM
 *%
-*% End of "$Id: testppdx.ppd 3833 2012-05-23 22:51:18Z msweet $".
+*% End of "$Id$".
 *%
 *EXData0000: "eNqlVm1v2zYQ/hz/ipvWznLgl6T7siXrgCJ2AANBEyQpNmAtAlqiLG4SKZBU7LTIf9/dUW9Og32ZAFsieffcc88dKS2OR3AM0Zt1+ibCJxoA3EvnobJma0UJmbFwc7OEVHgBUicmVXoLci/KqpCAQznvHC9MWSmc3Smfn3WzdG2TBGYGPCJXVbqH2fIBQR+Wq5vb1cWH+9XyfRTBbNs"
 *EXData0001: "GcwTaG6zIqkrh7evgzDVk1Xb3MO7k9N3sHmCDxWRWeuk53KfSxf4paC087ZOvDLaTcF54WUptcdnoVO0KavaS9um7EBYCT6XAQhnK2n9E5hsEIc9yQ6XvUw8RkEelzKVVhQI2TAMEIXYzQGWClmoTU002L1GgmwVIpraF0ozXYoOGUkZXa0vVh/vVnO/91FA2+UqycHlpi5SyMWjhI0"
index 3087485..80a49b6 100644 (file)
@@ -1,68 +1,68 @@
 error.o: error.c ../cups/raster-private.h ../cups/raster.h ../cups/cups.h \
   ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
-  ../cups/array.h ../cups/language.h ../cups/pwg.h ../cups/ppd.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h \
   ../cups/debug-private.h ../cups/string-private.h ../config.h
 interpret.o: interpret.c ../cups/raster-private.h ../cups/raster.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
-  ../cups/ppd.h ../cups/debug-private.h ../cups/string-private.h \
-  ../config.h
+  ../cups/debug-private.h ../cups/string-private.h ../config.h \
+  ../cups/ppd.h
 raster.o: raster.c ../cups/raster-private.h ../cups/raster.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
-  ../cups/ppd.h ../cups/debug-private.h ../cups/string-private.h \
-  ../config.h
+  ../cups/debug-private.h ../cups/string-private.h ../config.h
 commandtops.o: commandtops.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/ppd.h ../cups/raster.h ../cups/sidechannel.h
 gziptoany.o: gziptoany.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 common.o: common.c common.h ../cups/string-private.h ../config.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
-  ../cups/ppd.h
+  ../cups/ppd.h ../cups/raster.h
 pstops.o: pstops.c common.h ../cups/string-private.h ../config.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
-  ../cups/ppd.h ../cups/language-private.h ../cups/transcode.h
+  ../cups/ppd.h ../cups/raster.h ../cups/language-private.h \
+  ../cups/transcode.h
 rasterbench.o: rasterbench.c ../config.h ../cups/raster.h ../cups/cups.h \
   ../cups/file.h ../cups/versioning.h ../cups/ipp.h ../cups/http.h \
-  ../cups/array.h ../cups/language.h ../cups/pwg.h ../cups/ppd.h
+  ../cups/array.h ../cups/language.h ../cups/pwg.h
 rastertoepson.o: rastertoepson.c ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h ../cups/pwg.h ../cups/ppd.h \
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h ../cups/raster.h \
   ../cups/string-private.h ../config.h ../cups/language-private.h \
-  ../cups/transcode.h ../cups/raster.h
+  ../cups/transcode.h
 rastertohp.o: rastertohp.c ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h ../cups/pwg.h ../cups/ppd.h \
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h ../cups/raster.h \
   ../cups/string-private.h ../config.h ../cups/language-private.h \
-  ../cups/transcode.h ../cups/raster.h
+  ../cups/transcode.h
 rastertolabel.o: rastertolabel.c ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h ../cups/pwg.h ../cups/ppd.h \
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h ../cups/raster.h \
   ../cups/string-private.h ../config.h ../cups/language-private.h \
-  ../cups/transcode.h ../cups/raster.h
+  ../cups/transcode.h
 rastertopwg.o: rastertopwg.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/raster.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
 testraster.o: testraster.c ../cups/raster-private.h ../cups/raster.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
-  ../cups/ppd.h ../cups/debug-private.h ../cups/string-private.h \
-  ../config.h
+  ../cups/debug-private.h ../cups/string-private.h ../config.h \
+  ../cups/ppd.h
index 322705b..152bc90 100644 (file)
@@ -1,18 +1,16 @@
 #
-# "$Id: Makefile 12568 2015-03-25 13:49:23Z msweet $"
+# Filter makefile for CUPS.
 #
-#   Filter makefile for CUPS.
+# Copyright 2007-2012 by Apple Inc.
+# Copyright 1997-2006 by Easy Software Products.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 1997-2006 by Easy Software Products.
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
-#
-#   This file is subject to the Apple OS-Developed Software exception.
+# This file is subject to the Apple OS-Developed Software exception.
 #
 
 include ../Makedefs
@@ -211,38 +209,6 @@ apihelp:
                --intro spec-ppd.shtml \
                >../doc/help/spec-ppd.html
 
-framedhelp:
-       echo Generating CUPS API help files...
-       mxmldoc --section "Programming" --title "Raster API" \
-               --framed ../cups/api-raster \
-               --css ../doc/cups-printable.css \
-               --header api-raster.header --intro api-raster.shtml \
-               ../cups/raster.h interpret.c raster.c
-       mxmldoc --section "Programming" \
-               --title "Developing PostScript Printer Drivers" \
-               --framed ../cups/postscript-driver \
-               --css ../doc/cups-printable.css \
-               --header postscript-driver.header \
-               --intro postscript-driver.shtml
-       mxmldoc --section "Programming" \
-               --title "Introduction to the PPD Compiler" \
-               --framed ../cups/ppd-compiler \
-               --css ../doc/cups-printable.css \
-               --header ppd-compiler.header \
-               --intro ppd-compiler.shtml
-       mxmldoc --section "Programming" \
-               --title "Developing Raster Printer Drivers" \
-               --framed ../cups/raster-driver \
-               --css ../doc/cups-printable.css \
-               --header raster-driver.header \
-               --intro raster-driver.shtml
-       mxmldoc --section "Specifications" \
-               --title "CUPS PPD Extensions" \
-               --framed ../cups/spec-ppd \
-               --css ../doc/cups-printable.css \
-               --header spec-ppd.header \
-               --intro spec-ppd.shtml \
-
 
 #
 # commandtops
@@ -401,8 +367,3 @@ rasterbench:        rasterbench.o libcupsimage.a
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 12568 2015-03-25 13:49:23Z msweet $".
-#
index 42c11d1..31b87b1 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id$"
-
   Raster API documentation for CUPS.
 
   Copyright 2008-2010 by Apple Inc.
index cb137d5..35996f6 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id$"
-
   Raster API introduction for CUPS.
 
   Copyright 2007-2013 by Apple Inc.
@@ -22,7 +20,7 @@ avoid incompatibilities with newer versions of CUPS.</p>
 
 <p>Two kinds of CUPS filters use the CUPS raster API - raster image processor
 (RIP) filters such as <code>pstoraster</code> and <code>cgpdftoraster</code>
-(OS X) that produce CUPS raster files and printer driver filters that
+(macOS) that produce CUPS raster files and printer driver filters that
 convert CUPS raster files into a format usable by the printer. Printer
 driver filters are by far the most common.</p>
 
@@ -142,7 +140,7 @@ the memory used to read the raster file:</p>
 
 <ul class="code">
 
-       <li><a href="#cupsRasterReadHeader" title="Read a raster page header and store it in a version 1 page header structure.">cupsRasterReadHeader</a> <span class="info">Deprecated in CUPS 1.2/OS X 10.5</span></li>
+       <li><a href="#cupsRasterReadHeader" title="Read a raster page header and store it in a version 1 page header structure.">cupsRasterReadHeader</a> <span class="info">Deprecated in CUPS 1.2/macOS 10.5</span></li>
        <li><a href="#cupsRasterReadHeader2" title="Read a raster page header and store it in a version 2 page header structure.">cupsRasterReadHeader2</a></li>
        <li><a href="#cupsRasterReadPixels" title="Read raster pixels.">cupsRasterReadPixels</a></li>
 
@@ -153,7 +151,7 @@ the memory used to read the raster file:</p>
 <ul class="code">
 
        <li><a href="#cupsRasterInterpretPPD" title="Interpret PPD commands to create a page header.">cupsRasterInterpretPPD</a></li>
-       <li><a href="#cupsRasterWriteHeader" title="Write a raster page header from a version 1 page header structure.">cupsRasterWriteHeader</a> <span class="info">Deprecated in CUPS 1.2/OS X 10.5</span></li>
+       <li><a href="#cupsRasterWriteHeader" title="Write a raster page header from a version 1 page header structure.">cupsRasterWriteHeader</a> <span class="info">Deprecated in CUPS 1.2/macOS 10.5</span></li>
        <li><a href="#cupsRasterWriteHeader2" title="Write a raster page header from a version 2 page header structure.">cupsRasterWriteHeader2</a></li>
        <li><a href="#cupsRasterWritePixels" title="Write raster pixels.">cupsRasterWritePixels</a></li>
 
index a5f0609..65dcd35 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: commandtops.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * PostScript command filter for CUPS.
  *
  * Copyright 2008-2014 by Apple Inc.
@@ -518,8 +516,3 @@ report_levels(ppd_file_t *ppd,              /* I - PPD file */
 
   end_ps(ppd);
 }
-
-
-/*
- * End of "$Id: commandtops.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 73fb370..bed4a53 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: common.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Common filter routines for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -517,8 +515,3 @@ WriteTextComment(const char *name,  /* I - Comment name ("Title", etc.) */
 
   puts(")");
 }
-
-
-/*
- * End of "$Id: common.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 9693ce8..0dcb289 100644 (file)
@@ -1,18 +1,16 @@
 /*
- * "$Id: common.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Common filter definitions for CUPS.
  *
- *   Common filter definitions for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -71,8 +69,3 @@ extern void   WriteTextComment(const char *name, const char *value);
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
-
-
-/*
- * End of "$Id: common.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 4331365..dfbb5c9 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: error.c 12747 2015-06-24 15:55:05Z msweet $"
- *
  * Raster error handling for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -133,7 +131,7 @@ _cupsRasterClearError(void)
  *
  * If there are no recent errors, NULL is returned.
  *
- * @since CUPS 1.3/OS X 10.5@
+ * @since CUPS 1.3/macOS 10.5@
  */
 
 const char *                           /* O - Last error */
@@ -209,7 +207,7 @@ get_error_buffer(void)
     buf = calloc(1, sizeof(_cups_raster_error_t));
     pthread_setspecific(raster_key, buf);
 
-    DEBUG_printf(("4get_error_buffer: buf=%p", buf));
+    DEBUG_printf(("4get_error_buffer: buf=%p", (void *)buf));
   }
 
  /*
@@ -272,8 +270,3 @@ get_error_buffer(void)
   return (&buf);
 }
 #endif /* HAVE_PTHREAD_H */
-
-
-/*
- * End of "$Id: error.c 12747 2015-06-24 15:55:05Z msweet $".
- */
index 9af404d..b3f5dff 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: gziptoany.c 12655 2015-05-22 17:26:40Z msweet $"
- *
  * GZIP/raw pre-filter for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -109,8 +107,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: gziptoany.c 12655 2015-05-22 17:26:40Z msweet $".
- */
index 624a2a7..f811d1a 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: interpret.c 12746 2015-06-24 13:28:36Z msweet $"
- *
  * PPD command interpreter for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -20,6 +18,7 @@
  */
 
 #include <cups/raster-private.h>
+#include <cups/ppd.h>
 
 
 /*
@@ -123,7 +122,7 @@ static void         DEBUG_stack(const char *prefix, _cups_ps_stack_t *st);
  * @code pop@, @code roll@, @code setpagedevice@, and @code stopped@ operators
  * are supported.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 int                                    /* O - 0 on success, -1 on failure */
@@ -184,7 +183,7 @@ cupsRasterInterpretPPD(
 
 #ifdef __APPLE__
  /*
-  * cupsInteger0 is also used for the total page count on OS X; set an
+  * cupsInteger0 is also used for the total page count on macOS; set an
   * uncommon default value so we can tell if the driver is using cupsInteger0.
   */
 
@@ -1724,8 +1723,3 @@ DEBUG_stack(const char       *prefix,     /* I - Prefix string */
     DEBUG_object(prefix, obj);
 }
 #endif /* DEBUG */
-
-
-/*
- * End of "$Id: interpret.c 12746 2015-06-24 13:28:36Z msweet $".
- */
index 08e4c17..331792a 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id$"
-
   PostScript printer driver documentation for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -15,7 +13,7 @@
 
 <h1 class='title'>Developing PostScript Printer Drivers</h1>
 
-<p>This document describes how to develop printer drivers for PostScript printers. Topics include: <a href='#BASICS'>printer driver basics</a>, <a href='#CREATE'>creating new PPD files</a>, <a href='#IMPORT'>importing existing PPD files</a>, <a href='#FILTERS'>using custom filters</a>, <a href='#COLOR'>implementing color management</a>, and <a href='#MACOSX'>adding OS X features</a>.</p>
+<p>This document describes how to develop printer drivers for PostScript printers. Topics include: <a href='#BASICS'>printer driver basics</a>, <a href='#CREATE'>creating new PPD files</a>, <a href='#IMPORT'>importing existing PPD files</a>, <a href='#FILTERS'>using custom filters</a>, <a href='#COLOR'>implementing color management</a>, and <a href='#MACOSX'>adding macOS features</a>.</p>
 
 <div class='summary'><table summary='General Information'>
 <tbody>
index 5e93f85..40b9c0d 100644 (file)
@@ -264,9 +264,9 @@ information file.</P>
 <p>The options used for profile selection can be customized using the <tt>cupsICCQualifier2</tt> and <tt>cupsICCQualifier3</tt> attributes.</p>
 
 
-<h2 class='title'><a name='MACOSX'>Adding OS X Features</a></h2>
+<h2 class='title'><a name='MACOSX'>Adding macOS Features</a></h2>
 
-<p>OS X printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>
+<p>macOS printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>
 
 <pre class='example'>
 <a href='ref-ppdcfile.html#Attribute'>Attribute</a> APDialogExtension "" /Library/Printers/Vendor/filename.plugin
index 2caf3ae..7248754 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id$"
-
   PPD compiler documentation for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
index dca2870..3cd754d 100644 (file)
@@ -205,7 +205,7 @@ follows:</P>
 
        <LI>Bits per color. In the example file, we define 8 bits per color, for
        a continuous-tone grayscale output. All versions of CUPS support 1 and
-       8 bits per color.  CUPS 1.2 and higher (OS X 10.5 and higher) also
+       8 bits per color.  CUPS 1.2 and higher (macOS 10.5 and higher) also
        supports 16 bits per color.</LI>
 
        <LI>Rows per band. In the example file, we define 0 rows per band to
index 2cdde86..e9b4438 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: pstops.c 12655 2015-05-22 17:26:40Z msweet $"
- *
  * PostScript filter for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -3402,8 +3400,3 @@ write_options(
     doc_puts(doc, "userdict/setpagedevice{pop}bind put\n");
   }
 }
-
-
-/*
- * End of "$Id: pstops.c 12655 2015-05-22 17:26:40Z msweet $".
- */
index b15c50d..5028a59 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id$"
-
   Raster printer driver documentation for CUPS.
 
   Copyright 2007-2012 by Apple Inc.
@@ -15,7 +13,7 @@
 
 <h1 class='title'>Developing Raster Printer Drivers</h1>
 
-<p>This document describes how to develop printer drivers for raster printers. Topics include: <a href='#BASICS'>printer driver basics</a>, <a href='#CREATE'>creating new PPD files</a>, <a href='#FILTERS'>using filters</a>, <a href='#COLOR'>implementing color management</a>, and <a href='#MACOSX'>adding OS X features</a>.</p>
+<p>This document describes how to develop printer drivers for raster printers. Topics include: <a href='#BASICS'>printer driver basics</a>, <a href='#CREATE'>creating new PPD files</a>, <a href='#FILTERS'>using filters</a>, <a href='#COLOR'>implementing color management</a>, and <a href='#MACOSX'>adding macOS features</a>.</p>
 
 <div class='summary'><table summary='General Information'>
 <tbody>
index f56982a..2cdc747 100644 (file)
 
 <p>The options used for profile selection can be customized using the <tt>cupsICCQualifier2</tt> and <tt>cupsICCQualifier3</tt> attributes.</p>
 
-<h3><span class='info'>Since OS X 10.5</span>Custom Color Matching Support</h3>
+<h3><span class='info'>Since macOS 10.5</span>Custom Color Matching Support</h3>
 
-<p>OS X printer drivers that are based on an existing standard RGB colorspace can tell the system to use the corresponding colorspace instead of an arbitrary ICC color profile when doing color management. The <a href='#APCustom'><tt>APSupportsCustomColorMatching</tt></a> and <tt>APDefaultCustomColorMatchingProfile</tt> attributes can be used to enable this mode:</p>
+<p>macOS printer drivers that are based on an existing standard RGB colorspace can tell the system to use the corresponding colorspace instead of an arbitrary ICC color profile when doing color management. The <a href='#APCustom'><tt>APSupportsCustomColorMatching</tt></a> and <tt>APDefaultCustomColorMatchingProfile</tt> attributes can be used to enable this mode:</p>
 
 <pre class='example'>
 <a href='ref-ppdcfile.html#Attribute'>Attribute</a> APSupportsCustomColorMatching "" true
 </pre>
 
 
-<h2 class='title'><a name='MACOSX'>Adding OS X Features</a></h2>
+<h2 class='title'><a name='MACOSX'>Adding macOS Features</a></h2>
 
-<p>OS X printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>
+<p>macOS printer drivers can provide <a href='spec-ppd.html#MACOSX'>additional attributes</a> to specify additional option panes in the print dialog, an image of the printer, a help book, and option presets for the driver software:</p>
 
 <pre class='example'>
 <a href='ref-ppdcfile.html#Attribute'>Attribute</a> APDialogExtension "" /Library/Printers/Vendor/filename.plugin
index 5251f31..dee8eec 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: raster.c 12945 2015-10-26 19:46:02Z msweet $"
- *
  * Raster file routines for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * This file is part of the CUPS Imaging library.
@@ -96,6 +94,246 @@ cupsRasterClose(cups_raster_t *r)   /* I - Stream to close */
 
 
 /*
+ * 'cupsRasterInitPWGHeader()' - Initialize a page header for PWG Raster output.
+ *
+ * The "media" argument specifies the media to use.
+ *
+ * The "type" argument specifies a "pwg-raster-document-type-supported" value
+ * that controls the color space and bit depth of the raster data.
+ *
+ * The "xres" and "yres" arguments specify the raster resolution in dots per
+ * inch.
+ *
+ * The "sheet_back" argument specifies a "pwg-raster-document-sheet-back" value
+ * to apply for the back side of a page.  Pass @code NULL@ for the front side.
+ *
+ * @since CUPS 2.2/macOS 10.12@
+ */
+
+int                                    /* O - 1 on success, 0 on failure */
+cupsRasterInitPWGHeader(
+    cups_page_header2_t *h,            /* I - Page header */
+    pwg_media_t         *media,                /* I - PWG media information */
+    const char          *type,         /* I - PWG raster type string */
+    int                 xdpi,          /* I - Cross-feed direction (horizontal) resolution */
+    int                 ydpi,          /* I - Feed direction (vertical) resolution */
+    const char          *sides,                /* I - IPP "sides" option value */
+    const char          *sheet_back)   /* I - Transform for back side or @code NULL@ for none */
+{
+  if (!h || !media || !type || xdpi <= 0 || ydpi <= 0)
+  {
+    _cupsRasterAddError("%s", strerror(EINVAL));
+    return (0);
+  }
+
+ /*
+  * Initialize the page header...
+  */
+
+  memset(h, 0, sizeof(cups_page_header2_t));
+
+  strlcpy(h->cupsPageSizeName, media->pwg, sizeof(h->cupsPageSizeName));
+
+  h->PageSize[0] = (unsigned)(72 * media->width / 2540);
+  h->PageSize[1] = (unsigned)(72 * media->length / 2540);
+
+  /* This never gets written but is needed for some applications */
+  h->cupsPageSize[0] = 72.0f * media->width / 2540.0f;
+  h->cupsPageSize[1] = 72.0f * media->length / 2540.0f;
+
+  h->ImagingBoundingBox[2] = h->PageSize[0];
+  h->ImagingBoundingBox[3] = h->PageSize[1];
+
+  h->HWResolution[0] = (unsigned)xdpi;
+  h->HWResolution[1] = (unsigned)ydpi;
+
+  h->cupsWidth  = (unsigned)(media->width * xdpi / 2540);
+  h->cupsHeight = (unsigned)(media->length * ydpi / 2540);
+
+  if (h->cupsWidth > 0x00ffffff || h->cupsHeight > 0x00ffffff)
+  {
+    _cupsRasterAddError("Raster dimensions too large.");
+    return (0);
+  }
+
+  h->cupsInteger[CUPS_RASTER_PWG_ImageBoxRight]  = h->cupsWidth;
+  h->cupsInteger[CUPS_RASTER_PWG_ImageBoxBottom] = h->cupsHeight;
+
+ /*
+  * Colorspace and bytes per line...
+  */
+
+  if (!strcmp(type, "adobe-rgb_8"))
+  {
+    h->cupsBitsPerColor = 8;
+    h->cupsBitsPerPixel = 24;
+    h->cupsColorSpace   = CUPS_CSPACE_ADOBERGB;
+  }
+  else if (!strcmp(type, "adobe-rgb_16"))
+  {
+    h->cupsBitsPerColor = 16;
+    h->cupsBitsPerPixel = 48;
+    h->cupsColorSpace   = CUPS_CSPACE_ADOBERGB;
+  }
+  else if (!strcmp(type, "black_1"))
+  {
+    h->cupsBitsPerColor = 1;
+    h->cupsBitsPerPixel = 1;
+    h->cupsColorSpace   = CUPS_CSPACE_K;
+  }
+  else if (!strcmp(type, "black_8"))
+  {
+    h->cupsBitsPerColor = 8;
+    h->cupsBitsPerPixel = 8;
+    h->cupsColorSpace   = CUPS_CSPACE_K;
+  }
+  else if (!strcmp(type, "black_16"))
+  {
+    h->cupsBitsPerColor = 16;
+    h->cupsBitsPerPixel = 16;
+    h->cupsColorSpace   = CUPS_CSPACE_K;
+  }
+  else if (!strcmp(type, "cmyk_8"))
+  {
+    h->cupsBitsPerColor = 8;
+    h->cupsBitsPerPixel = 32;
+    h->cupsColorSpace   = CUPS_CSPACE_CMYK;
+  }
+  else if (!strcmp(type, "cmyk_16"))
+  {
+    h->cupsBitsPerColor = 16;
+    h->cupsBitsPerPixel = 64;
+    h->cupsColorSpace   = CUPS_CSPACE_CMYK;
+  }
+  else if (!strncmp(type, "device", 6) && type[6] >= '1' && type[6] <= '9')
+  {
+    int ncolors, bits;                 /* Number of colors and bits */
+
+
+    if (sscanf(type, "device%d_%d", &ncolors, &bits) != 2 || ncolors > 15 || (bits != 8 && bits != 16))
+    {
+      _cupsRasterAddError("Unsupported raster type \'%s\'.", type);
+      return (0);
+    }
+
+    h->cupsBitsPerColor = (unsigned)bits;
+    h->cupsBitsPerPixel = (unsigned)(ncolors * bits);
+    h->cupsColorSpace   = (cups_cspace_t)(CUPS_CSPACE_DEVICE1 + ncolors - 1);
+  }
+  else if (!strcmp(type, "rgb_8"))
+  {
+    h->cupsBitsPerColor = 8;
+    h->cupsBitsPerPixel = 24;
+    h->cupsColorSpace   = CUPS_CSPACE_RGB;
+  }
+  else if (!strcmp(type, "rgb_16"))
+  {
+    h->cupsBitsPerColor = 16;
+    h->cupsBitsPerPixel = 48;
+    h->cupsColorSpace   = CUPS_CSPACE_RGB;
+  }
+  else if (!strcmp(type, "sgray_1"))
+  {
+    h->cupsBitsPerColor = 1;
+    h->cupsBitsPerPixel = 1;
+    h->cupsColorSpace   = CUPS_CSPACE_SW;
+  }
+  else if (!strcmp(type, "sgray_8"))
+  {
+    h->cupsBitsPerColor = 8;
+    h->cupsBitsPerPixel = 8;
+    h->cupsColorSpace   = CUPS_CSPACE_SW;
+  }
+  else if (!strcmp(type, "sgray_16"))
+  {
+    h->cupsBitsPerColor = 16;
+    h->cupsBitsPerPixel = 16;
+    h->cupsColorSpace   = CUPS_CSPACE_SW;
+  }
+  else if (!strcmp(type, "srgb_8"))
+  {
+    h->cupsBitsPerColor = 8;
+    h->cupsBitsPerPixel = 24;
+    h->cupsColorSpace   = CUPS_CSPACE_SRGB;
+  }
+  else if (!strcmp(type, "srgb_16"))
+  {
+    h->cupsBitsPerColor = 16;
+    h->cupsBitsPerPixel = 48;
+    h->cupsColorSpace   = CUPS_CSPACE_SRGB;
+  }
+  else
+  {
+    _cupsRasterAddError("Unsupported raster type \'%s\'.", type);
+    return (0);
+  }
+
+  h->cupsColorOrder   = CUPS_ORDER_CHUNKED;
+  h->cupsNumColors    = h->cupsBitsPerPixel / h->cupsBitsPerColor;
+  h->cupsBytesPerLine = (h->cupsWidth * h->cupsBitsPerPixel + 7) / 8;
+
+ /*
+  * Duplex support...
+  */
+
+  h->cupsInteger[CUPS_RASTER_PWG_CrossFeedTransform] = 1;
+  h->cupsInteger[CUPS_RASTER_PWG_FeedTransform]      = 1;
+
+  if (sides)
+  {
+    if (!strcmp(sides, "two-sided-long-edge"))
+    {
+      h->Duplex = 1;
+    }
+    else if (!strcmp(sides, "two-sided-short-edge"))
+    {
+      h->Duplex = 1;
+      h->Tumble = 1;
+    }
+    else if (strcmp(sides, "one-sided"))
+    {
+      _cupsRasterAddError("Unsupported sides value \'%s\'.", sides);
+      return (0);
+    }
+
+    if (sheet_back)
+    {
+      if (!strcmp(sheet_back, "flipped"))
+      {
+        if (h->Tumble)
+          h->cupsInteger[CUPS_RASTER_PWG_CrossFeedTransform] = 0xffffffffU;
+        else
+          h->cupsInteger[CUPS_RASTER_PWG_FeedTransform] = 0xffffffffU;
+      }
+      else if (!strcmp(sheet_back, "manual-tumble"))
+      {
+        if (h->Tumble)
+        {
+          h->cupsInteger[CUPS_RASTER_PWG_CrossFeedTransform] = 0xffffffffU;
+          h->cupsInteger[CUPS_RASTER_PWG_FeedTransform]      = 0xffffffffU;
+        }
+      }
+      else if (!strcmp(sheet_back, "rotated"))
+      {
+        if (!h->Tumble)
+        {
+          h->cupsInteger[CUPS_RASTER_PWG_CrossFeedTransform] = 0xffffffffU;
+          h->cupsInteger[CUPS_RASTER_PWG_FeedTransform]      = 0xffffffffU;
+        }
+      }
+      else if (strcmp(sheet_back, "normal"))
+      {
+       _cupsRasterAddError("Unsupported sheet_back value \'%s\'.", sheet_back);
+       return (0);
+      }
+    }
+  }
+
+  return (1);
+}
+
+
+/*
  * 'cupsRasterOpen()' - Open a raster stream using a file descriptor.
  *
  * This function associates a raster stream with the given file descriptor.
@@ -278,7 +516,7 @@ cupsRasterReadHeader(
  * 'cupsRasterReadHeader2()' - Read a raster page header and store it in a
  *                             version 2 page header structure.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 unsigned                               /* O - 1 on success, 0 on failure/end-of-file */
@@ -290,7 +528,7 @@ cupsRasterReadHeader2(
   * Get the raster header...
   */
 
-  DEBUG_printf(("cupsRasterReadHeader2(r=%p, h=%p)", r, h));
+  DEBUG_printf(("cupsRasterReadHeader2(r=%p, h=%p)", (void *)r, (void *)h));
 
   if (!cups_raster_read_header(r))
   {
@@ -330,7 +568,7 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
   unsigned     count;                  /* Repetition count */
 
 
-  DEBUG_printf(("cupsRasterReadPixels(r=%p, p=%p, len=%u)", r, p, len));
+  DEBUG_printf(("cupsRasterReadPixels(r=%p, p=%p, len=%u)", (void *)r, (void *)p, len));
 
   if (r == NULL || r->mode != CUPS_RASTER_READ || r->remaining == 0 ||
       r->header.cupsBytesPerLine == 0)
@@ -442,7 +680,7 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
          }
 
          temp  += count;
-         bytes -= count;
+         bytes -= (ssize_t)count;
        }
        else
        {
@@ -457,7 +695,7 @@ cupsRasterReadPixels(cups_raster_t *r,      /* I - Raster stream */
           if (count < r->bpp)
            break;
 
-         bytes -= count;
+         bytes -= (ssize_t)count;
 
           if (!cups_raster_read(r, temp, r->bpp))
          {
@@ -665,7 +903,7 @@ cupsRasterWriteHeader(
  *
  * The page header can be initialized using @link cupsRasterInterpretPPD@.
  *
- * @since CUPS 1.2/OS X 10.5@
+ * @since CUPS 1.2/macOS 10.5@
  */
 
 unsigned                               /* O - 1 on success, 0 on failure */
@@ -770,8 +1008,7 @@ cupsRasterWritePixels(cups_raster_t *r,    /* I - Raster stream */
   unsigned     remaining;              /* Bytes remaining */
 
 
-  DEBUG_printf(("cupsRasterWritePixels(r=%p, p=%p, len=%u), remaining=%u\n",
-               r, p, len, r->remaining));
+  DEBUG_printf(("cupsRasterWritePixels(r=%p, p=%p, len=%u), remaining=%u", (void *)r, (void *)p, len, r->remaining));
 
   if (r == NULL || r->mode == CUPS_RASTER_READ || r->remaining == 0)
     return (0);
@@ -957,7 +1194,7 @@ cups_raster_read_header(
   size_t       len;                    /* Length for read/swap */
 
 
-  DEBUG_printf(("3cups_raster_read_header(r=%p), r->mode=%d", r, r ? r->mode : 0));
+  DEBUG_printf(("3cups_raster_read_header(r=%p), r->mode=%d", (void *)r, r ? r->mode : 0));
 
   if (r == NULL || r->mode != CUPS_RASTER_READ)
     return (0);
@@ -1039,7 +1276,7 @@ cups_raster_io(cups_raster_t *r,  /* I - Raster stream */
                total;                  /* Total bytes read/written */
 
 
-  DEBUG_printf(("5cups_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 ")", (void *)r, (void *)buf, CUPS_LLCAST bytes));
 
   for (total = 0; total < (ssize_t)bytes; total += count, buf += count)
   {
@@ -1082,7 +1319,7 @@ cups_raster_read(cups_raster_t *r,        /* I - Raster stream */
                total;                  /* Total bytes read */
 
 
-  DEBUG_printf(("5cups_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 ")", (void *)r, (void *)buf, CUPS_LLCAST bytes));
 
   if (!r->compressed)
     return (cups_raster_io(r, buf, bytes));
@@ -1126,7 +1363,7 @@ cups_raster_read(cups_raster_t *r,        /* I - Raster stream */
   {
     count = (ssize_t)bytes - total;
 
-    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));
+    DEBUG_printf(("6cups_raster_read: count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p", CUPS_LLCAST count, CUPS_LLCAST remaining, (void *)buf, (void *)r->bufptr, (void *)r->bufend));
 
     if (remaining == 0)
     {
@@ -1376,7 +1613,7 @@ cups_raster_write(
                        count;          /* Count */
 
 
-  DEBUG_printf(("3cups_raster_write(r=%p, pixels=%p)\n", r, pixels));
+  DEBUG_printf(("3cups_raster_write(r=%p, pixels=%p)", (void *)r, (void *)pixels));
 
  /*
   * Allocate a write buffer as needed...
@@ -1560,8 +1797,3 @@ cups_write_fd(void          *ctx, /* I - File descriptor pointer */
 
   return (count);
 }
-
-
-/*
- * End of "$Id: raster.c 12945 2015-10-26 19:46:02Z msweet $".
- */
index 56d2778..010fd9d 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: rasterbench.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Raster benchmark program for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -21,6 +19,7 @@
 
 #include <config.h>
 #include <cups/raster.h>
+#include <stdio.h>
 #include <stdlib.h>
 #include <sys/time.h>
 #include <signal.h>
@@ -341,8 +340,3 @@ write_test(int         fd,          /* I - File descriptor to write to */
 
   cupsRasterClose(r);
 }
-
-
-/*
- * End of "$Id: rasterbench.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 578b0e7..74dc61c 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: rastertoepson.c 12945 2015-10-26 19:46:02Z msweet $"
- *
  * EPSON ESC/P and ESC/P2 filter for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -1171,8 +1169,3 @@ main(int  argc,                           /* I - Number of command-line arguments */
   else
     return (0);
 }
-
-
-/*
- * End of "$Id: rastertoepson.c 12945 2015-10-26 19:46:02Z msweet $".
- */
index 1f54f92..2994b80 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: rastertohp.c 12945 2015-10-26 19:46:02Z msweet $"
- *
  * Hewlett-Packard Page Control Language filter for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -844,8 +842,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
   else
     return (0);
 }
-
-
-/*
- * End of "$Id: rastertohp.c 12945 2015-10-26 19:46:02Z msweet $".
- */
index afcac96..a082831 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: rastertolabel.c 13022 2015-12-16 18:35:26Z msweet $"
- *
  * Label printer filter for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -1278,8 +1276,3 @@ main(int  argc,                           /* I - Number of command-line arguments */
   else
     return (0);
 }
-
-
-/*
- * End of "$Id: rastertolabel.c 13022 2015-12-16 18:35:26Z msweet $".
- */
index 0388bf4..f478ac5 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: rastertopwg.c 12945 2015-10-26 19:46:02Z msweet $"
- *
  * CUPS raster to PWG raster format filter for CUPS.
  *
- * Copyright 2011, 2014-2015 Apple Inc.
+ * Copyright 2011, 2014-2016 Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright law.
@@ -19,6 +17,7 @@
  */
 
 #include <cups/cups-private.h>
+#include <cups/ppd-private.h>
 #include <cups/raster.h>
 #include <unistd.h>
 #include <fcntl.h>
@@ -51,8 +50,8 @@ main(int  argc,                               /* I - Number of command-line args */
   ppd_file_t           *ppd;           /* PPD file */
   ppd_attr_t           *back;          /* cupsBackSize attribute */
   _ppd_cache_t         *cache;         /* PPD cache */
-  _pwg_size_t          *pwg_size;      /* PWG media size */
-  _pwg_media_t         *pwg_media;     /* PWG media name */
+  pwg_size_t           *pwg_size;      /* PWG media size */
+  pwg_media_t          *pwg_media;     /* PWG media name */
   int                  num_options;    /* Number of options */
   cups_option_t                *options = NULL;/* Options */
   const char           *val;           /* Option value */
@@ -268,10 +267,8 @@ main(int  argc,                            /* I - Number of command-line args */
     }
     else
     {
-      pwg_media = _pwgMediaForSize((int)(2540.0 * inheader.cupsPageSize[0] /
-                                         72.0),
-                                   (int)(2540.0 * inheader.cupsPageSize[1] /
-                                         72.0));
+      pwg_media = pwgMediaForSize((int)(2540.0 * inheader.cupsPageSize[0] / 72.0),
+                                 (int)(2540.0 * inheader.cupsPageSize[1] / 72.0));
 
       if (pwg_media)
         strlcpy(outheader.cupsPageSizeName, pwg_media->pwg,
@@ -485,8 +482,3 @@ main(int  argc,                             /* I - Number of command-line args */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: rastertopwg.c 12945 2015-10-26 19:46:02Z msweet $".
- */
index 40433aa..e7e1ab7 100644 (file)
@@ -1,6 +1,4 @@
 <!--
-  "$Id$"
-
   PPD extension documentation for CUPS.
 
   Copyright 2007-2011 by Apple Inc.
index 89d7060..3b75430 100644 (file)
@@ -30,11 +30,11 @@ LINE-END = CR / LF / CR LF
 
 <p>CUPS supports several methods of auto-configuration via PPD keywords.</p>
 
-<h3><span class='info'>OS X 10.5</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
+<h3><span class='info'>macOS 10.5</span><a name='APAutoSetupTool'>APAutoSetupTool</a></h3>
 
 <p class='summary'>*APAutoSetupTool: "/LibraryPrinters/vendor/filename"</p>
 
-<p>This OS X keyword defines a program that sets the default option choices. It is run when a printer is added from the <var>Add Printer</var> window or the <var>Nearby Printers</var> list in the <var>Print</var> dialog.</p>
+<p>This macOS keyword defines a program that sets the default option choices. It is run when a printer is added from the <var>Add Printer</var> window or the <var>Nearby Printers</var> list in the <var>Print</var> dialog.</p>
 
 <p>The program is provided with two arguments: the printer's device URI and the PPD file to be used for the printer. The program must write an updated PPD file to stdout.</p>
 
@@ -45,7 +45,7 @@ LINE-END = CR / LF / CR LF
 *APAutoSetupTool: "/Library/Printers/vendor/Tools/autosetuptool"
 </pre>
 
-<h3><span class='info'>OS X 10.2/CUPS 1.4</span><a name='QUERYKEYWORD'>?MainKeyword</a></h3>
+<h3><span class='info'>macOS 10.2/CUPS 1.4</span><a name='QUERYKEYWORD'>?MainKeyword</a></h3>
 
 <p class='summary'>*?<i>MainKeyword</i>: "<br>
   PostScript query code that writes a message using the = operator...<br>
@@ -74,7 +74,7 @@ LINE-END = CR / LF / CR LF
 *CloseUI: OptionDuplex
 </pre>
 
-<h3><span class='info'>OS X 10.4/CUPS 1.5</span><a name='OID'>OIDMainKeyword</a></h3>
+<h3><span class='info'>macOS 10.4/CUPS 1.5</span><a name='OID'>OIDMainKeyword</a></h3>
 
 <p class='summary'>*?OID<i>MainKeyword</i>: ".n.n.n..."<br>
 *OID<i>MainKeyword</i> <i>OptionKeyword1</i>: "value"<br>
@@ -97,7 +97,7 @@ LINE-END = CR / LF / CR LF
 
 <h2 class='title'><a name='PROFILES'>Color Profiles</a></h2>
 
-<p>CUPS supports three types of color profiles. The first type is based on sRGB and is used by the standard CUPS raster filters and GPL Ghostscript. The second type is based on ICC profiles and is used by the Quartz-based filters on MacOS X. The final type is based on well-known colorspaces such as sRGB and Adobe RGB.</p>
+<p>CUPS supports three types of color profiles. The first type is based on sRGB and is used by the standard CUPS raster filters and GPL Ghostscript. The second type is based on ICC profiles and is used by the Quartz-based filters on macOS. The final type is based on well-known colorspaces such as sRGB and Adobe RGB.</p>
 
 <blockquote><b>Note:</b>
 
@@ -109,7 +109,7 @@ LINE-END = CR / LF / CR LF
 
 <p class='summary'>*cupsColorProfile Resolution/MediaType: "density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22"</p>
 
-<p>This string keyword specifies an sRGB-based color profile consisting of gamma and density controls and a 3x3 CMY color transform matrix. <em>This keyword is not supported on OS X.</em></p>
+<p>This string keyword specifies an sRGB-based color profile consisting of gamma and density controls and a 3x3 CMY color transform matrix. <em>This keyword is not supported on macOS.</em></p>
 
 <p>The <i>Resolution</i> and <i>MediaType</i> values may be "-" to act as a wildcard. Otherwise they must match one of the <tt>Resolution</tt> or <tt>MediaType</tt> option keywords defined in the PPD file.</p>
 
@@ -142,7 +142,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 </pre>
 
 
-<h3><span class='info'>OS X 10.3/CUPS 1.2</span><a name='cupsICCProfile'>cupsICCProfile</a></h3>
+<h3><span class='info'>macOS 10.3/CUPS 1.2</span><a name='cupsICCProfile'>cupsICCProfile</a></h3>
 
 <p class='summary'>*cupsICCProfile ColorModel.MediaType.Resolution/Description: "filename"</p>
 
@@ -181,22 +181,22 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *cupsICCQualifier3: Resolution
 </pre>
 
-<h3><span class='info'>OS X 10.4</span><a name='APCustom'>Custom Color Matching Support</a></h3>
+<h3><span class='info'>macOS 10.4</span><a name='APCustom'>Custom Color Matching Support</a></h3>
 
 <p class='summary'>*<a href='#APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a>: true<br>
 *<a href='#APCustomColorMatchingName'>APCustomColorMatchingName</a> name/text: ""<br>
 *<a href='#APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a>: profile<br>
 *<a href='#APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a>: profile</p>
 
-<p>These keywords tell the OS X raster filters that the printer driver provides its own custom color matching and that generic color profiles should be used when generating 1-, 3-, and 4-component raster data as requested by the driver. The <tt>APCustomColorMatchingProfile</tt> and <tt>APDefaultColorMatchingProfile</tt> keywords specify alternate color profiles (sRGB or AdobeRGB) to use for 3-color (RGB) raster data.</p>
+<p>These keywords tell the macOS raster filters that the printer driver provides its own custom color matching and that generic color profiles should be used when generating 1-, 3-, and 4-component raster data as requested by the driver. The <tt>APCustomColorMatchingProfile</tt> and <tt>APDefaultColorMatchingProfile</tt> keywords specify alternate color profiles (sRGB or AdobeRGB) to use for 3-color (RGB) raster data.</p>
 
 <blockquote><b>Note:</b>
 
-<p>Prior to OS X 10.6, the default RGB color space was Apple's "GenericRGB". The new default in OS X 10.6 and later is "sRGB". For more information, see <a href="http://support.apple.com/kb/HT3712">"OS X v10.6: About gamma 2.2"</a> on Apple's support site.</p>
+<p>Prior to macOS 10.6, the default RGB color space was Apple's "GenericRGB". The new default in macOS 10.6 and later is "sRGB". For more information, see <a href="http://support.apple.com/kb/HT3712">"macOS v10.6: About gamma 2.2"</a> on Apple's support site.</p>
 
 </blockquote>
 
-<h4><span class='info'>OS X 10.5</span><a name='APCustomColorMatchingName'>APCustomColorMatchingName</a></h4>
+<h4><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingName'>APCustomColorMatchingName</a></h4>
 
 <p class='summary'>*APCustomColorMatchingName name/text: ""</p>
 
@@ -210,7 +210,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *fr.APCustomColorMatchingName name/La AcmeColor(tm): ""
 </pre>
 
-<h4><span class='info'>OS X 10.5</span><a name='APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a></h4>
+<h4><span class='info'>macOS 10.5</span><a name='APCustomColorMatchingProfile'>APCustomColorMatchingProfile</a></h4>
 
 <p class='summary'>*APCustomColorMatchingProfile: name</p>
 
@@ -232,7 +232,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *APCustomColorMatchingProfile: AdobeRGB
 </pre>
 
-<h4><span class='info'>OS X 10.5</span><a name='APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a></h4>
+<h4><span class='info'>macOS 10.5</span><a name='APDefaultCustomColorMatchingProfile'>APDefaultCustomColorMatchingProfile</a></h4>
 
 <p class='summary'>*APDefaultCustomColorMatchingProfile: name</p>
 
@@ -246,7 +246,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *APDefaultCustomColorMatchingProfile: sRGB
 </pre>
 
-<h4><span class='info'>OS X 10.4</span><a name='APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a></h4>
+<h4><span class='info'>macOS 10.4</span><a name='APSupportsCustomColorMatching'>APSupportsCustomColorMatching</a></h4>
 
 <p class='summary'>*APSupportsCustomColorMatching: boolean</p>
 
@@ -282,7 +282,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 
 </blockquote>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsUIConstraints'>cupsUIConstraints</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIConstraints'>cupsUIConstraints</a></h3>
 
 <p class='summary'>*cupsUIConstraints resolver: "*Keyword1 *Keyword2 ..."<br>
 *cupsUIConstraints resolver: "*Keyword1 OptionKeyword1 *Keyword2 ..."<br>
@@ -312,7 +312,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 *cupsUIConstraints photo: "*OutputMode Photo *MediaType Transparency *Resolution 1200dpi"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsUIResolver'>cupsUIResolver</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsUIResolver'>cupsUIResolver</a></h3>
 
 <p class='summary'>*cupsUIResolver resolver: "*Keyword1 OptionKeyword1 *Keyword2 OptionKeyword2 ..."</p>
 
@@ -414,7 +414,7 @@ f(x) = density * x <sup style='font-size: 100%'>gamma</sup>
 </pre>
 
 
-<h2 class='title'><a name='OPTIONS'><span class="info">CUPS 1.3/OS X 10.6</span>Custom Options</a></h2>
+<h2 class='title'><a name='OPTIONS'><span class="info">CUPS 1.3/macOS 10.6</span>Custom Options</a></h2>
 
 <p>CUPS supports custom options using an extension of the <tt>CustomPageSize</tt> and <tt>ParamCustomPageSize</tt> syntax:</p>
 
@@ -872,7 +872,7 @@ PRE B {
 <p>The CUPS media keywords allow drivers to specify alternate custom page
 size limits based on up to two options.</p>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMediaQualifier2'>cupsMediaQualifier2</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier2'>cupsMediaQualifier2</a></h3>
 
 <p class='summary'>*cupsMediaQualifier2: MainKeyword</p>
 
@@ -891,7 +891,7 @@ custom page size limits.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMediaQualifier3'>cupsMediaQualifier3</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMediaQualifier3'>cupsMediaQualifier3</a></h3>
 
 <p class='summary'>*cupsMediaQualifier3: MainKeyword</p>
 
@@ -910,7 +910,7 @@ custom page size limits.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMinSize'>cupsMinSize</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMinSize'>cupsMinSize</a></h3>
 
 <p class='summary'>*cupsMinSize .Qualifier2.Qualifier3: "width length"<br>
 *cupsMinSize .Qualifier2.: "width length"<br>
@@ -933,7 +933,7 @@ are used to identify options to use for matching.</p>
 *cupsMinSize ..Photo: "300 300"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMaxSize'>cupsMaxSize</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMaxSize'>cupsMaxSize</a></h3>
 
 <p class='summary'>*cupsMaxSize .Qualifier2.Qualifier3: "width length"<br>
 *cupsMaxSize .Qualifier2.: "width length"<br>
@@ -957,11 +957,11 @@ are used to identify options to use for matching.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsPageSizeCategory'>cupsPageSizeCategory</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPageSizeCategory'>cupsPageSizeCategory</a></h3>
 
 <p class="summary">*cupsPageSizeCategory name/text: "name name2 ... nameN"</p>
 
-<p>This keyword lists related paper size names that should be grouped together in the Print or Page Setup dialogs. The "name" portion of the keyword specifies the root/default size for the grouping. On OS X the grouped paper sizes are shown in a submenu of the main paper size. When omitted, sizes with the same dimensions are automatically grouped together, for example "Letter" and "Letter.Borderless".</p>
+<p>This keyword lists related paper size names that should be grouped together in the Print or Page Setup dialogs. The "name" portion of the keyword specifies the root/default size for the grouping. On macOS the grouped paper sizes are shown in a submenu of the main paper size. When omitted, sizes with the same dimensions are automatically grouped together, for example "Letter" and "Letter.Borderless".</p>
 
 <p>Example:</p>
 
@@ -974,7 +974,7 @@ are used to identify options to use for matching.</p>
 
 <h2 class='title'><a name='ATTRIBUTES'>General Attributes</a></h2>
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsBackSide'>cupsBackSide</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsBackSide'>cupsBackSide</a></h3>
 
 <p class='summary'>*cupsBackSide: keyword</p>
 
@@ -1050,7 +1050,7 @@ will be ignored.</p>
 </table>
 </div>
 
-<p><em>* - Not supported in OS X 10.5.x and earlier</em></p>
+<p><em>* - Not supported in macOS 10.5.x and earlier</em></p>
 
 <div class='figure'><table summary='Back side images'>
 <caption>Figure 1: Back side images</caption>
@@ -1070,7 +1070,7 @@ will be ignored.</p>
 <p>Also see the related <a href='#APDuplexRequiresFlippedMargin'><tt>APDuplexRequiresFlippedMargin</tt></a>
 keyword.</p>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsCommands'>cupsCommands</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsCommands'>cupsCommands</a></h3>
 
 <p class='summary'>*cupsCommands: "name name2 ... nameN"</p>
 
@@ -1086,7 +1086,7 @@ by whitespace.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsEvenDuplex'>cupsEvenDuplex</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsEvenDuplex'>cupsEvenDuplex</a></h3>
 
 <p class='summary'>*cupsEvenDuplex: boolean</p>
 
@@ -1164,21 +1164,21 @@ the special filter program "-" may be specified.</p>
 
 <p class='summary'>*cupsFlipDuplex: boolean</p>
 
-<p>Due to implementation differences between OS X and Ghostscript,
+<p>Due to implementation differences between macOS and Ghostscript,
 the <tt>cupsFlipDuplex</tt> keyword is deprecated. Instead, use
 the <a href='#cupsBackSide'><tt>cupsBackSide</tt></a> keyword to specify
 the coordinate system (pixel layout) of the page data on the back side of
 duplex pages.</p>
 
 <p>The value <code>true</code> maps to a <tt>cupsBackSide</tt> value
-of <code>Rotated</code> on OS X and <code>Flipped</code> with
+of <code>Rotated</code> on macOS and <code>Flipped</code> with
 Ghostscript.</p>
 
 <p>The default value is <code>false</code>.</p>
 
 <blockquote><b>Note:</b>
 
-<p>OS X drivers that previously used
+<p>macOS drivers that previously used
 <tt>cupsFlipDuplex</tt> may wish to provide both the old and
 new keywords for maximum compatibility, for example:</p>
 
@@ -1195,7 +1195,7 @@ Ghostscript can use:</p>
 *cupsFlipDuplex: true
 </pre></blockquote>
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsIPPFinishings'>cupsIPPFinishings</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPFinishings'>cupsIPPFinishings</a></h3>
 
 <p class='summary'>*cupsIPPFinishings number/text: "*Option Choice ..."</p>
 
@@ -1211,7 +1211,7 @@ values to PPD options and choices.</p>
 *cupsIPPFinishings 21/staple-bottom-left: "*StapleLocation SingleLandscape"
 </pre>
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsIPPReason'>cupsIPPReason</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsIPPReason'>cupsIPPReason</a></h3>
 
 <p class='summary'>*cupsIPPReason reason/Reason Text: "optional URIs"</p>
 
@@ -1265,7 +1265,7 @@ http://www.vendor.com/help"
 </pre>
 
 
-<h3><span class='info'>CUPS 1.7/OS X 10.9</span><a name='cupsJobAccountId'>cupsJobAccountId</a></h3>
+<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountId'>cupsJobAccountId</a></h3>
 
 <p class='summary'>*cupsJobAccountId: boolean</p>
 
@@ -1279,7 +1279,7 @@ http://www.vendor.com/help"
 </pre>
 
 
-<h3><span class='info'>CUPS 1.7/OS X 10.9</span><a name='cupsJobAccountingUserId'>cupsJobAccountingUserId</a></h3>
+<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobAccountingUserId'>cupsJobAccountingUserId</a></h3>
 
 <p class='summary'>*cupsJobAccountingUserId: boolean</p>
 
@@ -1293,7 +1293,7 @@ http://www.vendor.com/help"
 </pre>
 
 
-<h3><span class='info'>CUPS 1.7/OS X 10.9</span><a name='cupsJobPassword'>cupsJobPassword</a></h3>
+<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsJobPassword'>cupsJobPassword</a></h3>
 
 <p class='summary'>*cupsJobPassword: "format"</p>
 
@@ -1307,7 +1307,7 @@ http://www.vendor.com/help"
 </pre>
 
 
-<h3><span class='info'>CUPS 1.2/OS X 10.5</span><a name='cupsLanguages'>cupsLanguages</a></h3>
+<h3><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsLanguages'>cupsLanguages</a></h3>
 
 <p class='summary'>*cupsLanguages: "locale list"</p>
 
@@ -1323,7 +1323,7 @@ list of locale names ("en", "en_US", "fr_CA", etc.)</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.7/OS X 10.9</span><a name='cupsMandatory'>cupsMandatory</a></h3>
+<h3><span class='info'>CUPS 1.7/macOS 10.9</span><a name='cupsMandatory'>cupsMandatory</a></h3>
 
 <p class='summary'>*cupsMandatory: "attribute1 attribute2 ... attributeN"</p>
 
@@ -1352,7 +1352,7 @@ hardware. The default value is <code>false</code>.</p>
 *cupsManualCopies: true
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMarkerName'>cupsMarkerName</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerName'>cupsMarkerName</a></h3>
 
 <p class='summary'>*cupsMarkerName/Name Text: ""</p>
 
@@ -1366,7 +1366,7 @@ generated by the driver to human readable text.</p>
 *cupsMarkerName cyanToner/Cyan Toner: ""
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsMarkerNotice'>cupsMarkerNotice</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsMarkerNotice'>cupsMarkerNotice</a></h3>
 
 <p class='summary'>*cupsMarkerNotice: "disclaimer text"</p>
 
@@ -1380,7 +1380,7 @@ are approximate".</p>
 *cupsMarkerNotice: "Supply levels are approximate."
 </pre>
 
-<h3><span class='info'>CUPS 1.6/OS X 10.8</span><a name='cupsMaxCopies'>cupsMaxCopies</a></h3>
+<h3><span class='info'>CUPS 1.6/macOS 10.8</span><a name='cupsMaxCopies'>cupsMaxCopies</a></h3>
 
 <p class='summary'>*cupsMaxCopies: integer</p>
 
@@ -1409,7 +1409,7 @@ the output for a specific model of printer.</p>
 </pre>
 
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsPJLCharset'>cupsPJLCharset</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPJLCharset'>cupsPJLCharset</a></h3>
 
 <p class='summary'>*cupsPJLCharset: "ISO character set name"</p>
 
@@ -1424,7 +1424,7 @@ assumed.</p>
 *cupsPJLCharset: "UTF-8"
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsPJLDisplay'>cupsPJLDisplay</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsPJLDisplay'>cupsPJLDisplay</a></h3>
 
 <p class='summary'>*cupsPJLDisplay: "what"</p>
 
@@ -1443,7 +1443,7 @@ to use "@PJL RDYMSG DISPLAY". The default is "job".</p>
 *cupsPJLDisplay: "none"
 </pre>
 
-<h3><span class='info'>CUPS 1.2/OS X 10.5</span><a name='cupsPortMonitor'>cupsPortMonitor</a></h3>
+<h3><span class='info'>CUPS 1.2/macOS 10.5</span><a name='cupsPortMonitor'>cupsPortMonitor</a></h3>
 
 <p class='summary'>*cupsPortMonitor urischeme/Descriptive Text: "port monitor"</p>
 
@@ -1475,7 +1475,7 @@ to disable the port monitor for the given URI scheme.</p>
 *cupsPortMonitor usb/USB Status Monitor: "epson-usb"
 </pre>
 
-<h3><span class='info'>CUPS 1.3/OS X 10.5</span><a name='cupsPreFilter'>cupsPreFilter</a></h3>
+<h3><span class='info'>CUPS 1.3/macOS 10.5</span><a name='cupsPreFilter'>cupsPreFilter</a></h3>
 
 <p class='summary'>*cupsPreFilter: "source/type cost program"</p>
 
@@ -1534,7 +1534,7 @@ before the filter that accepts the given MIME type.</p>
 *cupsSingleFile: True
 </pre>
 
-<h3><span class='info'>CUPS 1.4/OS X 10.6</span><a name='cupsSNMPSupplies'>cupsSNMPSupplies</a></h3>
+<h3><span class='info'>CUPS 1.4/macOS 10.6</span><a name='cupsSNMPSupplies'>cupsSNMPSupplies</a></h3>
 
 <p class='summary'>*cupsSNMPSupplies: boolean</p>
 
@@ -1565,7 +1565,7 @@ PPD file extensions was used. Currently it must be the string
 </pre>
 
 
-<h3><span class="info">CUPS 1.6/OS X 10.8</span><a name="JCLToPDFInterpreter">JCLToPDFInterpreter</a></h3>
+<h3><span class="info">CUPS 1.6/macOS 10.8</span><a name="JCLToPDFInterpreter">JCLToPDFInterpreter</a></h3>
 
 <p class="summary">*JCLToPDFInterpreter: "JCL"</p>
 
@@ -1579,9 +1579,9 @@ PPD file extensions was used. Currently it must be the string
 </pre>
 
 
-<h2 class='title'><a name='MACOSX'>OS X Attributes</a></h2>
+<h2 class='title'><a name='MACOSX'>macOS Attributes</a></h2>
 
-<h3><span class='info'>OS X 10.3</span><a name='APDialogExtension'>APDialogExtension</a></h3>
+<h3><span class='info'>macOS 10.3</span><a name='APDialogExtension'>APDialogExtension</a></h3>
 
 <p class='summary'>*APDialogExtension: "/Library/Printers/vendor/filename.plugin"</p>
 
@@ -1593,7 +1593,7 @@ plug-ins.</p>
 
 <blockquote><b>Note:</b>
 
-<p>Starting with OS X 10.5, each plug-in must be compiled "4-way fat"
+<p>Starting with macOS 10.5, each plug-in must be compiled "4-way fat"
 (32-bit and 64-bit for both PowerPC and Intel) with garbage collection enabled
 in order to be usable with all applications.</p>
 
@@ -1607,7 +1607,7 @@ in order to be usable with all applications.</p>
 *APDialogExtension: "/Library/Printers/vendor/options.plugin"
 </pre>
 
-<h3><span class='info'>OS X 10.4</span><a name='APDuplexRequiresFlippedMargin'>APDuplexRequiresFlippedMargin</a></h3>
+<h3><span class='info'>macOS 10.4</span><a name='APDuplexRequiresFlippedMargin'>APDuplexRequiresFlippedMargin</a></h3>
 
 <p class='summary'>*APDuplexRequiresFlippedMargin: boolean</p>
 
@@ -1704,7 +1704,7 @@ looking up IPP reason codes for this printer driver. The
 *APHelpBook: "file:///Library/Printers/vendor/Help.bundle"
 </pre>
 
-<h3><span class='info'>OS X 10.6</span><a name='APICADriver'>APICADriver</a></h3>
+<h3><span class='info'>macOS 10.6</span><a name='APICADriver'>APICADriver</a></h3>
 
 <p class='summary'>*APICADriver: boolean</p>
 
@@ -1718,7 +1718,7 @@ Architecture (ICA) driver for scanning. The default is <tt>False</tt>.</p>
 *APScanAppBundleID: "com.apple.ImageCaptureApp"
 </pre>
 
-<h3><span class='info'>OS X 10.3</span><a name='APPrinterIconPath'>APPrinterIconPath</a></h3>
+<h3><span class='info'>macOS 10.3</span><a name='APPrinterIconPath'>APPrinterIconPath</a></h3>
 
 <p class='summary'>*APPrinterIconPath: "/Library/Printers/vendor/filename.icns"</p>
 
@@ -1732,7 +1732,7 @@ displaying the printer. The file must be in the Apple icon format.</p>
 *APPrinterIconPath: "/Library/Printers/vendor/Icons/filename.icns"
 </pre>
 
-<h3><span class='info'>OS X 10.4</span><a name='APPrinterLowInkTool'>APPrinterLowInkTool</a></h3>
+<h3><span class='info'>macOS 10.4</span><a name='APPrinterLowInkTool'>APPrinterLowInkTool</a></h3>
 
 <p class='summary'>*APPrinterLowInkTool: "/Library/Printers/vendor/program"</p>
 
@@ -1749,7 +1749,7 @@ Technical Note TN2144</a> for more information.</p>
 *APPrinterLowInkTool: "/Library/Printers/vendor/Tools/lowinktool"
 </pre>
 
-<h3><span class='info'>OS X 10.5</span><a name='APPrinterPreset'>APPrinterPreset</a></h3>
+<h3><span class='info'>macOS 10.5</span><a name='APPrinterPreset'>APPrinterPreset</a></h3>
 
 <p class='summary'>*APPrinterPreset name/text: "*Option Choice ..."</p>
 
@@ -1819,7 +1819,7 @@ choice (*MainKeyword OptionKeyword) or a preset identifier and value
 *fr.APPrinterPreset Photo_on_Photo_Paper/Photo sur papier photographique: ""
 </pre>
 
-<h3><span class='info'>OS X 10.3</span><a name='APPrinterUtilityPath'>APPrinterUtilityPath</a></h3>
+<h3><span class='info'>macOS 10.3</span><a name='APPrinterUtilityPath'>APPrinterUtilityPath</a></h3>
 
 <p class='summary'>*APPrinterPrinterUtilityPath: "/Library/Printers/vendor/filename.app"</p>
 
@@ -1834,7 +1834,7 @@ information.</p>
 *APPrinterPrinterUtilityPath: "/Library/Printers/vendor/Tools/utility.app"
 </pre>
 
-<h3><span class='info'>OS X 10.6</span><a name='APScannerOnly'>APScannerOnly</a></h3>
+<h3><span class='info'>macOS 10.6</span><a name='APScannerOnly'>APScannerOnly</a></h3>
 
 <p class='summary'>*APScannerOnly: boolean</p>
 
@@ -1848,7 +1848,7 @@ capabilities. The default is <tt>False</tt>.</p>
 *APScannerOnly: True
 </pre>
 
-<h3><span class='info'>OS X 10.3</span><a name='APScanAppBundleID'>APScanAppBundleID</a></h3>
+<h3><span class='info'>macOS 10.3</span><a name='APScanAppBundleID'>APScanAppBundleID</a></h3>
 
 <p class='summary'>*APScanAppBundleID: "bundle ID"</p>
 
@@ -1951,7 +1951,7 @@ the device.</p>
 
 <ul>
 
-       <li>Added missing OS X <tt>AP</tt> keywords.</li>
+       <li>Added missing macOS <tt>AP</tt> keywords.</li>
 
        <li>Added section on auto-configuration including the
        <tt>OID<i>MainKeyword</i></tt> and <tt>?<i>MainKeyword</i></tt>
index b2220b2..9c3f765 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: testraster.c 12746 2015-06-24 13:28:36Z msweet $"
- *
  * Raster test program routines for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -20,6 +18,7 @@
  */
 
 #include <cups/raster-private.h>
+#include <cups/ppd.h>
 #include <math.h>
 
 
@@ -1063,8 +1062,3 @@ print_changes(
            header->cupsPageSizeName,
            expected->cupsPageSizeName);
 }
-
-
-/*
- * End of "$Id: testraster.c 12746 2015-06-24 13:28:36Z msweet $".
- */
index 956458f..bcd89da 100755 (executable)
@@ -1,7 +1,5 @@
 #!/bin/sh
 #
-# "$Id: install-sh 11025 2013-06-07 01:00:33Z msweet $"
-#
 # Install a program, script, or datafile.
 #
 # Copyright 2008-2012 by Apple Inc.
index 29e13ce..0aa4636 100644 (file)
@@ -4,13 +4,12 @@ checkpo.o: checkpo.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 po2strings.o: po2strings.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 strings2po.o: strings2po.c
index bd7185b..018fd84 100644 (file)
@@ -1,6 +1,4 @@
 #
-# "$Id: Makefile 12233 2014-10-25 00:03:02Z msweet $"
-#
 # Locale file makefile for CUPS.
 #
 # Copyright 2007-2014 by Apple Inc.
@@ -172,7 +170,7 @@ checkall:   checkpo
 
 #
 # po2strings - A simple utility which uses iconv to convert GNU gettext
-#              message catalogs to OS X .strings files.
+#              message catalogs to macOS .strings files.
 #
 # po2strings filename.po filename.strings
 #
@@ -185,7 +183,7 @@ po2strings: po2strings.o ../cups/$(LIBCUPSSTATIC)
 
 
 #
-# strings2po - A simple utility which uses iconv to convert OS X .strings files
+# strings2po - A simple utility which uses iconv to convert macOS .strings files
 #              to GNU gettext message catalogs.
 #
 # strings2po filename.strings filename.po
@@ -201,8 +199,3 @@ strings2po: strings2po.o
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 12233 2014-10-25 00:03:02Z msweet $".
-#
index 14e74a2..513af92 100644 (file)
@@ -1,17 +1,15 @@
 /*
- * "$Id: checkpo.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Verify that translations in the .po file have the same number and type of
+ * printf-style format strings.
  *
- *   Verify that translations in the .po file have the same number and type of
- *   printf-style format strings.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
  * Usage:
  *
  * Compile with:
  *
  *   gcc -o checkpo checkpo.c `cups-config --libs`
- *
- * Contents:
- *
- *   main()            - Validate .po files.
- *   abbreviate()      - Abbreviate a message string as needed.
- *   collect_formats() - Collect all of the format strings in the msgid.
- *   free_formats()    - Free all of the format strings.
  */
 
 #include <cups/cups-private.h>
@@ -406,8 +397,3 @@ free_formats(cups_array_t *fmts)    /* I - Array of format strings */
 
   cupsArrayDelete(fmts);
 }
-
-
-/*
- * End of "$Id: checkpo.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 85dcb39..6bfad47 100644 (file)
@@ -1,9 +1,7 @@
 #
-# "$Id$"
-#
 # Message catalog template for CUPS.
 #
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 2005-2007 by Easy Software Products.
 #
 # These coded instructions, statements, and computer programs are the
index e6c5beb..00ab1d5 100644 (file)
@@ -1,9 +1,7 @@
 #
-# "$Id$"
-#
 # Message catalog template for CUPS.
 #
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 2005-2007 by Easy Software Products.
 #
 # These coded instructions, statements, and computer programs are the
@@ -30,7 +28,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
+"POT-Creation-Date: 2016-08-30 16:00-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"
@@ -39,746 +37,741 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: systemv/lpstat.c:1867 systemv/lpstat.c:1990
+#: systemv/lpstat.c:1861 systemv/lpstat.c:1980
 msgid "\t\t(all)"
 msgstr ""
 
-#: systemv/lpstat.c:1870 systemv/lpstat.c:1873 systemv/lpstat.c:1993
-#: systemv/lpstat.c:1996
+#: systemv/lpstat.c:1864 systemv/lpstat.c:1867 systemv/lpstat.c:1983
+#: systemv/lpstat.c:1986
 msgid "\t\t(none)"
 msgstr ""
 
-#: berkeley/lpc.c:426
+#: berkeley/lpc.c:424
 #, c-format
 msgid "\t%d entries"
 msgstr ""
 
-#: systemv/lpstat.c:783 systemv/lpstat.c:799
+#: systemv/lpstat.c:781 systemv/lpstat.c:797
 #, c-format
 msgid "\t%s"
 msgstr ""
 
-#: systemv/lpstat.c:1848 systemv/lpstat.c:1971
+#: systemv/lpstat.c:1842 systemv/lpstat.c:1961
 msgid "\tAfter fault: continue"
 msgstr ""
 
-#: systemv/lpstat.c:1471 systemv/lpstat.c:1817 systemv/lpstat.c:1941
+#: systemv/lpstat.c:1469 systemv/lpstat.c:1815 systemv/lpstat.c:1935
 #, c-format
 msgid "\tAlerts: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1871 systemv/lpstat.c:1994
+#: systemv/lpstat.c:1865 systemv/lpstat.c:1984
 msgid "\tBanner required"
 msgstr ""
 
-#: systemv/lpstat.c:1872 systemv/lpstat.c:1995
+#: systemv/lpstat.c:1866 systemv/lpstat.c:1985
 msgid "\tCharset sets:"
 msgstr ""
 
-#: systemv/lpstat.c:1836 systemv/lpstat.c:1959
+#: systemv/lpstat.c:1834 systemv/lpstat.c:1953
 msgid "\tConnection: direct"
 msgstr ""
 
-#: systemv/lpstat.c:1827 systemv/lpstat.c:1951
+#: systemv/lpstat.c:1825 systemv/lpstat.c:1945
 msgid "\tConnection: remote"
 msgstr ""
 
-#: systemv/lpstat.c:1793 systemv/lpstat.c:1917
+#: systemv/lpstat.c:1791 systemv/lpstat.c:1911
 msgid "\tContent types: any"
 msgstr ""
 
-#: systemv/lpstat.c:1875 systemv/lpstat.c:1998
+#: systemv/lpstat.c:1869 systemv/lpstat.c:1988
 msgid "\tDefault page size:"
 msgstr ""
 
-#: systemv/lpstat.c:1874 systemv/lpstat.c:1997
+#: systemv/lpstat.c:1868 systemv/lpstat.c:1987
 msgid "\tDefault pitch:"
 msgstr ""
 
-#: systemv/lpstat.c:1876 systemv/lpstat.c:1999
+#: systemv/lpstat.c:1870 systemv/lpstat.c:1989
 msgid "\tDefault port settings:"
 msgstr ""
 
-#: systemv/lpstat.c:1799 systemv/lpstat.c:1923
+#: systemv/lpstat.c:1797 systemv/lpstat.c:1917
 #, c-format
 msgid "\tDescription: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1792 systemv/lpstat.c:1916
+#: systemv/lpstat.c:1790 systemv/lpstat.c:1910
 msgid "\tForm mounted:"
 msgstr ""
 
-#: systemv/lpstat.c:1869 systemv/lpstat.c:1992
+#: systemv/lpstat.c:1863 systemv/lpstat.c:1982
 msgid "\tForms allowed:"
 msgstr ""
 
-#: systemv/lpstat.c:1831 systemv/lpstat.c:1955
+#: systemv/lpstat.c:1829 systemv/lpstat.c:1949
 #, c-format
 msgid "\tInterface: %s.ppd"
 msgstr ""
 
-#: systemv/lpstat.c:1840 systemv/lpstat.c:1963
-#, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr ""
-
-#: systemv/lpstat.c:1844 systemv/lpstat.c:1967
+#: systemv/lpstat.c:1838 systemv/lpstat.c:1957
 #, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr ""
 
-#: systemv/lpstat.c:1822 systemv/lpstat.c:1946
+#: systemv/lpstat.c:1820 systemv/lpstat.c:1940
 #, c-format
 msgid "\tLocation: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1847 systemv/lpstat.c:1970
+#: systemv/lpstat.c:1841 systemv/lpstat.c:1960
 msgid "\tOn fault: no alert"
 msgstr ""
 
-#: systemv/lpstat.c:1794 systemv/lpstat.c:1918
+#: systemv/lpstat.c:1792 systemv/lpstat.c:1912
 msgid "\tPrinter types: unknown"
 msgstr ""
 
-#: systemv/lpstat.c:1454
+#: systemv/lpstat.c:1452
 #, c-format
 msgid "\tStatus: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1852 systemv/lpstat.c:1866 systemv/lpstat.c:1975
-#: systemv/lpstat.c:1989
+#: systemv/lpstat.c:1846 systemv/lpstat.c:1860 systemv/lpstat.c:1965
+#: systemv/lpstat.c:1979
 msgid "\tUsers allowed:"
 msgstr ""
 
-#: systemv/lpstat.c:1859 systemv/lpstat.c:1982
+#: systemv/lpstat.c:1853 systemv/lpstat.c:1972
 msgid "\tUsers denied:"
 msgstr ""
 
-#: berkeley/lpc.c:428
+#: berkeley/lpc.c:426
 msgid "\tdaemon present"
 msgstr ""
 
-#: berkeley/lpc.c:424
+#: berkeley/lpc.c:422
 msgid "\tno entries"
 msgstr ""
 
-#: berkeley/lpc.c:396 berkeley/lpc.c:408
+#: berkeley/lpc.c:394 berkeley/lpc.c:406
 #, c-format
 msgid "\tprinter is on device '%s' speed -1"
 msgstr ""
 
-#: berkeley/lpc.c:421
+#: berkeley/lpc.c:419
 msgid "\tprinting is disabled"
 msgstr ""
 
-#: berkeley/lpc.c:419
+#: berkeley/lpc.c:417
 msgid "\tprinting is enabled"
 msgstr ""
 
-#: systemv/lpstat.c:1474
+#: systemv/lpstat.c:1472
 #, c-format
 msgid "\tqueued for %s"
 msgstr ""
 
-#: berkeley/lpc.c:416
+#: berkeley/lpc.c:414
 msgid "\tqueuing is disabled"
 msgstr ""
 
-#: berkeley/lpc.c:414
+#: berkeley/lpc.c:412
 msgid "\tqueuing is enabled"
 msgstr ""
 
-#: systemv/lpstat.c:1785 systemv/lpstat.c:1909
+#: systemv/lpstat.c:1783 systemv/lpstat.c:1903
 msgid "\treason unknown"
 msgstr ""
 
-#: systemv/cupstestppd.c:434
+#: systemv/cupstestppd.c:432
 msgid ""
 "\n"
 "    DETAILED CONFORMANCE TEST RESULTS"
 msgstr ""
 
-#: systemv/cupstestppd.c:3864
+#: systemv/cupstestppd.c:3862
 msgid "                          Ignore specific warnings."
 msgstr ""
 
-#: systemv/cupstestppd.c:3868
+#: systemv/cupstestppd.c:3866
 msgid "                          Issue warnings instead of errors."
 msgstr ""
 
-#: systemv/cupstestppd.c:390 systemv/cupstestppd.c:395
+#: systemv/cupstestppd.c:388 systemv/cupstestppd.c:393
 msgid "                REF: Page 15, section 3.1."
 msgstr ""
 
-#: systemv/cupstestppd.c:385
+#: systemv/cupstestppd.c:383
 msgid "                REF: Page 15, section 3.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:405
+#: systemv/cupstestppd.c:403
 msgid "                REF: Page 19, section 3.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:358
+#: systemv/cupstestppd.c:356
 msgid "                REF: Page 20, section 3.4."
 msgstr ""
 
-#: systemv/cupstestppd.c:410
+#: systemv/cupstestppd.c:408
 msgid "                REF: Page 27, section 3.5."
 msgstr ""
 
-#: systemv/cupstestppd.c:353
+#: systemv/cupstestppd.c:351
 msgid "                REF: Page 42, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:400
+#: systemv/cupstestppd.c:398
 msgid "                REF: Pages 16-17, section 3.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:370
+#: systemv/cupstestppd.c:368
 msgid "                REF: Pages 42-45, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:364
+#: systemv/cupstestppd.c:362
 msgid "                REF: Pages 45-46, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:375
+#: systemv/cupstestppd.c:373
 msgid "                REF: Pages 48-49, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:380
+#: systemv/cupstestppd.c:378
 msgid "                REF: Pages 52-54, section 5.2."
 msgstr ""
 
-#: berkeley/lpq.c:528
+#: berkeley/lpq.c:537
 #, c-format
 msgid "        %-39.39s %.0f bytes"
 msgstr ""
 
-#: systemv/cupstestppd.c:569
+#: systemv/cupstestppd.c:567
 #, c-format
 msgid "        PASS    Default%s"
 msgstr ""
 
-#: systemv/cupstestppd.c:504
+#: systemv/cupstestppd.c:502
 msgid "        PASS    DefaultImageableArea"
 msgstr ""
 
-#: systemv/cupstestppd.c:538
+#: systemv/cupstestppd.c:536
 msgid "        PASS    DefaultPaperDimension"
 msgstr ""
 
-#: systemv/cupstestppd.c:611
+#: systemv/cupstestppd.c:609
 msgid "        PASS    FileVersion"
 msgstr ""
 
-#: systemv/cupstestppd.c:655
+#: systemv/cupstestppd.c:653
 msgid "        PASS    FormatVersion"
 msgstr ""
 
-#: systemv/cupstestppd.c:675
+#: systemv/cupstestppd.c:673
 msgid "        PASS    LanguageEncoding"
 msgstr ""
 
-#: systemv/cupstestppd.c:695
+#: systemv/cupstestppd.c:693
 msgid "        PASS    LanguageVersion"
 msgstr ""
 
-#: systemv/cupstestppd.c:749
+#: systemv/cupstestppd.c:747
 msgid "        PASS    Manufacturer"
 msgstr ""
 
-#: systemv/cupstestppd.c:789
+#: systemv/cupstestppd.c:787
 msgid "        PASS    ModelName"
 msgstr ""
 
-#: systemv/cupstestppd.c:809
+#: systemv/cupstestppd.c:807
 msgid "        PASS    NickName"
 msgstr ""
 
-#: systemv/cupstestppd.c:869
+#: systemv/cupstestppd.c:867
 msgid "        PASS    PCFileName"
 msgstr ""
 
-#: systemv/cupstestppd.c:944
+#: systemv/cupstestppd.c:942
 msgid "        PASS    PSVersion"
 msgstr ""
 
-#: systemv/cupstestppd.c:849
+#: systemv/cupstestppd.c:847
 msgid "        PASS    PageRegion"
 msgstr ""
 
-#: systemv/cupstestppd.c:829
+#: systemv/cupstestppd.c:827
 msgid "        PASS    PageSize"
 msgstr ""
 
-#: systemv/cupstestppd.c:904
+#: systemv/cupstestppd.c:902
 msgid "        PASS    Product"
 msgstr ""
 
-#: systemv/cupstestppd.c:979
+#: systemv/cupstestppd.c:977
 msgid "        PASS    ShortNickName"
 msgstr ""
 
-#: systemv/cupstestppd.c:1354
+#: systemv/cupstestppd.c:1352
 #, c-format
 msgid "        WARN    %s has no corresponding options."
 msgstr ""
 
-#: systemv/cupstestppd.c:1466
+#: systemv/cupstestppd.c:1464
 #, c-format
 msgid ""
 "        WARN    %s shares a common prefix with %s\n"
 "                REF: Page 15, section 3.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:1325
+#: systemv/cupstestppd.c:1323
 #, c-format
 msgid ""
 "        WARN    Duplex option keyword %s may not work as expected and should be named Duplex.\n"
 "                REF: Page 122, section 5.17"
 msgstr ""
 
-#: systemv/cupstestppd.c:1724
+#: systemv/cupstestppd.c:1722
 msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
 msgstr ""
 
-#: systemv/cupstestppd.c:1370
+#: systemv/cupstestppd.c:1368
 msgid ""
 "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
 "                REF: Pages 56-57, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1706
+#: systemv/cupstestppd.c:1704
 #, c-format
 msgid "        WARN    Line %d only contains whitespace."
 msgstr ""
 
-#: systemv/cupstestppd.c:1378
+#: systemv/cupstestppd.c:1376
 msgid ""
 "        WARN    Manufacturer required by PPD 4.3 spec.\n"
 "                REF: Pages 58-59, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1729
+#: systemv/cupstestppd.c:1727
 msgid "        WARN    Non-Windows PPD files should use lines ending with only LF, not CR LF."
 msgstr ""
 
-#: systemv/cupstestppd.c:1362
+#: systemv/cupstestppd.c:1360
 #, c-format
 msgid ""
 "        WARN    Obsolete PPD version %.1f.\n"
 "                REF: Page 42, section 5.2."
 msgstr ""
 
-#: systemv/cupstestppd.c:1393
+#: systemv/cupstestppd.c:1391
 msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
 "                REF: Pages 61-62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1401
+#: systemv/cupstestppd.c:1399
 msgid ""
 "        WARN    PCFileName should contain a unique filename.\n"
 "                REF: Pages 61-62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1436
+#: systemv/cupstestppd.c:1434
 msgid ""
 "        WARN    Protocols contains PJL but JCL attributes are not set.\n"
 "                REF: Pages 78-79, section 5.7."
 msgstr ""
 
-#: systemv/cupstestppd.c:1427
+#: systemv/cupstestppd.c:1425
 msgid ""
 "        WARN    Protocols contains both PJL and BCP; expected TBCP.\n"
 "                REF: Pages 78-79, section 5.7."
 msgstr ""
 
-#: systemv/cupstestppd.c:1410
+#: systemv/cupstestppd.c:1408
 msgid ""
 "        WARN    ShortNickName required by PPD 4.3 spec.\n"
 "                REF: Pages 64-65, section 5.3."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:282
+#: systemv/cupsaddsmb.c:274
 msgid "       cupsaddsmb [options] -a"
 msgstr ""
 
-#: systemv/cupstestdsc.c:427
+#: systemv/cupstestdsc.c:419
 msgid "       cupstestdsc [options] -"
 msgstr ""
 
-#: systemv/cupstestppd.c:3859
+#: systemv/cupstestppd.c:3857
 msgid "       program | cupstestppd [options] -"
 msgstr ""
 
-#: systemv/cupstestppd.c:3791
+#: systemv/cupstestppd.c:3789
 #, c-format
 msgid ""
 "      %s  \"%s %s\" conflicts with \"%s %s\"\n"
 "                (constraint=\"%s %s %s %s\")."
 msgstr ""
 
-#: systemv/cupstestppd.c:2228
+#: systemv/cupstestppd.c:2226
 #, c-format
 msgid "      %s  %s %s does not exist."
 msgstr ""
 
-#: systemv/cupstestppd.c:3948
+#: systemv/cupstestppd.c:3946
 #, c-format
 msgid "      %s  %s file \"%s\" has the wrong capitalization."
 msgstr ""
 
-#: systemv/cupstestppd.c:2298
+#: systemv/cupstestppd.c:2296
 #, c-format
 msgid ""
 "      %s  Bad %s choice %s.\n"
 "                REF: Page 122, section 5.17"
 msgstr ""
 
-#: systemv/cupstestppd.c:3551 systemv/cupstestppd.c:3600
-#: systemv/cupstestppd.c:3639
+#: systemv/cupstestppd.c:3549 systemv/cupstestppd.c:3598
+#: systemv/cupstestppd.c:3637
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:3505
+#: systemv/cupstestppd.c:3503
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2369 systemv/cupstestppd.c:2391
+#: systemv/cupstestppd.c:2367 systemv/cupstestppd.c:2389
 #, c-format
 msgid "      %s  Bad cupsFilter value \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:2487 systemv/cupstestppd.c:2509
+#: systemv/cupstestppd.c:2485 systemv/cupstestppd.c:2507
 #, c-format
 msgid "      %s  Bad cupsFilter2 value \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:3008
+#: systemv/cupstestppd.c:3006
 #, c-format
 msgid "      %s  Bad cupsICCProfile %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2615
+#: systemv/cupstestppd.c:2613
 #, c-format
 msgid "      %s  Bad cupsPreFilter value \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:1802
+#: systemv/cupstestppd.c:1800
 #, c-format
 msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
 msgstr ""
 
-#: systemv/cupstestppd.c:3455
+#: systemv/cupstestppd.c:3453
 #, c-format
 msgid "      %s  Bad language \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:2445 systemv/cupstestppd.c:2573
-#: systemv/cupstestppd.c:2659 systemv/cupstestppd.c:2717
-#: systemv/cupstestppd.c:2772 systemv/cupstestppd.c:2827
-#: systemv/cupstestppd.c:2882 systemv/cupstestppd.c:2935
-#: systemv/cupstestppd.c:3057
+#: systemv/cupstestppd.c:2443 systemv/cupstestppd.c:2571
+#: systemv/cupstestppd.c:2657 systemv/cupstestppd.c:2715
+#: systemv/cupstestppd.c:2770 systemv/cupstestppd.c:2825
+#: systemv/cupstestppd.c:2880 systemv/cupstestppd.c:2933
+#: systemv/cupstestppd.c:3055
 #, c-format
 msgid "      %s  Bad permissions on %s file \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:2353 systemv/cupstestppd.c:2471
-#: systemv/cupstestppd.c:2599 systemv/cupstestppd.c:2686
-#: systemv/cupstestppd.c:2741 systemv/cupstestppd.c:2796
-#: systemv/cupstestppd.c:2851 systemv/cupstestppd.c:2906
+#: systemv/cupstestppd.c:2351 systemv/cupstestppd.c:2469
+#: systemv/cupstestppd.c:2597 systemv/cupstestppd.c:2684
+#: systemv/cupstestppd.c:2739 systemv/cupstestppd.c:2794
+#: systemv/cupstestppd.c:2849 systemv/cupstestppd.c:2904
 #, c-format
 msgid "      %s  Bad spelling of %s - should be %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2951
+#: systemv/cupstestppd.c:2949
 #, c-format
 msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
 msgstr ""
 
-#: systemv/cupstestppd.c:2185
+#: systemv/cupstestppd.c:2183
 #, c-format
 msgid "      %s  Default choices conflicting."
 msgstr ""
 
-#: systemv/cupstestppd.c:1783
+#: systemv/cupstestppd.c:1781
 #, c-format
 msgid "      %s  Empty cupsUIConstraints %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:3583 systemv/cupstestppd.c:3623
+#: systemv/cupstestppd.c:3581 systemv/cupstestppd.c:3621
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:3491
+#: systemv/cupstestppd.c:3489
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2430 systemv/cupstestppd.c:2558
-#: systemv/cupstestppd.c:2644 systemv/cupstestppd.c:2702
-#: systemv/cupstestppd.c:2757 systemv/cupstestppd.c:2812
-#: systemv/cupstestppd.c:2867 systemv/cupstestppd.c:2919
-#: systemv/cupstestppd.c:3042
+#: systemv/cupstestppd.c:2428 systemv/cupstestppd.c:2556
+#: systemv/cupstestppd.c:2642 systemv/cupstestppd.c:2700
+#: systemv/cupstestppd.c:2755 systemv/cupstestppd.c:2810
+#: systemv/cupstestppd.c:2865 systemv/cupstestppd.c:2917
+#: systemv/cupstestppd.c:3040
 #, c-format
 msgid "      %s  Missing %s file \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:3165
+#: systemv/cupstestppd.c:3163
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageRegion option.\n"
 "                REF: Page 100, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:3150
+#: systemv/cupstestppd.c:3148
 #, c-format
 msgid ""
 "      %s  Missing REQUIRED PageSize option.\n"
 "                REF: Page 99, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:1993 systemv/cupstestppd.c:2034
+#: systemv/cupstestppd.c:1991 systemv/cupstestppd.c:2032
 #, c-format
 msgid "      %s  Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:1888
+#: systemv/cupstestppd.c:1886
 #, c-format
 msgid "      %s  Missing choice *%s %s in cupsUIConstraints %s: \"%s\""
 msgstr ""
 
-#: systemv/cupstestppd.c:1820
+#: systemv/cupstestppd.c:1818
 #, c-format
 msgid "      %s  Missing cupsUIResolver %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:1979 systemv/cupstestppd.c:2020
+#: systemv/cupstestppd.c:1977 systemv/cupstestppd.c:2018
 #, c-format
 msgid "      %s  Missing option %s in UIConstraints \"*%s %s *%s %s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:1872
+#: systemv/cupstestppd.c:1870
 #, c-format
 msgid "      %s  Missing option %s in cupsUIConstraints %s: \"%s\""
 msgstr ""
 
-#: systemv/cupstestppd.c:3677
+#: systemv/cupstestppd.c:3675
 #, c-format
 msgid "      %s  No base translation \"%s\" is included in file."
 msgstr ""
 
-#: systemv/cupstestppd.c:2274
+#: systemv/cupstestppd.c:2272
 #, c-format
 msgid ""
 "      %s  REQUIRED %s does not define choice None.\n"
 "                REF: Page 122, section 5.17"
 msgstr ""
 
-#: systemv/cupstestppd.c:3224 systemv/cupstestppd.c:3238
+#: systemv/cupstestppd.c:3222 systemv/cupstestppd.c:3236
 #, c-format
 msgid "      %s  Size \"%s\" defined for %s but not for %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:3204
+#: systemv/cupstestppd.c:3202
 #, c-format
 msgid "      %s  Size \"%s\" has unexpected dimensions (%gx%g)."
 msgstr ""
 
-#: systemv/cupstestppd.c:3395
+#: systemv/cupstestppd.c:3393
 #, c-format
 msgid "      %s  Size \"%s\" should be \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:3344
+#: systemv/cupstestppd.c:3342
 #, c-format
 msgid "      %s  Size \"%s\" should be the Adobe standard name \"%s\"."
 msgstr ""
 
-#: systemv/cupstestppd.c:3085
+#: systemv/cupstestppd.c:3083
 #, c-format
 msgid "      %s  cupsICCProfile %s hash value collides with %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:1943
+#: systemv/cupstestppd.c:1941
 #, c-format
 msgid "      %s  cupsUIResolver %s causes a loop."
 msgstr ""
 
-#: systemv/cupstestppd.c:1925
+#: systemv/cupstestppd.c:1923
 #, c-format
 msgid "      %s  cupsUIResolver %s does not list at least two different options."
 msgstr ""
 
-#: systemv/cupstestppd.c:1148
+#: systemv/cupstestppd.c:1146
 #, c-format
 msgid ""
 "      **FAIL**  %s must be 1284DeviceID\n"
 "                REF: Page 72, section 5.5"
 msgstr ""
 
-#: systemv/cupstestppd.c:560
+#: systemv/cupstestppd.c:558
 #, c-format
 msgid ""
 "      **FAIL**  Bad Default%s %s\n"
 "                REF: Page 40, section 4.5."
 msgstr ""
 
-#: systemv/cupstestppd.c:494
+#: systemv/cupstestppd.c:492
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultImageableArea %s\n"
 "                REF: Page 102, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:530
+#: systemv/cupstestppd.c:528
 #, c-format
 msgid ""
 "      **FAIL**  Bad DefaultPaperDimension %s\n"
 "                REF: Page 103, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:603
+#: systemv/cupstestppd.c:601
 #, c-format
 msgid ""
 "      **FAIL**  Bad FileVersion \"%s\"\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:647
+#: systemv/cupstestppd.c:645
 #, c-format
 msgid ""
 "      **FAIL**  Bad FormatVersion \"%s\"\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1005
+#: systemv/cupstestppd.c:1003
 msgid ""
 "      **FAIL**  Bad JobPatchFile attribute in file\n"
 "                REF: Page 24, section 3.4."
 msgstr ""
 
-#: systemv/cupstestppd.c:1193
+#: systemv/cupstestppd.c:1191
 #, c-format
 msgid "      **FAIL**  Bad LanguageEncoding %s - must be ISOLatin1."
 msgstr ""
 
-#: systemv/cupstestppd.c:1207
+#: systemv/cupstestppd.c:1205
 #, c-format
 msgid "      **FAIL**  Bad LanguageVersion %s - must be English."
 msgstr ""
 
-#: systemv/cupstestppd.c:723 systemv/cupstestppd.c:740
+#: systemv/cupstestppd.c:721 systemv/cupstestppd.c:738
 #, c-format
 msgid ""
 "      **FAIL**  Bad Manufacturer (should be \"%s\")\n"
 "                REF: Page 211, table D.1."
 msgstr ""
 
-#: systemv/cupstestppd.c:780
+#: systemv/cupstestppd.c:778
 #, c-format
 msgid ""
 "      **FAIL**  Bad ModelName - \"%c\" not allowed in string.\n"
 "                REF: Pages 59-60, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:936
+#: systemv/cupstestppd.c:934
 msgid ""
 "      **FAIL**  Bad PSVersion - not \"(string) int\".\n"
 "                REF: Pages 62-64, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:897
+#: systemv/cupstestppd.c:895
 msgid ""
 "      **FAIL**  Bad Product - not \"(string)\".\n"
 "                REF: Page 62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:971
+#: systemv/cupstestppd.c:969
 msgid ""
 "      **FAIL**  Bad ShortNickName - longer than 31 chars.\n"
 "                REF: Pages 64-65, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1129
+#: systemv/cupstestppd.c:1127
 #, c-format
 msgid ""
 "      **FAIL**  Bad option %s choice %s\n"
 "                REF: Page 84, section 5.9"
 msgstr ""
 
-#: systemv/cupstestppd.c:3818 systemv/cupstestppd.c:3840
+#: systemv/cupstestppd.c:3816 systemv/cupstestppd.c:3838
 #, c-format
 msgid "      **FAIL**  Default option code cannot be interpreted: %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:1266
+#: systemv/cupstestppd.c:1264
 #, c-format
 msgid "      **FAIL**  Default translation string for option %s choice %s contains 8-bit characters."
 msgstr ""
 
-#: systemv/cupstestppd.c:1239
+#: systemv/cupstestppd.c:1237
 #, c-format
 msgid "      **FAIL**  Default translation string for option %s contains 8-bit characters."
 msgstr ""
 
-#: systemv/cupstestppd.c:2081
+#: systemv/cupstestppd.c:2079
 #, c-format
 msgid "      **FAIL**  Group names %s and %s differ only by case."
 msgstr ""
 
-#: systemv/cupstestppd.c:2126
+#: systemv/cupstestppd.c:2124
 #, c-format
 msgid "      **FAIL**  Multiple occurrences of option %s choice name %s."
 msgstr ""
 
-#: systemv/cupstestppd.c:2143
+#: systemv/cupstestppd.c:2141
 #, c-format
 msgid "      **FAIL**  Option %s choice names %s and %s differ only by case."
 msgstr ""
 
-#: systemv/cupstestppd.c:2103
+#: systemv/cupstestppd.c:2101
 #, c-format
 msgid "      **FAIL**  Option names %s and %s differ only by case."
 msgstr ""
 
-#: systemv/cupstestppd.c:580
+#: systemv/cupstestppd.c:578
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED Default%s\n"
 "                REF: Page 40, section 4.5."
 msgstr ""
 
-#: systemv/cupstestppd.c:479
+#: systemv/cupstestppd.c:477
 msgid ""
 "      **FAIL**  REQUIRED DefaultImageableArea\n"
 "                REF: Page 102, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:515
+#: systemv/cupstestppd.c:513
 msgid ""
 "      **FAIL**  REQUIRED DefaultPaperDimension\n"
 "                REF: Page 103, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:621
+#: systemv/cupstestppd.c:619
 msgid ""
 "      **FAIL**  REQUIRED FileVersion\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:665
+#: systemv/cupstestppd.c:663
 msgid ""
 "      **FAIL**  REQUIRED FormatVersion\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:1056
+#: systemv/cupstestppd.c:1054
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED ImageableArea for PageSize %s\n"
@@ -786,68 +779,68 @@ msgid ""
 "                REF: Page 102, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:685
+#: systemv/cupstestppd.c:683
 msgid ""
 "      **FAIL**  REQUIRED LanguageEncoding\n"
 "                REF: Pages 56-57, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:705
+#: systemv/cupstestppd.c:703
 msgid ""
 "      **FAIL**  REQUIRED LanguageVersion\n"
 "                REF: Pages 57-58, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:759
+#: systemv/cupstestppd.c:757
 msgid ""
 "      **FAIL**  REQUIRED Manufacturer\n"
 "                REF: Pages 58-59, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:799
+#: systemv/cupstestppd.c:797
 msgid ""
 "      **FAIL**  REQUIRED ModelName\n"
 "                REF: Pages 59-60, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:819
+#: systemv/cupstestppd.c:817
 msgid ""
 "      **FAIL**  REQUIRED NickName\n"
 "                REF: Page 60, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:879
+#: systemv/cupstestppd.c:877
 msgid ""
 "      **FAIL**  REQUIRED PCFileName\n"
 "                REF: Pages 61-62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:954
+#: systemv/cupstestppd.c:952
 msgid ""
 "      **FAIL**  REQUIRED PSVersion\n"
 "                REF: Pages 62-64, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:859
+#: systemv/cupstestppd.c:857
 msgid ""
 "      **FAIL**  REQUIRED PageRegion\n"
 "                REF: Page 100, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:1025
+#: systemv/cupstestppd.c:1023
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Page 41, section 5.\n"
 "                REF: Page 99, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:839
+#: systemv/cupstestppd.c:837
 msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Pages 99-100, section 5.14."
 msgstr ""
 
-#: systemv/cupstestppd.c:1078
+#: systemv/cupstestppd.c:1076
 #, c-format
 msgid ""
 "      **FAIL**  REQUIRED PaperDimension for PageSize %s\n"
@@ -855,1058 +848,1051 @@ msgid ""
 "                REF: Page 103, section 5.15."
 msgstr ""
 
-#: systemv/cupstestppd.c:914
+#: systemv/cupstestppd.c:912
 msgid ""
 "      **FAIL**  REQUIRED Product\n"
 "                REF: Page 62, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:989
+#: systemv/cupstestppd.c:987
 msgid ""
 "      **FAIL**  REQUIRED ShortNickName\n"
 "                REF: Page 64-65, section 5.3."
 msgstr ""
 
-#: systemv/cupstestppd.c:314 systemv/cupstestppd.c:333
-#: systemv/cupstestppd.c:345
+#: systemv/cupstestppd.c:312 systemv/cupstestppd.c:331
+#: systemv/cupstestppd.c:343
 #, c-format
 msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
 msgstr ""
 
-#: systemv/cupstestppd.c:1478
+#: systemv/cupstestppd.c:1476
 #, c-format
 msgid "    %d ERRORS FOUND"
 msgstr ""
 
-#: systemv/cupstestdsc.c:431
+#: systemv/cupstestdsc.c:423
 msgid "    -h       Show program usage"
 msgstr ""
 
-#: systemv/cupstestdsc.c:234 systemv/cupstestdsc.c:276
+#: systemv/cupstestdsc.c:226 systemv/cupstestdsc.c:268
 #, c-format
 msgid ""
 "    Bad %%%%BoundingBox: on line %d.\n"
 "        REF: Page 39, %%%%BoundingBox:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:305
+#: systemv/cupstestdsc.c:297
 #, c-format
 msgid ""
 "    Bad %%%%Page: on line %d.\n"
 "        REF: Page 53, %%%%Page:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:218 systemv/cupstestdsc.c:258
+#: systemv/cupstestdsc.c:210 systemv/cupstestdsc.c:250
 #, c-format
 msgid ""
 "    Bad %%%%Pages: on line %d.\n"
 "        REF: Page 43, %%%%Pages:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:176
+#: systemv/cupstestdsc.c:168
 #, c-format
 msgid ""
 "    Line %d is longer than 255 characters (%d).\n"
 "        REF: Page 25, Line Length"
 msgstr ""
 
-#: systemv/cupstestdsc.c:192
+#: systemv/cupstestdsc.c:184
 msgid ""
 "    Missing %!PS-Adobe-3.0 on first line.\n"
 "        REF: Page 17, 3.1 Conforming Documents"
 msgstr ""
 
-#: systemv/cupstestdsc.c:362
+#: systemv/cupstestdsc.c:354
 #, c-format
 msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
 msgstr ""
 
-#: systemv/cupstestdsc.c:342
+#: systemv/cupstestdsc.c:334
 #, c-format
 msgid ""
 "    Missing or bad %%BoundingBox: comment.\n"
 "        REF: Page 39, %%BoundingBox:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:372
+#: systemv/cupstestdsc.c:364
 #, c-format
 msgid ""
 "    Missing or bad %%Page: comments.\n"
 "        REF: Page 53, %%Page:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:352
+#: systemv/cupstestdsc.c:344
 #, c-format
 msgid ""
 "    Missing or bad %%Pages: comment.\n"
 "        REF: Page 43, %%Pages:"
 msgstr ""
 
-#: systemv/cupstestppd.c:1480
+#: systemv/cupstestppd.c:1478
 msgid "    NO ERRORS FOUND"
 msgstr ""
 
-#: systemv/cupstestdsc.c:395
+#: systemv/cupstestdsc.c:387
 #, c-format
 msgid "    Saw %d lines that exceeded 255 characters."
 msgstr ""
 
-#: systemv/cupstestdsc.c:390
+#: systemv/cupstestdsc.c:382
 #, c-format
 msgid "    Too many %%BeginDocument comments."
 msgstr ""
 
-#: systemv/cupstestdsc.c:382
+#: systemv/cupstestdsc.c:374
 #, c-format
 msgid "    Too many %%EndDocument comments."
 msgstr ""
 
-#: systemv/cupstestdsc.c:402
+#: systemv/cupstestdsc.c:394
 msgid "    Warning: file contains binary data."
 msgstr ""
 
-#: systemv/cupstestdsc.c:410
+#: systemv/cupstestdsc.c:402
 #, c-format
 msgid "    Warning: no %%EndComments comment in file."
 msgstr ""
 
-#: systemv/cupstestdsc.c:406
+#: systemv/cupstestdsc.c:398
 #, c-format
 msgid "    Warning: obsolete DSC version %.1f in file."
 msgstr ""
 
-#: test/ippfind.c:2796
+#: test/ippfind.c:2794
 msgid "  ! expression            Unary NOT of expression."
 msgstr ""
 
-#: test/ippfind.c:2795
+#: test/ippfind.c:2793
 msgid "  ( expressions )         Group expressions."
 msgstr ""
 
-#: systemv/cupsctl.c:210
+#: systemv/cupsctl.c:203
 msgid "  --[no-]debug-logging    Turn debug logging on/off."
 msgstr ""
 
-#: systemv/cupsctl.c:212
+#: systemv/cupsctl.c:205
 msgid "  --[no-]remote-admin     Turn remote administration on/off."
 msgstr ""
 
-#: systemv/cupsctl.c:214
+#: systemv/cupsctl.c:207
 msgid "  --[no-]remote-any       Allow/prevent access from the Internet."
 msgstr ""
 
-#: systemv/cupsctl.c:216
+#: systemv/cupsctl.c:209
 msgid "  --[no-]share-printers   Turn printer sharing on/off."
 msgstr ""
 
-#: systemv/cupsctl.c:218
+#: systemv/cupsctl.c:211
 msgid "  --[no-]user-cancel-any  Allow/prevent users to cancel any job."
 msgstr ""
 
-#: ppdc/ppdc.cxx:450
+#: ppdc/ppdc.cxx:448
 msgid "  --cr                    End lines with CR (Mac OS 9)."
 msgstr ""
 
-#: ppdc/ppdc.cxx:452
+#: ppdc/ppdc.cxx:450
 msgid "  --crlf                  End lines with CR + LF (Windows)."
 msgstr ""
 
-#: test/ippfind.c:2777
+#: test/ippfind.c:2775
 msgid "  --domain regex          Match domain to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2778
+#: test/ippfind.c:2776
 msgid ""
 "  --exec utility [argument ...] ;\n"
 "                          Execute program if true."
 msgstr ""
 
-#: test/ippfind.c:2798
+#: test/ippfind.c:2796
 msgid "  --false                 Always false."
 msgstr ""
 
-#: test/ipptool.c:4858
+#: test/ipptool.c:4931
 msgid "  --help                  Show help."
 msgstr ""
 
-#: test/ippfind.c:2760
+#: test/ippfind.c:2758
 msgid "  --help                  Show this help."
 msgstr ""
 
-#: test/ippfind.c:2780
+#: test/ippfind.c:2778
 msgid "  --host regex            Match hostname to regular expression."
 msgstr ""
 
-#: ppdc/ppdc.cxx:454
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+#: ppdc/ppdc.cxx:452
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1483
+#: scheduler/cupsfilter.c:1481
 msgid "  --list-filters          List filters that will be used."
 msgstr ""
 
-#: test/ippfind.c:2782
+#: test/ippfind.c:2780
 msgid "  --local                 True if service is local."
 msgstr ""
 
-#: test/ippfind.c:2781
+#: test/ippfind.c:2779
 msgid "  --ls                    List attributes."
 msgstr ""
 
-#: test/ippfind.c:2783
+#: test/ippfind.c:2781
 msgid "  --name regex            Match service name to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2797
+#: test/ippfind.c:2795
 msgid "  --not expression        Unary NOT of expression."
 msgstr ""
 
-#: test/ippfind.c:2784
+#: test/ippfind.c:2782
 msgid "  --path regex            Match resource path to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2785
+#: test/ippfind.c:2783
 msgid "  --port number[-number]  Match port to number or range."
 msgstr ""
 
-#: test/ippfind.c:2786
+#: test/ippfind.c:2784
 msgid "  --print                 Print URI if true."
 msgstr ""
 
-#: test/ippfind.c:2787
+#: test/ippfind.c:2785
 msgid "  --print-name            Print service name if true."
 msgstr ""
 
-#: test/ippfind.c:2788
+#: test/ippfind.c:2786
 msgid "  --quiet                 Quietly report match via exit code."
 msgstr ""
 
-#: test/ippfind.c:2789
+#: test/ippfind.c:2787
 msgid "  --remote                True if service is remote."
 msgstr ""
 
-#: test/ipptool.c:4859
+#: test/ipptool.c:4932
 msgid ""
 "  --stop-after-include-error\n"
 "                          Stop tests after a failed INCLUDE."
 msgstr ""
 
-#: test/ippfind.c:2799
+#: test/ippfind.c:2797
 msgid "  --true                  Always true."
 msgstr ""
 
-#: test/ippfind.c:2790
+#: test/ippfind.c:2788
 msgid "  --txt key               True if the TXT record contains the key."
 msgstr ""
 
-#: test/ippfind.c:2791
+#: test/ippfind.c:2789
 msgid "  --txt-* regex           Match TXT record key to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2792
+#: test/ippfind.c:2790
 msgid "  --uri regex             Match URI to regular expression."
 msgstr ""
 
-#: test/ippfind.c:2761
+#: test/ippfind.c:2759
 msgid "  --version               Show program version."
 msgstr ""
 
-#: test/ipptool.c:4861
+#: test/ipptool.c:4934
 msgid "  --version               Show version."
 msgstr ""
 
-#: test/ippfind.c:2754 test/ipptool.c:4862
+#: test/ippfind.c:2752 test/ipptool.c:4935
 msgid "  -4                      Connect using IPv4."
 msgstr ""
 
-#: test/ippfind.c:2755 test/ipptool.c:4863
+#: test/ippfind.c:2753 test/ipptool.c:4936
 msgid "  -6                      Connect using IPv6."
 msgstr ""
 
-#: test/ipptool.c:4864
+#: test/ipptool.c:4937
 msgid "  -C                      Send requests using chunking (default)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1484
+#: scheduler/cupsfilter.c:1482
 msgid "  -D                      Remove the input file when finished."
 msgstr ""
 
-#: ppdc/ppdc.cxx:433 ppdc/ppdhtml.cxx:180 ppdc/ppdpo.cxx:250
+#: ppdc/ppdc.cxx:431 ppdc/ppdhtml.cxx:178 ppdc/ppdpo.cxx:248
 msgid "  -D name=value           Set named variable to value."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:285 systemv/cupsctl.c:205
+#: systemv/cupsaddsmb.c:277 systemv/cupsctl.c:198
 msgid "  -E                      Encrypt the connection."
 msgstr ""
 
-#: test/ipptool.c:4866
+#: test/ipptool.c:4939
 msgid "  -E                      Test with HTTP Upgrade to TLS."
 msgstr ""
 
-#: scheduler/main.c:2180
+#: scheduler/main.c:2058
 msgid "  -F                      Run in the foreground but detach from console."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:286
+#: systemv/cupsaddsmb.c:278
 msgid "  -H samba-server         Use the named SAMBA server."
 msgstr ""
 
-#: test/ipptool.c:4868
+#: test/ipptool.c:4941
 msgid "  -I                      Ignore errors."
 msgstr ""
 
-#: ppdc/ppdc.cxx:435 ppdc/ppdhtml.cxx:182 ppdc/ppdi.cxx:131 ppdc/ppdpo.cxx:252
+#: ppdc/ppdc.cxx:433 ppdc/ppdhtml.cxx:180 ppdc/ppdi.cxx:124 ppdc/ppdpo.cxx:250
 msgid "  -I include-dir          Add include directory to search path."
 msgstr ""
 
-#: systemv/cupstestppd.c:3863
+#: systemv/cupstestppd.c:3861
 msgid "  -I {filename,filters,none,profiles}"
 msgstr ""
 
-#: test/ipptool.c:4869
+#: test/ipptool.c:4942
 msgid "  -L                      Send requests using content-length."
 msgstr ""
 
-#: test/ipptool.c:4871
+#: test/ipptool.c:4944
 msgid "  -P filename.plist       Produce XML plist to a file and test report to standard output."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1485
+#: scheduler/cupsfilter.c:1483
 msgid "  -P filename.ppd         Set PPD file."
 msgstr ""
 
-#: test/ippfind.c:2764
+#: test/ippfind.c:2762
 msgid "  -P number[-number]      Match port to number or range."
 msgstr ""
 
-#: systemv/cupstestppd.c:3865
+#: systemv/cupstestppd.c:3863
 msgid "  -R root-directory       Set alternate root."
 msgstr ""
 
-#: test/ipptool.c:4872
+#: test/ipptool.c:4945
 msgid "  -S                      Test with SSL encryption."
 msgstr ""
 
-#: test/ippfind.c:2756
+#: test/ippfind.c:2754
 msgid "  -T seconds              Set the browse timeout in seconds."
 msgstr ""
 
-#: test/ipptool.c:4874
+#: test/ipptool.c:4947
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1486 systemv/cupsaddsmb.c:288 systemv/cupsctl.c:206
+#: scheduler/cupsfilter.c:1484 systemv/cupsaddsmb.c:280 systemv/cupsctl.c:199
 msgid "  -U username             Specify username."
 msgstr ""
 
-#: test/ippfind.c:2758 test/ipptool.c:4876
+#: test/ippfind.c:2756 test/ipptool.c:4949
 msgid "  -V version              Set default IPP version."
 msgstr ""
 
-#: systemv/cupstestppd.c:3866
+#: systemv/cupstestppd.c:3864
 msgid "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}"
 msgstr ""
 
-#: test/ipptool.c:4878
+#: test/ipptool.c:4951
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 
-#: test/ippdiscover.c:818
-msgid "  -a                      Browse for all services."
-msgstr ""
-
-#: systemv/cupsaddsmb.c:289
+#: systemv/cupsaddsmb.c:281
 msgid "  -a                      Export all printers."
 msgstr ""
 
-#: test/ipptool.c:4880
+#: test/ipptool.c:4953
 msgid "  -c                      Produce CSV output."
 msgstr ""
 
-#: ppdc/ppdc.cxx:437
+#: ppdc/ppdc.cxx:435
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1487
+#: scheduler/cupsfilter.c:1485
 msgid "  -c cups-files.conf      Set cups-files.conf file to use."
 msgstr ""
 
-#: scheduler/main.c:2178
+#: scheduler/main.c:2056
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 
-#: test/ippdiscover.c:819
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr ""
-
-#: test/ipptool.c:4881
+#: test/ipptool.c:4954
 msgid "  -d name=value           Set named variable to value."
 msgstr ""
 
-#: ppdc/ppdc.cxx:439
+#: ppdc/ppdc.cxx:437
 msgid "  -d output-dir           Specify the output directory."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1488
+#: scheduler/cupsfilter.c:1486
 msgid "  -d printer              Use the named printer."
 msgstr ""
 
-#: test/ippfind.c:2765
+#: test/ippfind.c:2763
 msgid "  -d regex                Match domain to regular expression."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1489
+#: scheduler/cupsfilter.c:1487
 msgid "  -e                      Use every filter from the PPD file."
 msgstr ""
 
-#: scheduler/main.c:2179
+#: scheduler/main.c:2057
 msgid "  -f                      Run in the foreground."
 msgstr ""
 
-#: test/ipptool.c:4883
+#: test/ipptool.c:4956
 msgid "  -f filename             Set default request filename."
 msgstr ""
 
-#: scheduler/main.c:2182
+#: scheduler/main.c:2059
 msgid "  -h                      Show this usage message."
 msgstr ""
 
-#: test/ippfind.c:2766
+#: test/ippfind.c:2764
 msgid "  -h regex                Match hostname to regular expression."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:290 systemv/cupsctl.c:207
+#: systemv/cupsaddsmb.c:282 systemv/cupsctl.c:200
 msgid "  -h server[:port]        Specify server address."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1490
+#: scheduler/cupsfilter.c:1488
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
 msgstr ""
 
-#: test/ipptool.c:4885
+#: test/ipptool.c:4958
 msgid "  -i seconds              Repeat the last file with the given time interval."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1491
+#: scheduler/cupsfilter.c:1489
 msgid "  -j job-id[,N]           Filter file N from the specified job (default is file 1)."
 msgstr ""
 
-#: test/ippfind.c:2767
+#: test/ippfind.c:2765
 msgid "  -l                      List attributes."
 msgstr ""
 
-#: test/ipptool.c:4887
+#: test/ipptool.c:4960
 msgid "  -l                      Produce plain text output."
 msgstr ""
 
-#: scheduler/main.c:2183
+#: scheduler/main.c:2061
 msgid "  -l                      Run cupsd on demand."
 msgstr ""
 
-#: ppdc/ppdc.cxx:441
+#: ppdc/ppdc.cxx:439
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr ""
 
-#: ppdc/ppdc.cxx:443
+#: ppdc/ppdc.cxx:441
 msgid "  -m                      Use the ModelName value as the filename."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1492
+#: scheduler/cupsfilter.c:1490
 msgid "  -m mime/type            Set output MIME type (otherwise application/pdf)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1493
+#: scheduler/cupsfilter.c:1491
 msgid "  -n copies               Set number of copies."
 msgstr ""
 
-#: test/ipptool.c:4888
+#: test/ipptool.c:4961
 msgid "  -n count                Repeat the last file the given number of times."
 msgstr ""
 
-#: test/ippfind.c:2768
+#: test/ippfind.c:2766
 msgid "  -n regex                Match service name to regular expression."
 msgstr ""
 
-#: ppdc/ppdi.cxx:133
+#: ppdc/ppdi.cxx:126
 msgid "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:364
+#: ppdc/ppdmerge.cxx:362
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1494
+#: scheduler/cupsfilter.c:1492
 msgid "  -o name=value           Set option(s)."
 msgstr ""
 
-#: test/ippfind.c:2769
+#: test/ippfind.c:2767
 msgid "  -p                      Print URI if true."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1495
+#: scheduler/cupsfilter.c:1493
 msgid "  -p filename.ppd         Set PPD file."
 msgstr ""
 
-#: test/ippdiscover.c:820
-msgid "  -p program              Run specified program for each service."
-msgstr ""
-
-#: test/ippfind.c:2770
+#: test/ippfind.c:2768
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 
-#: systemv/cupstestppd.c:3870 test/ipptool.c:4890
+#: systemv/cupstestppd.c:3868 test/ipptool.c:4963
 msgid "  -q                      Run silently."
 msgstr ""
 
-#: test/ippfind.c:2771
+#: test/ippfind.c:2769
 msgid "  -r                      True if service is remote."
 msgstr ""
 
-#: systemv/cupstestppd.c:3871
+#: systemv/cupstestppd.c:3869
 msgid "  -r                      Use 'relaxed' open mode."
 msgstr ""
 
-#: test/ippfind.c:2772
+#: test/ippfind.c:2770
 msgid "  -s                      Print service name if true."
 msgstr ""
 
-#: test/ipptool.c:4891
+#: scheduler/main.c:2063
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
+#: test/ipptool.c:4964
 msgid "  -t                      Produce a test report."
 msgstr ""
 
-#: ppdc/ppdc.cxx:445
+#: ppdc/ppdc.cxx:443
 msgid "  -t                      Test PPDs instead of generating them."
 msgstr ""
 
-#: scheduler/main.c:2184
+#: scheduler/main.c:2064
 msgid "  -t                      Test the configuration file."
 msgstr ""
 
-#: test/ippfind.c:2773
+#: test/ippfind.c:2771
 msgid "  -t key                  True if the TXT record contains the key."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1496
+#: scheduler/cupsfilter.c:1494
 msgid "  -t title                Set title."
 msgstr ""
 
-#: test/ippdiscover.c:821
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr ""
-
-#: scheduler/cupsfilter.c:1497
+#: scheduler/cupsfilter.c:1495
 msgid "  -u                      Remove the PPD file when finished."
 msgstr ""
 
-#: test/ippfind.c:2774
+#: test/ippfind.c:2772
 msgid "  -u regex                Match URI to regular expression."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:291 systemv/cupstestppd.c:3872 test/ipptool.c:4892
-#: ppdc/ppdc.cxx:447 ppdc/ppdpo.cxx:254
+#: systemv/cupsaddsmb.c:283 systemv/cupstestppd.c:3870 test/ipptool.c:4965
+#: ppdc/ppdc.cxx:445 ppdc/ppdpo.cxx:252
 msgid "  -v                      Be verbose."
 msgstr ""
 
-#: systemv/cupstestppd.c:3873
+#: systemv/cupstestppd.c:3871
 msgid "  -vv                     Be very verbose."
 msgstr ""
 
-#: test/ippfind.c:2775
+#: test/ippfind.c:2773
 msgid ""
 "  -x utility [argument ...] ;\n"
 "                          Execute program if true."
 msgstr ""
 
-#: ppdc/ppdc.cxx:448
+#: ppdc/ppdc.cxx:446
 msgid "  -z                      Compress PPD files using GNU zip."
 msgstr ""
 
-#: test/ippfind.c:2818
+#: test/ippfind.c:2816
 msgid "  IPPFIND_SERVICE_DOMAIN  Domain name"
 msgstr ""
 
-#: test/ippfind.c:2819
+#: test/ippfind.c:2817
 msgid ""
 "  IPPFIND_SERVICE_HOSTNAME\n"
 "                          Fully-qualified domain name"
 msgstr ""
 
-#: test/ippfind.c:2821
+#: test/ippfind.c:2819
 msgid "  IPPFIND_SERVICE_NAME    Service instance name"
 msgstr ""
 
-#: test/ippfind.c:2822
+#: test/ippfind.c:2820
 msgid "  IPPFIND_SERVICE_PORT    Port number"
 msgstr ""
 
-#: test/ippfind.c:2823
+#: test/ippfind.c:2821
 msgid "  IPPFIND_SERVICE_REGTYPE DNS-SD registration type"
 msgstr ""
 
-#: test/ippfind.c:2824
+#: test/ippfind.c:2822
 msgid "  IPPFIND_SERVICE_SCHEME  URI scheme"
 msgstr ""
 
-#: test/ippfind.c:2825
+#: test/ippfind.c:2823
 msgid "  IPPFIND_SERVICE_URI     URI"
 msgstr ""
 
-#: test/ippfind.c:2826
+#: test/ippfind.c:2824
 msgid "  IPPFIND_TXT_*           Value of TXT record key"
 msgstr ""
 
-#: test/ippfind.c:2801
+#: test/ippfind.c:2799
 msgid ""
 "  expression --and expression\n"
 "                          Logical AND."
 msgstr ""
 
-#: test/ippfind.c:2803
+#: test/ippfind.c:2801
 msgid ""
 "  expression --or expression\n"
 "                          Logical OR."
 msgstr ""
 
-#: test/ippfind.c:2800
+#: test/ippfind.c:2798
 msgid "  expression expression   Logical AND."
 msgstr ""
 
-#: test/ippfind.c:2808
+#: test/ippfind.c:2806
 msgid "  {service_domain}        Domain name"
 msgstr ""
 
-#: test/ippfind.c:2809
+#: test/ippfind.c:2807
 msgid "  {service_hostname}      Fully-qualified domain name"
 msgstr ""
 
-#: test/ippfind.c:2810
+#: test/ippfind.c:2808
 msgid "  {service_name}          Service instance name"
 msgstr ""
 
-#: test/ippfind.c:2811
+#: test/ippfind.c:2809
 msgid "  {service_port}          Port number"
 msgstr ""
 
-#: test/ippfind.c:2812
+#: test/ippfind.c:2810
 msgid "  {service_regtype}       DNS-SD registration type"
 msgstr ""
 
-#: test/ippfind.c:2813
+#: test/ippfind.c:2811
 msgid "  {service_scheme}        URI scheme"
 msgstr ""
 
-#: test/ippfind.c:2814
+#: test/ippfind.c:2812
 msgid "  {service_uri}           URI"
 msgstr ""
 
-#: test/ippfind.c:2815
+#: test/ippfind.c:2813
 msgid "  {txt_*}                 Value of TXT record key"
 msgstr ""
 
-#: test/ippfind.c:2807
+#: test/ippfind.c:2805
 msgid "  {}                      URI"
 msgstr ""
 
-#: systemv/cupstestppd.c:312 systemv/cupstestppd.c:331
-#: systemv/cupstestppd.c:343 systemv/cupstestppd.c:476
-#: systemv/cupstestppd.c:491 systemv/cupstestppd.c:512
-#: systemv/cupstestppd.c:527 systemv/cupstestppd.c:557
-#: systemv/cupstestppd.c:577 systemv/cupstestppd.c:600
-#: systemv/cupstestppd.c:618 systemv/cupstestppd.c:644
-#: systemv/cupstestppd.c:662 systemv/cupstestppd.c:682
-#: systemv/cupstestppd.c:702 systemv/cupstestppd.c:720
-#: systemv/cupstestppd.c:737 systemv/cupstestppd.c:756
-#: systemv/cupstestppd.c:777 systemv/cupstestppd.c:796
-#: systemv/cupstestppd.c:816 systemv/cupstestppd.c:836
-#: systemv/cupstestppd.c:856 systemv/cupstestppd.c:876
-#: systemv/cupstestppd.c:894 systemv/cupstestppd.c:911
-#: systemv/cupstestppd.c:933 systemv/cupstestppd.c:951
-#: systemv/cupstestppd.c:968 systemv/cupstestppd.c:986
-#: systemv/cupstestppd.c:1002 systemv/cupstestppd.c:1022
-#: systemv/cupstestppd.c:1053 systemv/cupstestppd.c:1075
-#: systemv/cupstestppd.c:1126 systemv/cupstestppd.c:1145
-#: systemv/cupstestppd.c:1189 systemv/cupstestppd.c:1203
-#: systemv/cupstestppd.c:1235 systemv/cupstestppd.c:1262
-#: systemv/cupstestppd.c:1780 systemv/cupstestppd.c:1799
-#: systemv/cupstestppd.c:1817 systemv/cupstestppd.c:1869
-#: systemv/cupstestppd.c:1885 systemv/cupstestppd.c:1922
-#: systemv/cupstestppd.c:1940 systemv/cupstestppd.c:1976
-#: systemv/cupstestppd.c:1990 systemv/cupstestppd.c:2017
-#: systemv/cupstestppd.c:2031 systemv/cupstestppd.c:2077
-#: systemv/cupstestppd.c:2099 systemv/cupstestppd.c:2122
-#: systemv/cupstestppd.c:2139 systemv/cupstestppd.c:2181
-#: systemv/cupstestppd.c:2224 systemv/cupstestppd.c:2271
-#: systemv/cupstestppd.c:2295 systemv/cupstestppd.c:2349
-#: systemv/cupstestppd.c:2365 systemv/cupstestppd.c:2387
-#: systemv/cupstestppd.c:2427 systemv/cupstestppd.c:2441
-#: systemv/cupstestppd.c:2467 systemv/cupstestppd.c:2483
-#: systemv/cupstestppd.c:2505 systemv/cupstestppd.c:2555
-#: systemv/cupstestppd.c:2569 systemv/cupstestppd.c:2595
-#: systemv/cupstestppd.c:2611 systemv/cupstestppd.c:2641
-#: systemv/cupstestppd.c:2655 systemv/cupstestppd.c:2682
-#: systemv/cupstestppd.c:2699 systemv/cupstestppd.c:2713
-#: systemv/cupstestppd.c:2737 systemv/cupstestppd.c:2754
-#: systemv/cupstestppd.c:2768 systemv/cupstestppd.c:2792
-#: systemv/cupstestppd.c:2809 systemv/cupstestppd.c:2823
-#: systemv/cupstestppd.c:2847 systemv/cupstestppd.c:2864
-#: systemv/cupstestppd.c:2878 systemv/cupstestppd.c:2902
-#: systemv/cupstestppd.c:2916 systemv/cupstestppd.c:2931
-#: systemv/cupstestppd.c:2948 systemv/cupstestppd.c:3004
-#: systemv/cupstestppd.c:3039 systemv/cupstestppd.c:3053
-#: systemv/cupstestppd.c:3081 systemv/cupstestppd.c:3146
-#: systemv/cupstestppd.c:3161 systemv/cupstestppd.c:3200
-#: systemv/cupstestppd.c:3220 systemv/cupstestppd.c:3234
-#: systemv/cupstestppd.c:3451 systemv/cupstestppd.c:3487
-#: systemv/cupstestppd.c:3501 systemv/cupstestppd.c:3547
-#: systemv/cupstestppd.c:3579 systemv/cupstestppd.c:3596
-#: systemv/cupstestppd.c:3619 systemv/cupstestppd.c:3635
-#: systemv/cupstestppd.c:3673 systemv/cupstestppd.c:3814
-#: systemv/cupstestppd.c:3836 systemv/cupstestppd.c:3944
+#: systemv/cupstestppd.c:310 systemv/cupstestppd.c:329
+#: systemv/cupstestppd.c:341 systemv/cupstestppd.c:474
+#: systemv/cupstestppd.c:489 systemv/cupstestppd.c:510
+#: systemv/cupstestppd.c:525 systemv/cupstestppd.c:555
+#: systemv/cupstestppd.c:575 systemv/cupstestppd.c:598
+#: systemv/cupstestppd.c:616 systemv/cupstestppd.c:642
+#: systemv/cupstestppd.c:660 systemv/cupstestppd.c:680
+#: systemv/cupstestppd.c:700 systemv/cupstestppd.c:718
+#: systemv/cupstestppd.c:735 systemv/cupstestppd.c:754
+#: systemv/cupstestppd.c:775 systemv/cupstestppd.c:794
+#: systemv/cupstestppd.c:814 systemv/cupstestppd.c:834
+#: systemv/cupstestppd.c:854 systemv/cupstestppd.c:874
+#: systemv/cupstestppd.c:892 systemv/cupstestppd.c:909
+#: systemv/cupstestppd.c:931 systemv/cupstestppd.c:949
+#: systemv/cupstestppd.c:966 systemv/cupstestppd.c:984
+#: systemv/cupstestppd.c:1000 systemv/cupstestppd.c:1020
+#: systemv/cupstestppd.c:1051 systemv/cupstestppd.c:1073
+#: systemv/cupstestppd.c:1124 systemv/cupstestppd.c:1143
+#: systemv/cupstestppd.c:1187 systemv/cupstestppd.c:1201
+#: systemv/cupstestppd.c:1233 systemv/cupstestppd.c:1260
+#: systemv/cupstestppd.c:1778 systemv/cupstestppd.c:1797
+#: systemv/cupstestppd.c:1815 systemv/cupstestppd.c:1867
+#: systemv/cupstestppd.c:1883 systemv/cupstestppd.c:1920
+#: systemv/cupstestppd.c:1938 systemv/cupstestppd.c:1974
+#: systemv/cupstestppd.c:1988 systemv/cupstestppd.c:2015
+#: systemv/cupstestppd.c:2029 systemv/cupstestppd.c:2075
+#: systemv/cupstestppd.c:2097 systemv/cupstestppd.c:2120
+#: systemv/cupstestppd.c:2137 systemv/cupstestppd.c:2179
+#: systemv/cupstestppd.c:2222 systemv/cupstestppd.c:2269
+#: systemv/cupstestppd.c:2293 systemv/cupstestppd.c:2347
+#: systemv/cupstestppd.c:2363 systemv/cupstestppd.c:2385
+#: systemv/cupstestppd.c:2425 systemv/cupstestppd.c:2439
+#: systemv/cupstestppd.c:2465 systemv/cupstestppd.c:2481
+#: systemv/cupstestppd.c:2503 systemv/cupstestppd.c:2553
+#: systemv/cupstestppd.c:2567 systemv/cupstestppd.c:2593
+#: systemv/cupstestppd.c:2609 systemv/cupstestppd.c:2639
+#: systemv/cupstestppd.c:2653 systemv/cupstestppd.c:2680
+#: systemv/cupstestppd.c:2697 systemv/cupstestppd.c:2711
+#: systemv/cupstestppd.c:2735 systemv/cupstestppd.c:2752
+#: systemv/cupstestppd.c:2766 systemv/cupstestppd.c:2790
+#: systemv/cupstestppd.c:2807 systemv/cupstestppd.c:2821
+#: systemv/cupstestppd.c:2845 systemv/cupstestppd.c:2862
+#: systemv/cupstestppd.c:2876 systemv/cupstestppd.c:2900
+#: systemv/cupstestppd.c:2914 systemv/cupstestppd.c:2929
+#: systemv/cupstestppd.c:2946 systemv/cupstestppd.c:3002
+#: systemv/cupstestppd.c:3037 systemv/cupstestppd.c:3051
+#: systemv/cupstestppd.c:3079 systemv/cupstestppd.c:3144
+#: systemv/cupstestppd.c:3159 systemv/cupstestppd.c:3198
+#: systemv/cupstestppd.c:3218 systemv/cupstestppd.c:3232
+#: systemv/cupstestppd.c:3449 systemv/cupstestppd.c:3485
+#: systemv/cupstestppd.c:3499 systemv/cupstestppd.c:3545
+#: systemv/cupstestppd.c:3577 systemv/cupstestppd.c:3594
+#: systemv/cupstestppd.c:3617 systemv/cupstestppd.c:3633
+#: systemv/cupstestppd.c:3671 systemv/cupstestppd.c:3812
+#: systemv/cupstestppd.c:3834 systemv/cupstestppd.c:3942
 msgid " FAIL"
 msgstr ""
 
-#: systemv/cupstestppd.c:1286
+#: systemv/cupstestppd.c:1284
 msgid " PASS"
 msgstr ""
 
-#: cups/ipp.c:5227
+#: cups/ipp.c:5185
 #, c-format
 msgid "\"%s\": Bad URI value \"%s\" - %s (RFC 2911 section 4.1.5)."
 msgstr ""
 
-#: cups/ipp.c:5238
+#: cups/ipp.c:5196
 #, c-format
 msgid "\"%s\": Bad URI value \"%s\" - bad length %d (RFC 2911 section 4.1.5)."
 msgstr ""
 
-#: cups/ipp.c:4858
+#: cups/ipp.c:4816
 #, c-format
 msgid "\"%s\": Bad attribute name - bad length %d (RFC 2911 section 4.1.3)."
 msgstr ""
 
-#: cups/ipp.c:4850
+#: cups/ipp.c:4808
 #, c-format
 msgid "\"%s\": Bad attribute name - invalid character (RFC 2911 section 4.1.3)."
 msgstr ""
 
-#: cups/ipp.c:4876
+#: cups/ipp.c:4834
 #, c-format
 msgid "\"%s\": Bad boolen value %d (RFC 2911 section 4.1.11)."
 msgstr ""
 
-#: cups/ipp.c:5290
+#: cups/ipp.c:5248
 #, c-format
 msgid "\"%s\": Bad charset value \"%s\" - bad characters (RFC 2911 section 4.1.7)."
 msgstr ""
 
-#: cups/ipp.c:5299
+#: cups/ipp.c:5257
 #, c-format
 msgid "\"%s\": Bad charset value \"%s\" - bad length %d (RFC 2911 section 4.1.7)."
 msgstr ""
 
-#: cups/ipp.c:4976
+#: cups/ipp.c:4934
 #, c-format
 msgid "\"%s\": Bad dateTime UTC hours %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4984
+#: cups/ipp.c:4942
 #, c-format
 msgid "\"%s\": Bad dateTime UTC minutes %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4968
+#: cups/ipp.c:4926
 #, c-format
 msgid "\"%s\": Bad dateTime UTC sign '%c' (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4928
+#: cups/ipp.c:4886
 #, c-format
 msgid "\"%s\": Bad dateTime day %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4960
+#: cups/ipp.c:4918
 #, c-format
 msgid "\"%s\": Bad dateTime deciseconds %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4936
+#: cups/ipp.c:4894
 #, c-format
 msgid "\"%s\": Bad dateTime hours %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4944
+#: cups/ipp.c:4902
 #, c-format
 msgid "\"%s\": Bad dateTime minutes %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4920
+#: cups/ipp.c:4878
 #, c-format
 msgid "\"%s\": Bad dateTime month %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4952
+#: cups/ipp.c:4910
 #, c-format
 msgid "\"%s\": Bad dateTime seconds %u (RFC 2911 section 4.1.14)."
 msgstr ""
 
-#: cups/ipp.c:4890
+#: cups/ipp.c:4848
 #, c-format
 msgid "\"%s\": Bad enum value %d - out of range (RFC 2911 section 4.1.4)."
 msgstr ""
 
-#: cups/ipp.c:5205
+#: cups/ipp.c:5163
 #, c-format
 msgid "\"%s\": Bad keyword value \"%s\" - bad length %d (RFC 2911 section 4.1.3)."
 msgstr ""
 
-#: cups/ipp.c:5196
+#: cups/ipp.c:5154
 #, c-format
 msgid "\"%s\": Bad keyword value \"%s\" - invalid character (RFC 2911 section 4.1.3)."
 msgstr ""
 
-#: cups/ipp.c:5399
+#: cups/ipp.c:5357
 #, c-format
 msgid "\"%s\": Bad mimeMediaType value \"%s\" - bad characters (RFC 2911 section 4.1.9)."
 msgstr ""
 
-#: cups/ipp.c:5409
+#: cups/ipp.c:5367
 #, c-format
 msgid "\"%s\": Bad mimeMediaType value \"%s\" - bad length %d (RFC 2911 section 4.1.9)."
 msgstr ""
 
-#: cups/ipp.c:5167
+#: cups/ipp.c:5125
 #, c-format
 msgid "\"%s\": Bad name value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.2)."
 msgstr ""
 
-#: cups/ipp.c:5176
+#: cups/ipp.c:5134
 #, c-format
 msgid "\"%s\": Bad name value \"%s\" - bad length %d (RFC 2911 section 4.1.2)."
 msgstr ""
 
-#: cups/ipp.c:5345
+#: cups/ipp.c:5303
 #, c-format
 msgid "\"%s\": Bad naturalLanguage value \"%s\" - bad characters (RFC 2911 section 4.1.8)."
 msgstr ""
 
-#: cups/ipp.c:5355
+#: cups/ipp.c:5313
 #, c-format
 msgid "\"%s\": Bad naturalLanguage value \"%s\" - bad length %d (RFC 2911 section 4.1.8)."
 msgstr ""
 
-#: cups/ipp.c:4904
+#: cups/ipp.c:4862
 #, c-format
 msgid "\"%s\": Bad octetString value - bad length %d (RFC 2911 section 4.1.10)."
 msgstr ""
 
-#: cups/ipp.c:5047
+#: cups/ipp.c:5005
 #, c-format
 msgid "\"%s\": Bad rangeOfInteger value %d-%d - lower greater than upper (RFC 2911 section 4.1.13)."
 msgstr ""
 
-#: cups/ipp.c:5028
+#: cups/ipp.c:4986
 #, c-format
 msgid "\"%s\": Bad resolution value %dx%d%s - bad units value (RFC 2911 section 4.1.15)."
 msgstr ""
 
-#: cups/ipp.c:4997
+#: cups/ipp.c:4955
 #, c-format
 msgid "\"%s\": Bad resolution value %dx%d%s - cross feed resolution must be positive (RFC 2911 section 4.1.15)."
 msgstr ""
 
-#: cups/ipp.c:5012
+#: cups/ipp.c:4970
 #, c-format
 msgid "\"%s\": Bad resolution value %dx%d%s - feed resolution must be positive (RFC 2911 section 4.1.15)."
 msgstr ""
 
-#: cups/ipp.c:5109
+#: cups/ipp.c:5067
 #, c-format
 msgid "\"%s\": Bad text value \"%s\" - bad UTF-8 sequence (RFC 2911 section 4.1.1)."
 msgstr ""
 
-#: cups/ipp.c:5118
+#: cups/ipp.c:5076
 #, c-format
 msgid "\"%s\": Bad text value \"%s\" - bad length %d (RFC 2911 section 4.1.1)."
 msgstr ""
 
-#: cups/ipp.c:5261
+#: cups/ipp.c:5219
 #, c-format
 msgid "\"%s\": Bad uriScheme value \"%s\" - bad characters (RFC 2911 section 4.1.6)."
 msgstr ""
 
-#: cups/ipp.c:5270
+#: cups/ipp.c:5228
 #, c-format
 msgid "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 section 4.1.6)."
 msgstr ""
 
-#: berkeley/lpq.c:533
+#: berkeley/lpq.c:542
 #, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr ""
 
-#: cups/dest-localization.c:114
+#: cups/dest-localization.c:112
 #, c-format
 msgid "%d x %d mm"
 msgstr ""
 
-#: cups/dest-localization.c:106
+#: cups/dest-localization.c:104
 #, c-format
 msgid "%g x %g"
 msgstr ""
 
-#: cups/dest-localization.c:169 cups/dest-localization.c:176
+#: cups/dest-localization.c:167 cups/dest-localization.c:174
 #, c-format
 msgid "%s (%s)"
 msgstr ""
 
-#: cups/dest-localization.c:183
+#: cups/dest-localization.c:181
 #, c-format
 msgid "%s (%s, %s)"
 msgstr ""
 
-#: cups/dest-localization.c:160
+#: cups/dest-localization.c:158
 #, c-format
 msgid "%s (Borderless)"
 msgstr ""
 
-#: cups/dest-localization.c:167 cups/dest-localization.c:174
+#: cups/dest-localization.c:165 cups/dest-localization.c:172
 #, c-format
 msgid "%s (Borderless, %s)"
 msgstr ""
 
-#: cups/dest-localization.c:181
+#: cups/dest-localization.c:179
 #, c-format
 msgid "%s (Borderless, %s, %s)"
 msgstr ""
 
-#: systemv/lpstat.c:777
+#: systemv/lpstat.c:775
 #, c-format
 msgid "%s accepting requests since %s"
 msgstr ""
 
-#: scheduler/ipp.c:9986
+#: scheduler/ipp.c:10294
 #, c-format
 msgid "%s cannot be changed."
 msgstr ""
 
-#: berkeley/lpc.c:181
+#: berkeley/lpc.c:179
 #, c-format
 msgid "%s is not implemented by the CUPS version of lpc."
 msgstr ""
 
-#: berkeley/lpq.c:618
+#: berkeley/lpq.c:627
 #, c-format
 msgid "%s is not ready"
 msgstr ""
 
-#: berkeley/lpq.c:611
+#: berkeley/lpq.c:620
 #, c-format
 msgid "%s is ready"
 msgstr ""
 
-#: berkeley/lpq.c:614
+#: berkeley/lpq.c:623
 #, c-format
 msgid "%s is ready and printing"
 msgstr ""
 
-#: filter/rastertoepson.c:982 filter/rastertohp.c:700
-#: filter/rastertolabel.c:1120
+#: filter/rastertoepson.c:1004 filter/rastertohp.c:674
+#: filter/rastertolabel.c:1105
 #, c-format
 msgid "%s job-id user title copies options [file]"
 msgstr ""
 
-#: systemv/lpstat.c:781
+#: systemv/lpstat.c:779
 #, c-format
 msgid "%s not accepting requests since %s -"
 msgstr ""
 
-#: scheduler/ipp.c:617
+#: scheduler/ipp.c:619
 #, c-format
 msgid "%s not supported."
 msgstr ""
 
-#: systemv/lpstat.c:792
+#: systemv/lpstat.c:790
 #, c-format
 msgid "%s/%s accepting requests since %s"
 msgstr ""
 
-#: systemv/lpstat.c:797
+#: systemv/lpstat.c:795
 #, c-format
 msgid "%s/%s not accepting requests since %s -"
 msgstr ""
 
-#: berkeley/lpq.c:526
+#: berkeley/lpq.c:535
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]"
 msgstr ""
 
 #. TRANSLATORS: Message is "subject: error"
-#: cups/langprintf.c:77 scheduler/cupsfilter.c:726 systemv/lpadmin.c:803
-#: systemv/lpadmin.c:854 systemv/lpadmin.c:904 systemv/lpadmin.c:960
-#: systemv/lpadmin.c:1058 systemv/lpadmin.c:1110 systemv/lpadmin.c:1166
-#: systemv/lpadmin.c:1581
+#: cups/langprintf.c:75 scheduler/cupsfilter.c:724 systemv/lpadmin.c:772
+#: systemv/lpadmin.c:823 systemv/lpadmin.c:873 systemv/lpadmin.c:929
+#: systemv/lpadmin.c:1027 systemv/lpadmin.c:1079 systemv/lpadmin.c:1135
+#: systemv/lpadmin.c:1550
 #, c-format
 msgid "%s: %s"
 msgstr ""
 
-#: systemv/cancel.c:305 systemv/cancel.c:368
+#: systemv/cancel.c:304 systemv/cancel.c:368
 #, c-format
 msgid "%s: %s failed: %s"
 msgstr ""
 
-#: systemv/lpadmin.c:1216
+#: systemv/lpadmin.c:1185
 #, c-format
 msgid "%s: Bad printer URI \"%s\"."
 msgstr ""
 
-#: test/ippfind.c:777 test/ipptool.c:381
+#: test/ippfind.c:775 test/ipptool.c:369
 #, c-format
 msgid "%s: Bad version %s for \"-V\"."
 msgstr ""
 
-#: systemv/cupsaccept.c:68
+#: systemv/cupsaccept.c:63
 #, c-format
 msgid "%s: Don't know what to do."
 msgstr ""
 
-#: berkeley/lpq.c:225 berkeley/lpr.c:358 systemv/lp.c:602
+#: berkeley/lpq.c:234 berkeley/lpr.c:365 systemv/lp.c:606
 #, c-format
 msgid "%s: Error - %s environment variable names non-existent destination \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:133 berkeley/lpq.c:203 berkeley/lpr.c:230 berkeley/lpr.c:333
-#: systemv/lp.c:157 systemv/lp.c:577 systemv/lp.c:697 systemv/lp.c:746
-#: systemv/lpstat.c:195 systemv/lpstat.c:241 systemv/lpstat.c:332
-#: systemv/lpstat.c:361 systemv/lpstat.c:385 systemv/lpstat.c:444
-#: systemv/lpstat.c:510 systemv/lpstat.c:571 systemv/lpstat.c:696
-#: systemv/lpstat.c:880 systemv/lpstat.c:1141 systemv/lpstat.c:1339
-#: systemv/lpstat.c:1579
+#: berkeley/lpq.c:139 berkeley/lpq.c:212 berkeley/lpr.c:229 berkeley/lpr.c:340
+#: systemv/lp.c:161 systemv/lp.c:581 systemv/lp.c:701 systemv/lp.c:750
+#: systemv/lpstat.c:190 systemv/lpstat.c:235 systemv/lpstat.c:333
+#: systemv/lpstat.c:360 systemv/lpstat.c:382 systemv/lpstat.c:442
+#: systemv/lpstat.c:508 systemv/lpstat.c:569 systemv/lpstat.c:694
+#: systemv/lpstat.c:878 systemv/lpstat.c:1139 systemv/lpstat.c:1337
+#: systemv/lpstat.c:1577
 #, c-format
 msgid "%s: Error - add '/version=1.1' to server name."
 msgstr ""
 
-#: systemv/lp.c:234
+#: systemv/lp.c:238
 #, c-format
 msgid "%s: Error - bad job ID."
 msgstr ""
 
-#: systemv/lp.c:222
+#: systemv/lp.c:227
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously."
 msgstr ""
 
-#: systemv/lp.c:515
+#: systemv/lp.c:518
 #, c-format
 msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
 msgstr ""
 
-#: systemv/lp.c:464
+#: berkeley/lpr.c:254 systemv/lp.c:280
+#, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr ""
+
+#: systemv/lp.c:470
 #, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr ""
 
-#: systemv/lp.c:483
+#: systemv/lp.c:489
 #, c-format
 msgid "%s: Error - expected content type after \"-T\" option."
 msgstr ""
@@ -1916,210 +1902,210 @@ msgstr ""
 msgid "%s: Error - expected copies after \"-#\" option."
 msgstr ""
 
-#: systemv/lp.c:267
+#: systemv/lp.c:271
 #, c-format
 msgid "%s: Error - expected copies after \"-n\" option."
 msgstr ""
 
-#: berkeley/lpr.c:206
+#: berkeley/lpr.c:207
 #, c-format
 msgid "%s: Error - expected destination after \"-P\" option."
 msgstr ""
 
-#: systemv/lp.c:132
+#: systemv/lp.c:137
 #, c-format
 msgid "%s: Error - expected destination after \"-d\" option."
 msgstr ""
 
-#: systemv/lp.c:171
+#: systemv/lp.c:178
 #, c-format
 msgid "%s: Error - expected form after \"-f\" option."
 msgstr ""
 
-#: systemv/lp.c:394
+#: systemv/lp.c:406
 #, c-format
 msgid "%s: Error - expected hold name after \"-H\" option."
 msgstr ""
 
-#: berkeley/lpr.c:100
+#: berkeley/lpr.c:104
 #, c-format
 msgid "%s: Error - expected hostname after \"-H\" option."
 msgstr ""
 
-#: berkeley/lpq.c:169 berkeley/lprm.c:123 systemv/cancel.c:124
-#: systemv/cupsaccept.c:123 systemv/lp.c:192 systemv/lpstat.c:266
+#: berkeley/lpq.c:173 berkeley/lprm.c:124 systemv/cancel.c:124
+#: systemv/cupsaccept.c:127 systemv/lp.c:198 systemv/lpstat.c:269
 #, c-format
 msgid "%s: Error - expected hostname after \"-h\" option."
 msgstr ""
 
-#: systemv/lp.c:374
+#: systemv/lp.c:386
 #, c-format
 msgid "%s: Error - expected mode list after \"-y\" option."
 msgstr ""
 
-#: berkeley/lpr.c:268
+#: berkeley/lpr.c:275
 #, c-format
 msgid "%s: Error - expected name after \"-%c\" option."
 msgstr ""
 
-#: berkeley/lpr.c:150 systemv/lp.c:291
+#: berkeley/lpr.c:156 systemv/lp.c:301
 #, c-format
 msgid "%s: Error - expected option=value after \"-o\" option."
 msgstr ""
 
-#: systemv/lp.c:444
+#: systemv/lp.c:449
 #, c-format
 msgid "%s: Error - expected page list after \"-P\" option."
 msgstr ""
 
-#: systemv/lp.c:311
+#: systemv/lp.c:322
 #, c-format
 msgid "%s: Error - expected priority after \"-%c\" option."
 msgstr ""
 
-#: systemv/cupsaccept.c:141
+#: systemv/cupsaccept.c:146
 #, c-format
 msgid "%s: Error - expected reason text after \"-r\" option."
 msgstr ""
 
-#: systemv/lp.c:357
+#: systemv/lp.c:367
 #, c-format
 msgid "%s: Error - expected title after \"-t\" option."
 msgstr ""
 
-#: berkeley/lpq.c:97 berkeley/lpr.c:81 berkeley/lprm.c:104 systemv/cancel.c:95
-#: systemv/cupsaccept.c:101 systemv/lp.c:110 systemv/lpadmin.c:426
-#: systemv/lpstat.c:124
+#: berkeley/lpq.c:102 berkeley/lpr.c:84 berkeley/lprm.c:104
+#: systemv/cancel.c:94 systemv/cupsaccept.c:104 systemv/lp.c:114
+#: systemv/lpadmin.c:423 systemv/lpstat.c:129
 #, c-format
 msgid "%s: Error - expected username after \"-U\" option."
 msgstr ""
 
-#: systemv/cancel.c:145
+#: systemv/cancel.c:146
 #, c-format
 msgid "%s: Error - expected username after \"-u\" option."
 msgstr ""
 
-#: berkeley/lpr.c:122
+#: berkeley/lpr.c:129
 #, c-format
 msgid "%s: Error - expected value after \"-%c\" option."
 msgstr ""
 
-#: systemv/lpstat.c:144 systemv/lpstat.c:158
+#: systemv/lpstat.c:149 systemv/lpstat.c:158
 #, c-format
 msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option."
 msgstr ""
 
-#: berkeley/lpq.c:230 berkeley/lpr.c:363 systemv/lp.c:607
+#: berkeley/lpq.c:239 berkeley/lpr.c:370 systemv/lp.c:611
 #, c-format
 msgid "%s: Error - no default destination available."
 msgstr ""
 
-#: systemv/lp.c:333
+#: systemv/lp.c:342
 #, c-format
 msgid "%s: Error - priority must be between 1 and 100."
 msgstr ""
 
-#: berkeley/lpr.c:366 systemv/lp.c:610
+#: berkeley/lpr.c:373 systemv/lp.c:614
 #, c-format
 msgid "%s: Error - scheduler not responding."
 msgstr ""
 
-#: berkeley/lpr.c:311 systemv/lp.c:547
+#: berkeley/lpr.c:316 systemv/lp.c:550
 #, c-format
 msgid "%s: Error - too many files - \"%s\"."
 msgstr ""
 
-#: berkeley/lpr.c:293 systemv/lp.c:530
+#: berkeley/lpr.c:298 systemv/lp.c:533
 #, c-format
 msgid "%s: Error - unable to access \"%s\" - %s"
 msgstr ""
 
-#: berkeley/lpr.c:409 systemv/lp.c:641
+#: berkeley/lpr.c:416 systemv/lp.c:645
 #, c-format
 msgid "%s: Error - unable to queue from stdin - %s."
 msgstr ""
 
-#: berkeley/lprm.c:87 berkeley/lprm.c:172 systemv/cancel.c:222
+#: berkeley/lprm.c:86 berkeley/lprm.c:173 systemv/cancel.c:221
 #, c-format
 msgid "%s: Error - unknown destination \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:137
+#: berkeley/lpq.c:141
 #, c-format
 msgid "%s: Error - unknown destination \"%s/%s\"."
 msgstr ""
 
-#: berkeley/lpr.c:279 berkeley/lprm.c:139 systemv/cancel.c:163
-#: systemv/cupsaccept.c:164 systemv/lp.c:506 systemv/lpstat.c:456
+#: berkeley/lpr.c:284 berkeley/lprm.c:139 systemv/cancel.c:162
+#: systemv/cupsaccept.c:155 systemv/lp.c:508 systemv/lpstat.c:452
 #, c-format
 msgid "%s: Error - unknown option \"%c\"."
 msgstr ""
 
-#: systemv/cupsaccept.c:157 systemv/lp.c:497
+#: systemv/lp.c:500
 #, c-format
 msgid "%s: Error - unknown option \"%s\"."
 msgstr ""
 
-#: systemv/lp.c:211
+#: systemv/lp.c:218
 #, c-format
 msgid "%s: Expected job ID after \"-i\" option."
 msgstr ""
 
-#: systemv/lpstat.c:514 systemv/lpstat.c:554
+#: systemv/lpstat.c:512 systemv/lpstat.c:552
 #, c-format
 msgid "%s: Invalid destination name in list \"%s\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:579
+#: scheduler/cupsfilter.c:577
 #, c-format
 msgid "%s: Invalid filter string \"%s\"."
 msgstr ""
 
-#: test/ipptool.c:312
+#: test/ipptool.c:300
 #, c-format
 msgid "%s: Missing filename for \"-P\"."
 msgstr ""
 
-#: test/ippfind.c:749 test/ipptool.c:349
+#: test/ippfind.c:747 test/ipptool.c:337
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr ""
 
-#: test/ippfind.c:762 test/ipptool.c:363
+#: test/ippfind.c:760 test/ipptool.c:351
 #, c-format
 msgid "%s: Missing version for \"-V\"."
 msgstr ""
 
-#: systemv/lp.c:421
+#: systemv/lp.c:426
 #, c-format
 msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:451
+#: scheduler/cupsfilter.c:449
 #, c-format
 msgid "%s: No filter to convert from %s/%s to %s/%s."
 msgstr ""
 
-#: systemv/cupsaccept.c:198
+#: systemv/cupsaccept.c:189
 #, c-format
 msgid "%s: Operation failed: %s"
 msgstr ""
 
-#: berkeley/lpq.c:83 berkeley/lpr.c:67 berkeley/lprm.c:67 systemv/cancel.c:82
-#: systemv/cupsaccept.c:88 systemv/cupsaddsmb.c:86 systemv/lp.c:96
-#: systemv/lpadmin.c:230 systemv/lpinfo.c:88 systemv/lpmove.c:73
-#: systemv/lpstat.c:88 test/ipptool.c:294 test/ipptool.c:338
+#: berkeley/lpq.c:87 berkeley/lpr.c:69 berkeley/lprm.c:65 systemv/cancel.c:79
+#: systemv/cupsaccept.c:89 systemv/cupsaddsmb.c:78 systemv/lp.c:99
+#: systemv/lpadmin.c:232 systemv/lpinfo.c:192 systemv/lpmove.c:70
+#: systemv/lpstat.c:91 test/ipptool.c:282 test/ipptool.c:326
 #, c-format
 msgid "%s: Sorry, no encryption support."
 msgstr ""
 
-#: systemv/lpadmin.c:1223
+#: systemv/lpadmin.c:1192
 #, c-format
 msgid "%s: Unable to connect to \"%s:%d\": %s"
 msgstr ""
 
-#: berkeley/lpq.c:284 scheduler/cupsfilter.c:1275 systemv/cancel.c:245
-#: systemv/cupsaddsmb.c:144 systemv/cupsaddsmb.c:171
+#: berkeley/lpq.c:293 scheduler/cupsfilter.c:1273 systemv/cancel.c:244
+#: systemv/cupsaddsmb.c:136 systemv/cupsaddsmb.c:163
 #, c-format
 msgid "%s: Unable to connect to server."
 msgstr ""
@@ -2129,92 +2115,97 @@ msgstr ""
 msgid "%s: Unable to contact server."
 msgstr ""
 
-#: systemv/lpadmin.c:1236
+#: systemv/lpadmin.c:1205
 #, c-format
 msgid "%s: Unable to create PPD file: %s"
 msgstr ""
 
-#: scheduler/cupsfilter.c:416
+#: scheduler/cupsfilter.c:414
 #, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr ""
 
-#: test/ipptool.c:321
+#: test/ipptool.c:309
 #, c-format
 msgid "%s: Unable to open \"%s\": %s"
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:90
+#: ppdc/ppdmerge.cxx:88
 #, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr ""
 
-#: scheduler/cupsfilter.c:674 ppdc/ppdmerge.cxx:106
+#: scheduler/cupsfilter.c:672 ppdc/ppdmerge.cxx:104
 #, c-format
 msgid "%s: Unable to open PPD file: %s on line %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:383
+#: scheduler/cupsfilter.c:381
 #, c-format
 msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
 msgstr ""
 
-#: systemv/lpadmin.c:1207
+#: systemv/lpadmin.c:1176
 #, c-format
 msgid "%s: Unable to resolve \"%s\"."
 msgstr ""
 
-#: berkeley/lpq.c:140 systemv/lpstat.c:575
+#: systemv/lpinfo.c:238
+#, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr ""
+
+#: berkeley/lpq.c:143 systemv/lpstat.c:573
 #, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:428
+#: scheduler/cupsfilter.c:426
 #, c-format
 msgid "%s: Unknown destination MIME type %s/%s."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1479
+#: scheduler/cupsfilter.c:1477 systemv/lpinfo.c:231 systemv/lpmove.c:95
 #, c-format
 msgid "%s: Unknown option \"%c\"."
 msgstr ""
 
-#: test/ippfind.c:648
+#: test/ippfind.c:646
 #, c-format
 msgid "%s: Unknown option \"%s\"."
 msgstr ""
 
-#: test/ippfind.c:928
+#: test/ippfind.c:926
 #, c-format
 msgid "%s: Unknown option \"-%c\"."
 msgstr ""
 
-#: scheduler/cupsfilter.c:408
+#: scheduler/cupsfilter.c:406
 #, c-format
 msgid "%s: Unknown source MIME type %s/%s."
 msgstr ""
 
-#: berkeley/lpr.c:136
+#: berkeley/lpr.c:142
 #, c-format
 msgid "%s: Warning - \"%c\" format modifier not supported - output may not be correct."
 msgstr ""
 
-#: systemv/lp.c:471
+#: systemv/lp.c:475
 #, c-format
 msgid "%s: Warning - character set option ignored."
 msgstr ""
 
-#: systemv/lp.c:490
+#: systemv/lp.c:494
 #, c-format
 msgid "%s: Warning - content type option ignored."
 msgstr ""
 
-#: systemv/lp.c:178
+#: systemv/lp.c:183
 #, c-format
 msgid "%s: Warning - form option ignored."
 msgstr ""
 
-#: systemv/lp.c:381
+#: systemv/lp.c:391
 #, c-format
 msgid "%s: Warning - mode option ignored."
 msgstr ""
@@ -2539,7 +2530,23 @@ msgstr ""
 msgid "2 inches/sec."
 msgstr ""
 
-#: ppdc/sample.c:262
+#: cups/ppd-cache.c:2989
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2990
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:2988
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2987
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3546 ppdc/sample.c:262
 msgid "2-Sided Printing"
 msgstr ""
 
@@ -2691,6 +2698,22 @@ msgstr ""
 msgid "3 x 5"
 msgstr ""
 
+#: cups/ppd-cache.c:3000
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2998
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:2997
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2999
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 #: ppdc/sample.c:195
 msgid "3.00x1.00\""
 msgstr ""
@@ -2779,6 +2802,22 @@ msgstr ""
 msgid "4 inches/sec."
 msgstr ""
 
+#: cups/ppd-cache.c:2994
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2992
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:2991
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2993
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 #: ppdc/sample.c:206
 msgid "4.00x1.00\""
 msgstr ""
@@ -3007,24 +3046,24 @@ msgstr ""
 msgid "95"
 msgstr ""
 
-#: berkeley/lpc.c:205
+#: berkeley/lpc.c:203
 msgid "?Invalid help command unknown."
 msgstr ""
 
-#: cgi-bin/admin.c:2354
+#: cgi-bin/admin.c:2352
 msgid "A Samba password is required to export printer drivers"
 msgstr ""
 
-#: cgi-bin/admin.c:2350
+#: cgi-bin/admin.c:2348
 msgid "A Samba username is required to export printer drivers"
 msgstr ""
 
-#: scheduler/ipp.c:2252
+#: scheduler/ipp.c:2298
 #, c-format
 msgid "A class named \"%s\" already exists."
 msgstr ""
 
-#: scheduler/ipp.c:915
+#: scheduler/ipp.c:917
 #, c-format
 msgid "A printer named \"%s\" already exists."
 msgstr ""
@@ -3165,24 +3204,28 @@ msgstr ""
 msgid "ARCH E Long Edge"
 msgstr ""
 
-#: cgi-bin/classes.c:161 cgi-bin/printers.c:164
+#: cgi-bin/classes.c:159 cgi-bin/printers.c:162
 msgid "Accept Jobs"
 msgstr ""
 
-#: cups/http-support.c:1347
+#: cups/http-support.c:1351
 msgid "Accepted"
 msgstr ""
 
-#: cgi-bin/admin.c:546
+#: cups/ppd-cache.c:2971
+msgid "Accordian Fold"
+msgstr ""
+
+#: cgi-bin/admin.c:544
 msgid "Add Class"
 msgstr ""
 
-#: cgi-bin/admin.c:859
+#: cgi-bin/admin.c:857
 msgid "Add Printer"
 msgstr ""
 
-#: cgi-bin/admin.c:420 cgi-bin/admin.c:453 cgi-bin/admin.c:501
-#: cgi-bin/admin.c:511
+#: cgi-bin/admin.c:418 cgi-bin/admin.c:451 cgi-bin/admin.c:499
+#: cgi-bin/admin.c:509
 msgid "Add RSS Subscription"
 msgstr ""
 
@@ -3190,15 +3233,27 @@ msgstr ""
 msgid "Address"
 msgstr ""
 
-#: cgi-bin/admin.c:186 cgi-bin/admin.c:260 cgi-bin/admin.c:2731
+#: cgi-bin/admin.c:184 cgi-bin/admin.c:258 cgi-bin/admin.c:2729
 msgid "Administration"
 msgstr ""
 
+#: cups/ppd-cache.c:3258
+msgid "Alternate"
+msgstr ""
+
+#: cups/ppd-cache.c:3266
+msgid "Alternate Roll"
+msgstr ""
+
+#: cups/ppd-cache.c:3338
+msgid "Aluminum"
+msgstr ""
+
 #: ppdc/sample.c:424
 msgid "Always"
 msgstr ""
 
-#: backend/socket.c:121
+#: backend/socket.c:119
 msgid "AppSocket/HP JetDirect"
 msgstr ""
 
@@ -3206,16 +3261,38 @@ msgstr ""
 msgid "Applicator"
 msgstr ""
 
-#: scheduler/ipp.c:998
+#: cups/ppd-cache.c:3359
+msgid "Archival Envelope"
+msgstr ""
+
+#: cups/ppd-cache.c:3371
+msgid "Archival Fabric"
+msgstr ""
+
+#: scheduler/ipp.c:1012
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
 
-#: scheduler/ipp.c:239
+#: scheduler/ipp.c:5425 scheduler/ipp.c:5451
+#, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#: scheduler/ipp.c:5427 scheduler/ipp.c:5453
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#: scheduler/ipp.c:237
 #, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr ""
 
+#: cups/ppd-cache.c:3256 cups/ppd-cache.c:3339
+msgid "Automatic"
+msgstr ""
+
 #: ppdc/sample.c:126
 msgid "B0"
 msgstr ""
@@ -3264,221 +3341,269 @@ msgstr ""
 msgid "B9"
 msgstr ""
 
-#: scheduler/ipp.c:10931
+#: cups/ppd-cache.c:3340
+msgid "Back Print Film"
+msgstr ""
+
+#: scheduler/ipp.c:11241
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr ""
 
-#: cups/dest.c:1737
+#: cups/dest.c:1846
 msgid "Bad NULL dests pointer"
 msgstr ""
 
-#: cups/ppd.c:303
+#: cups/ppd.c:320
 msgid "Bad OpenGroup"
 msgstr ""
 
-#: cups/ppd.c:305
+#: cups/ppd.c:322
 msgid "Bad OpenUI/JCLOpenUI"
 msgstr ""
 
-#: cups/ppd.c:307
+#: cups/ppd.c:324
 msgid "Bad OrderDependency"
 msgstr ""
 
-#: cups/ppd-cache.c:434 cups/ppd-cache.c:481 cups/ppd-cache.c:566
-#: cups/ppd-cache.c:572 cups/ppd-cache.c:588 cups/ppd-cache.c:604
-#: cups/ppd-cache.c:613 cups/ppd-cache.c:621 cups/ppd-cache.c:638
-#: cups/ppd-cache.c:646 cups/ppd-cache.c:661 cups/ppd-cache.c:669
-#: cups/ppd-cache.c:690 cups/ppd-cache.c:702 cups/ppd-cache.c:717
-#: cups/ppd-cache.c:729 cups/ppd-cache.c:751 cups/ppd-cache.c:759
-#: cups/ppd-cache.c:777 cups/ppd-cache.c:785 cups/ppd-cache.c:800
-#: cups/ppd-cache.c:808 cups/ppd-cache.c:826 cups/ppd-cache.c:834
-#: cups/ppd-cache.c:861 cups/ppd-cache.c:931 cups/ppd-cache.c:939
-#: cups/ppd-cache.c:947
+#: cups/ppd-cache.c:456 cups/ppd-cache.c:503 cups/ppd-cache.c:588
+#: cups/ppd-cache.c:594 cups/ppd-cache.c:610 cups/ppd-cache.c:626
+#: cups/ppd-cache.c:635 cups/ppd-cache.c:643 cups/ppd-cache.c:660
+#: cups/ppd-cache.c:668 cups/ppd-cache.c:683 cups/ppd-cache.c:691
+#: cups/ppd-cache.c:712 cups/ppd-cache.c:724 cups/ppd-cache.c:739
+#: cups/ppd-cache.c:751 cups/ppd-cache.c:773 cups/ppd-cache.c:781
+#: cups/ppd-cache.c:799 cups/ppd-cache.c:807 cups/ppd-cache.c:822
+#: cups/ppd-cache.c:830 cups/ppd-cache.c:848 cups/ppd-cache.c:856
+#: cups/ppd-cache.c:883 cups/ppd-cache.c:953 cups/ppd-cache.c:961
+#: cups/ppd-cache.c:969
 msgid "Bad PPD cache file."
 msgstr ""
 
-#: cups/http-support.c:1362
+#: scheduler/ipp.c:2673
+msgid "Bad PPD file."
+msgstr ""
+
+#: cups/http-support.c:1366
 msgid "Bad Request"
 msgstr ""
 
-#: cups/snmp.c:954
+#: cups/snmp.c:952
 msgid "Bad SNMP version number"
 msgstr ""
 
-#: cups/ppd.c:308
+#: cups/ppd.c:325
 msgid "Bad UIConstraints"
 msgstr ""
 
-#: cups/http-support.c:1456
+#: cups/hash.c:51 cups/http-support.c:1460
 msgid "Bad arguments to function"
 msgstr ""
 
-#: scheduler/ipp.c:1368
+#: scheduler/ipp.c:1397
 #, c-format
 msgid "Bad copies value %d."
 msgstr ""
 
-#: cups/ppd.c:316
+#: cups/ppd.c:333
 msgid "Bad custom parameter"
 msgstr ""
 
-#: cups/http-support.c:1598 scheduler/ipp.c:2347
+#: cups/http-support.c:1600 scheduler/ipp.c:2378
 #, c-format
 msgid "Bad device-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2386
+#: scheduler/ipp.c:2423
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8143 scheduler/ipp.c:8161 scheduler/ipp.c:9387
+#: scheduler/ipp.c:8449 scheduler/ipp.c:8467 scheduler/ipp.c:9695
 #, c-format
 msgid "Bad document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9405
+#: scheduler/ipp.c:9713
 #, c-format
 msgid "Bad document-format-default \"%s\"."
 msgstr ""
 
-#: cups/util.c:823
+#: cups/ppd-util.c:170
 msgid "Bad filename buffer"
 msgstr ""
 
-#: cups/http-support.c:1465
+#: cups/http-support.c:1469
 msgid "Bad hostname/address in URI"
 msgstr ""
 
-#: scheduler/ipp.c:1543
+#: scheduler/ipp.c:1572
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr ""
 
-#: scheduler/ipp.c:1536
+#: scheduler/ipp.c:1565
 msgid "Bad job-name value: Wrong type or count."
 msgstr ""
 
-#: scheduler/ipp.c:10001
+#: scheduler/ipp.c:10309
 msgid "Bad job-priority value."
 msgstr ""
 
-#: scheduler/ipp.c:1398
+#: scheduler/ipp.c:1427
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1382
+#: scheduler/ipp.c:1411
 msgid "Bad job-sheets value type."
 msgstr ""
 
-#: scheduler/ipp.c:10031
+#: scheduler/ipp.c:10339
 msgid "Bad job-state value."
 msgstr ""
 
-#: 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
+#: scheduler/ipp.c:3008 scheduler/ipp.c:3470 scheduler/ipp.c:6234
+#: scheduler/ipp.c:6381 scheduler/ipp.c:7878 scheduler/ipp.c:8147
+#: scheduler/ipp.c:9013 scheduler/ipp.c:9237 scheduler/ipp.c:9589
+#: scheduler/ipp.c:10202
 #, c-format
 msgid "Bad job-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2018 scheduler/ipp.c:5475
+#: scheduler/ipp.c:2064 scheduler/ipp.c:5773
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1982 scheduler/ipp.c:5439
+#: scheduler/ipp.c:2028 scheduler/ipp.c:5737
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1414
+#: scheduler/ipp.c:1443
 #, c-format
 msgid "Bad number-up value %d."
 msgstr ""
 
-#: cups/adminutil.c:281
+#: cups/adminutil.c:280
 #, c-format
 msgid "Bad option + choice on line %d."
 msgstr ""
 
-#: scheduler/ipp.c:1431
+#: scheduler/ipp.c:1460
 #, c-format
 msgid "Bad page-ranges values %d-%d."
 msgstr ""
 
-#: cups/http-support.c:1462
+#: cups/http-support.c:1466
 msgid "Bad port number in URI"
 msgstr ""
 
-#: scheduler/ipp.c:2429
+#: scheduler/ipp.c:2469
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:2490
+#: scheduler/ipp.c:2550
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr ""
 
-#: cups/dest.c:610 cups/dest.c:1297 cups/dest.c:1344
+#: cups/dest.c:649 cups/dest.c:1406 cups/dest.c:1453
 msgid "Bad printer-uri."
 msgstr ""
 
-#: scheduler/ipp.c:207
+#: scheduler/ipp.c:205
 #, c-format
 msgid "Bad request ID %d."
 msgstr ""
 
-#: scheduler/ipp.c:192
+#: scheduler/ipp.c:190
 #, c-format
 msgid "Bad request version number %d.%d."
 msgstr ""
 
-#: cups/http-support.c:1459
+#: cups/http-support.c:1463
 msgid "Bad resource in URI"
 msgstr ""
 
-#: cups/http-support.c:1471
+#: cups/http-support.c:1475
 msgid "Bad scheme in URI"
 msgstr ""
 
-#: cgi-bin/admin.c:1470
+#: cgi-bin/admin.c:1468
 msgid "Bad subscription ID"
 msgstr ""
 
-#: cups/http-support.c:1468
+#: cups/http-support.c:1472
 msgid "Bad username in URI"
 msgstr ""
 
-#: cups/ppd.c:318
+#: cups/ppd.c:335
 msgid "Bad value string"
 msgstr ""
 
-#: cups/http-support.c:1474
+#: cups/http-support.c:1478
 msgid "Bad/empty URI"
 msgstr ""
 
-#: cgi-bin/admin.c:3276 cgi-bin/admin.c:3522
+#: cups/ppd-cache.c:2956
+msgid "Bale"
+msgstr ""
+
+#: cgi-bin/admin.c:3274 cgi-bin/admin.c:3520
 msgid "Banners"
 msgstr ""
 
+#: cups/ppd-cache.c:2957
+msgid "Bind"
+msgstr ""
+
+#: cups/ppd-cache.c:2961
+msgid "Bind (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2959
+msgid "Bind (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:2958
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2960
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3360
+msgid "Bond Envelope"
+msgstr ""
+
 #: ppdc/sample.c:282
 msgid "Bond Paper"
 msgstr ""
 
-#: backend/usb-darwin.c:2024
+#: cups/ppd-cache.c:2962
+msgid "Booklet Maker"
+msgstr ""
+
+#: backend/usb-darwin.c:2014
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr ""
 
-#: filter/pstops.c:2034
+#: cups/ppd-cache.c:3269
+msgid "Bottom"
+msgstr ""
+
+#: filter/pstops.c:2032
 msgid "Buffer overflow detected, aborting."
 msgstr ""
 
+#: cups/ppd-cache.c:3343
+msgid "CD"
+msgstr ""
+
 #: ppdc/sample.c:277
 msgid "CMYK"
 msgstr ""
@@ -3487,96 +3612,153 @@ msgstr ""
 msgid "CPCL Label Printer"
 msgstr ""
 
-#: cgi-bin/classes.c:165 cgi-bin/printers.c:168
+#: cgi-bin/classes.c:163 cgi-bin/printers.c:166
 msgid "Cancel Jobs"
 msgstr ""
 
-#: cgi-bin/admin.c:1471 cgi-bin/admin.c:1510 cgi-bin/admin.c:1520
+#: cgi-bin/admin.c:1469 cgi-bin/admin.c:1508 cgi-bin/admin.c:1518
 msgid "Cancel RSS Subscription"
 msgstr ""
 
-#: backend/ipp.c:2206
+#: backend/ipp.c:2268
 msgid "Canceling print job."
 msgstr ""
 
-#: scheduler/ipp.c:2470
+#: scheduler/ipp.c:988 scheduler/ipp.c:2525
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
+#: scheduler/ipp.c:2512
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
+#: cups/ppd-cache.c:3341
+msgid "Cardboard"
+msgstr ""
+
+#: cups/ppd-cache.c:3342
+msgid "Cardstock"
+msgstr ""
+
 #: ppdc/sample.c:271
 msgid "Cassette"
 msgstr ""
 
-#: cgi-bin/admin.c:1641 cgi-bin/admin.c:1783 cgi-bin/admin.c:1796
-#: cgi-bin/admin.c:1807
+#: cups/ppd-cache.c:3273
+msgid "Center"
+msgstr ""
+
+#: cgi-bin/admin.c:1639 cgi-bin/admin.c:1781 cgi-bin/admin.c:1794
+#: cgi-bin/admin.c:1805
 msgid "Change Settings"
 msgstr ""
 
-#: scheduler/ipp.c:2030 scheduler/ipp.c:5487
+#: scheduler/ipp.c:2076 scheduler/ipp.c:5785
 #, c-format
 msgid "Character set \"%s\" not supported."
 msgstr ""
 
-#: cgi-bin/classes.c:187 cgi-bin/classes.c:314
+#: cgi-bin/classes.c:185 cgi-bin/classes.c:311
 msgid "Classes"
 msgstr ""
 
-#: cgi-bin/printers.c:174
+#: cgi-bin/printers.c:172
 msgid "Clean Print Heads"
 msgstr ""
 
-#: scheduler/ipp.c:3884
+#: scheduler/ipp.c:3922
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr ""
 
-#: ppdc/sample.c:276
+#: cups/ppd-cache.c:2963
+msgid "Coat"
+msgstr ""
+
+#: cups/ppd-cache.c:3361
+msgid "Coated Envelope"
+msgstr ""
+
+#: cups/ppd-cache.c:3444
+msgid "Coated Paper"
+msgstr ""
+
+#: cups/ppd-cache.c:3521 ppdc/sample.c:276
 msgid "Color"
 msgstr ""
 
+#: cups/ppd-cache.c:3497 cups/ppd-cache.c:3508 cups/ppd-cache.c:3519
 #: ppdc/sample.c:274
 msgid "Color Mode"
 msgstr ""
 
-#: berkeley/lpc.c:196
+#: cups/ppd-cache.c:3392
+msgid "Colored Labels"
+msgstr ""
+
+#: berkeley/lpc.c:194
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
 "exit    help    quit    status  ?"
 msgstr ""
 
-#: cups/snmp.c:958
+#: cups/snmp.c:956
 msgid "Community name uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:858 backend/lpd.c:879 backend/socket.c:400
+#: backend/ipp.c:892 backend/lpd.c:953 backend/socket.c:398
 msgid "Connected to printer."
 msgstr ""
 
-#: backend/ipp.c:763 backend/lpd.c:702 backend/socket.c:319
+#: backend/ipp.c:727 backend/lpd.c:776 backend/socket.c:317
 msgid "Connecting to printer."
 msgstr ""
 
-#: cups/http-support.c:1335
+#: cups/http-support.c:1339
 msgid "Continue"
 msgstr ""
 
-#: ppdc/sample.c:360
+#: cups/ppd-cache.c:3344 ppdc/sample.c:360
 msgid "Continuous"
 msgstr ""
 
-#: backend/lpd.c:1028 backend/lpd.c:1160
+#: cups/ppd-cache.c:3345
+msgid "Continuous Long"
+msgstr ""
+
+#: cups/ppd-cache.c:3346
+msgid "Continuous Short"
+msgstr ""
+
+#: backend/lpd.c:1102 backend/lpd.c:1234
 msgid "Control file sent successfully."
 msgstr ""
 
-#: backend/ipp.c:1358 backend/lpd.c:472
+#: backend/ipp.c:1416 backend/lpd.c:468
 msgid "Copying print data."
 msgstr ""
 
-#: cups/http-support.c:1344
+#: cups/ppd-cache.c:3362
+msgid "Cotton Envelope"
+msgstr ""
+
+#: cups/ppd-cache.c:2964
+msgid "Cover"
+msgstr ""
+
+#: cups/http-support.c:1348
 msgid "Created"
 msgstr ""
 
-#: cups/ppd.c:1069 cups/ppd.c:1109 cups/ppd.c:1354 cups/ppd.c:1457
+#: cups/tls-darwin.c:726 cups/tls-gnutls.c:560
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+#: cups/tls-darwin.c:737 cups/tls-gnutls.c:577
+msgid "Credentials have expired."
+msgstr ""
+
+#: cups/ppd.c:1136 cups/ppd.c:1176 cups/ppd.c:1421 cups/ppd.c:1524
 msgid "Custom"
 msgstr ""
 
@@ -3592,10 +3774,18 @@ msgstr ""
 msgid "Cut"
 msgstr ""
 
+#: cups/ppd-cache.c:3015
+msgid "Cut Media"
+msgstr ""
+
 #: ppdc/sample.c:446
 msgid "Cutter"
 msgstr ""
 
+#: cups/ppd-cache.c:3355
+msgid "DVD"
+msgstr ""
+
 #: ppdc/sample.c:239
 msgid "Dark"
 msgstr ""
@@ -3604,15 +3794,15 @@ msgstr ""
 msgid "Darkness"
 msgstr ""
 
-#: backend/lpd.c:1113
+#: backend/lpd.c:1187
 msgid "Data file sent successfully."
 msgstr ""
 
-#: cgi-bin/admin.c:2080 cgi-bin/admin.c:2091 cgi-bin/admin.c:2136
+#: cgi-bin/admin.c:2078 cgi-bin/admin.c:2089 cgi-bin/admin.c:2134
 msgid "Delete Class"
 msgstr ""
 
-#: cgi-bin/admin.c:2165 cgi-bin/admin.c:2176 cgi-bin/admin.c:2221
+#: cgi-bin/admin.c:2163 cgi-bin/admin.c:2174 cgi-bin/admin.c:2219
 msgid "Delete Printer"
 msgstr ""
 
@@ -3620,12 +3810,12 @@ msgstr ""
 msgid "DeskJet Series"
 msgstr ""
 
-#: scheduler/ipp.c:1297
+#: scheduler/ipp.c:1326
 #, c-format
 msgid "Destination \"%s\" is not accepting jobs."
 msgstr ""
 
-#: systemv/lpinfo.c:300
+#: systemv/lpinfo.c:273
 #, c-format
 msgid ""
 "Device: uri = %s\n"
@@ -3640,27 +3830,27 @@ msgstr ""
 msgid "Direct Thermal Media"
 msgstr ""
 
-#: cups/file.c:258
+#: cups/file.c:256
 #, c-format
 msgid "Directory \"%s\" contains a relative path."
 msgstr ""
 
-#: cups/file.c:230
+#: cups/file.c:228
 #, c-format
 msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-#: cups/file.c:247
+#: cups/file.c:245
 #, c-format
 msgid "Directory \"%s\" is a file."
 msgstr ""
 
-#: cups/file.c:218
+#: cups/file.c:216
 #, c-format
 msgid "Directory \"%s\" not available: %s"
 msgstr ""
 
-#: cups/file.c:203
+#: cups/file.c:201
 #, c-format
 msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr ""
@@ -3669,11 +3859,47 @@ msgstr ""
 msgid "Disabled"
 msgstr ""
 
-#: scheduler/ipp.c:5986
+#: cups/ppd-cache.c:3262
+msgid "Disc"
+msgstr ""
+
+#: scheduler/ipp.c:6283
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr ""
 
+#: cups/ppd-cache.c:2972
+msgid "Double Gate Fold"
+msgstr ""
+
+#: cups/ppd-cache.c:3008
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:3006
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3005
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:3007
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3353
+msgid "Double Wall Cardboard"
+msgstr ""
+
+#: cups/ppd-cache.c:3696 cups/ppd-cache.c:3748
+msgid "Draft"
+msgstr ""
+
+#: cups/ppd-cache.c:3354
+msgid "Dry Film"
+msgstr ""
+
 #: ppdc/sample.c:267
 msgid "Duplexer"
 msgstr ""
@@ -3690,22 +3916,30 @@ msgstr ""
 msgid "EPL2 Label Printer"
 msgstr ""
 
-#: cgi-bin/admin.c:1835 cgi-bin/admin.c:1847 cgi-bin/admin.c:1901
-#: cgi-bin/admin.c:1908 cgi-bin/admin.c:1943 cgi-bin/admin.c:1956
-#: cgi-bin/admin.c:1980 cgi-bin/admin.c:2053
+#: cgi-bin/admin.c:1833 cgi-bin/admin.c:1845 cgi-bin/admin.c:1899
+#: cgi-bin/admin.c:1906 cgi-bin/admin.c:1941 cgi-bin/admin.c:1954
+#: cgi-bin/admin.c:1978 cgi-bin/admin.c:2051
 msgid "Edit Configuration File"
 msgstr ""
 
-#: cups/adminutil.c:326
+#: cups/ppd-cache.c:3356
+msgid "Embossing Foil"
+msgstr ""
+
+#: cups/adminutil.c:325
 msgid "Empty PPD file."
 msgstr ""
 
-#: cups/http.c:4648
+#: cups/http.c:4614
 msgid "Encryption is not supported."
 msgstr ""
 
+#: cups/ppd-cache.c:3357
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
-#: cgi-bin/admin.c:3547
+#: cgi-bin/admin.c:3545
 msgid "Ending Banner"
 msgstr ""
 
@@ -3713,12 +3947,16 @@ msgstr ""
 msgid "English"
 msgstr ""
 
-#: scheduler/client.c:2226
+#: scheduler/client.c:2224
 msgid "Enter your username and password or the root username and password to access this page. If you are using Kerberos authentication, make sure you have a valid Kerberos ticket."
 msgstr ""
 
+#: cups/ppd-cache.c:3261 cups/ppd-cache.c:3358
+msgid "Envelope"
+msgstr ""
+
 #: ppdc/sample.c:73
-msgid "Envelope #10 "
+msgid "Envelope #10"
 msgstr ""
 
 #: ppdc/sample.c:74
@@ -3838,7 +4076,7 @@ msgid "Envelope Monarch"
 msgstr ""
 
 #: ppdc/sample.c:99
-msgid "Envelope PRC1 "
+msgid "Envelope PRC1"
 msgstr ""
 
 #: ppdc/sample.c:100
@@ -3929,7 +4167,7 @@ msgstr ""
 msgid "Envelope You4 Long Edge"
 msgstr ""
 
-#: test/ippfind.c:2817
+#: test/ippfind.c:2815
 msgid "Environment Variables:"
 msgstr ""
 
@@ -3937,20 +4175,20 @@ msgstr ""
 msgid "Epson"
 msgstr ""
 
-#: cgi-bin/admin.c:3590
+#: cgi-bin/admin.c:3588
 msgid "Error Policy"
 msgstr ""
 
-#: filter/rastertopwg.c:423
+#: filter/rastertopwg.c:449
 msgid "Error reading raster data."
 msgstr ""
 
-#: filter/rastertopwg.c:395 filter/rastertopwg.c:413 filter/rastertopwg.c:431
-#: filter/rastertopwg.c:442
+#: filter/rastertopwg.c:421 filter/rastertopwg.c:439 filter/rastertopwg.c:457
+#: filter/rastertopwg.c:468
 msgid "Error sending raster data."
 msgstr ""
 
-#: systemv/lpinfo.c:103 systemv/lpmove.c:88
+#: systemv/lpinfo.c:208 systemv/lpmove.c:86
 msgid "Error: need hostname after \"-h\" option."
 msgstr ""
 
@@ -3998,28 +4236,32 @@ msgstr ""
 msgid "Executive"
 msgstr ""
 
-#: cups/http-support.c:1390
+#: cups/http-support.c:1394
 msgid "Expectation Failed"
 msgstr ""
 
-#: cgi-bin/admin.c:2342 cgi-bin/admin.c:2361
+#: cgi-bin/admin.c:2340 cgi-bin/admin.c:2359
 msgid "Export Printers to Samba"
 msgstr ""
 
-#: test/ippfind.c:2763
+#: test/ippfind.c:2761
 msgid "Expressions:"
 msgstr ""
 
-#: systemv/cupstestdsc.c:172 systemv/cupstestdsc.c:189
-#: systemv/cupstestdsc.c:214 systemv/cupstestdsc.c:231
-#: systemv/cupstestdsc.c:255 systemv/cupstestdsc.c:273
-#: systemv/cupstestdsc.c:302 systemv/cupstestdsc.c:339
-#: systemv/cupstestdsc.c:349 systemv/cupstestdsc.c:359
-#: systemv/cupstestdsc.c:369 systemv/cupstestdsc.c:379
-#: systemv/cupstestdsc.c:387
+#: systemv/cupstestdsc.c:164 systemv/cupstestdsc.c:181
+#: systemv/cupstestdsc.c:206 systemv/cupstestdsc.c:223
+#: systemv/cupstestdsc.c:247 systemv/cupstestdsc.c:265
+#: systemv/cupstestdsc.c:294 systemv/cupstestdsc.c:331
+#: systemv/cupstestdsc.c:341 systemv/cupstestdsc.c:351
+#: systemv/cupstestdsc.c:361 systemv/cupstestdsc.c:371
+#: systemv/cupstestdsc.c:379
 msgid "FAIL"
 msgstr ""
 
+#: cups/ppd-cache.c:3370
+msgid "Fabric"
+msgstr ""
+
 #: ppdc/sample.c:122
 msgid "FanFold German"
 msgstr ""
@@ -4032,55 +4274,99 @@ msgstr ""
 msgid "Fanfold US"
 msgstr ""
 
-#: cups/file.c:262
+#: cups/ppd-cache.c:3499
+msgid "Fast Grayscale"
+msgstr ""
+
+#: cups/file.c:260
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr ""
 
-#: cups/file.c:237
+#: cups/file.c:235
 #, c-format
 msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-#: cups/file.c:251
+#: cups/file.c:249
 #, c-format
 msgid "File \"%s\" is a directory."
 msgstr ""
 
-#: cups/file.c:223
+#: cups/file.c:221
 #, c-format
 msgid "File \"%s\" not available: %s"
 msgstr ""
 
-#: cups/file.c:209
+#: cups/file.c:207
 #, c-format
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr ""
 
 #: ppdc/sample.c:169
-msgid "File Folder "
+msgid "File Folder"
 msgstr ""
 
-#: scheduler/ipp.c:2365
+#: scheduler/ipp.c:2399
 #, c-format
 msgid "File device URIs have been disabled. To enable, see the FileDevice directive in \"%s/cups-files.conf\"."
 msgstr ""
 
-#: filter/rastertoepson.c:1114 filter/rastertohp.c:834
-#: filter/rastertolabel.c:1259
+#: cups/ppd-cache.c:3377
+msgid "Film"
+msgstr ""
+
+#: cups/ppd-cache.c:3363
+msgid "Fine Envelope"
+msgstr ""
+
+#: filter/rastertoepson.c:1136 filter/rastertohp.c:808
+#: filter/rastertolabel.c:1244
 #, c-format
 msgid "Finished page %d."
 msgstr ""
 
+#: cups/ppd-cache.c:3612 cups/ppd-cache.c:3657
+msgid "Finishing"
+msgstr ""
+
+#: cups/ppd-cache.c:3378
+msgid "Flexo Base"
+msgstr ""
+
+#: cups/ppd-cache.c:3379
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+#: cups/ppd-cache.c:3380
+msgid "Flute"
+msgstr ""
+
+#: cups/ppd-cache.c:3381
+msgid "Foil"
+msgstr ""
+
+#: cups/ppd-cache.c:2970
+msgid "Fold"
+msgstr ""
+
 #: ppdc/sample.c:125
 msgid "Folio"
 msgstr ""
 
-#: cups/http-support.c:1369
+#: cups/http-support.c:1373
 msgid "Forbidden"
 msgstr ""
 
-#: cups/ppd.c:700 cups/ppd.c:1258
+#: cups/ppd-cache.c:3382
+msgid "Full Cut Tabs"
+msgstr ""
+
+#: cups/ppd-cache.c:2973
+msgid "Gate Fold"
+msgstr ""
+
+#: cups/ppd.c:767 cups/ppd.c:1325
 msgid "General"
 msgstr ""
 
@@ -4088,22 +4374,62 @@ msgstr ""
 msgid "Generic"
 msgstr ""
 
-#: cups/snmp.c:968
+#: cups/snmp.c:966
 msgid "Get-Response-PDU uses indefinite length"
 msgstr ""
 
+#: cups/ppd-cache.c:3383
+msgid "Glass"
+msgstr ""
+
+#: cups/ppd-cache.c:3384
+msgid "Glass Colored"
+msgstr ""
+
+#: cups/ppd-cache.c:3385
+msgid "Glass Opaque"
+msgstr ""
+
+#: cups/ppd-cache.c:3386
+msgid "Glass Surfaced"
+msgstr ""
+
+#: cups/ppd-cache.c:3387
+msgid "Glass Textured"
+msgstr ""
+
+#: cups/ppd-cache.c:3372
+msgid "Glossy Fabric"
+msgstr ""
+
+#: cups/ppd-cache.c:3393
+msgid "Glossy Labels"
+msgstr ""
+
+#: cups/ppd-cache.c:3348
+msgid "Glossy Optical Disc"
+msgstr ""
+
 #: ppdc/sample.c:285
 msgid "Glossy Paper"
 msgstr ""
 
-#: 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
+#: cups/ppd-cache.c:3417
+msgid "Glossy Photo Paper"
+msgstr ""
+
+#: scheduler/ipp.c:2986 scheduler/ipp.c:3396 scheduler/ipp.c:3934
+#: scheduler/ipp.c:6212 scheduler/ipp.c:6359 scheduler/ipp.c:7855
+#: scheduler/ipp.c:8991 scheduler/ipp.c:9215 scheduler/ipp.c:9567
+#: scheduler/ipp.c:10180
 msgid "Got a printer-uri attribute but no job-id."
 msgstr ""
 
-#: ppdc/sample.c:275
+#: cups/ppd-cache.c:3388
+msgid "Gravure Cylinder"
+msgstr ""
+
+#: cups/ppd-cache.c:3510 ppdc/sample.c:275
 msgid "Grayscale"
 msgstr ""
 
@@ -4111,103 +4437,147 @@ msgstr ""
 msgid "HP"
 msgstr ""
 
+#: cups/ppd-cache.c:3264
+msgid "Hagaki"
+msgstr ""
+
+#: cups/ppd-cache.c:2974
+msgid "Half Fold"
+msgstr ""
+
+#: cups/ppd-cache.c:2975
+msgid "Half Z Fold"
+msgstr ""
+
 #: ppdc/sample.c:170
 msgid "Hanging Folder"
 msgstr ""
 
-#: cgi-bin/help.c:143
+#: cups/hash.c:243
+msgid "Hash buffer too small."
+msgstr ""
+
+#: cups/ppd-cache.c:3364
+msgid "Heavyweight Envelope"
+msgstr ""
+
+#: cups/ppd-cache.c:3447
+msgid "Heavyweight Paper"
+msgstr ""
+
+#: cgi-bin/help.c:137
 msgid "Help file not in index."
 msgstr ""
 
-#: cups/ipp.c:3183 cups/ipp.c:3210 cups/ipp.c:3233
+#: cups/ppd-cache.c:3703 cups/ppd-cache.c:3751
+msgid "High"
+msgstr ""
+
+#: cups/ppd-cache.c:3373
+msgid "High Gloss Fabric"
+msgstr ""
+
+#: cups/ppd-cache.c:3394
+msgid "High Gloss Labels"
+msgstr ""
+
+#: cups/ppd-cache.c:3349
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+#: cups/ppd-cache.c:3418
+msgid "High Gloss Photo Paper"
+msgstr ""
+
+#: cups/ipp.c:3143 cups/ipp.c:3170 cups/ipp.c:3193
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr ""
 
-#: cups/ipp.c:3146
+#: cups/ipp.c:3106
 msgid "IPP attribute has no name."
 msgstr ""
 
-#: cups/ipp.c:7016
+#: cups/ipp.c:6970
 msgid "IPP attribute is not a member of the message."
 msgstr ""
 
-#: cups/ipp.c:3594
+#: cups/ipp.c:3552
 msgid "IPP begCollection value not 0 bytes."
 msgstr ""
 
-#: cups/ipp.c:3376
+#: cups/ipp.c:3334
 msgid "IPP boolean value not 1 byte."
 msgstr ""
 
-#: cups/ipp.c:3437
+#: cups/ipp.c:3395
 msgid "IPP date value not 11 bytes."
 msgstr ""
 
-#: cups/ipp.c:3615
+#: cups/ipp.c:3573
 msgid "IPP endCollection value not 0 bytes."
 msgstr ""
 
-#: cups/ipp.c:3351
+#: cups/ipp.c:3309
 msgid "IPP enum value not 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3075
+#: cups/ipp.c:3036
 msgid "IPP extension tag larger than 0x7FFFFFFF."
 msgstr ""
 
-#: cups/ipp.c:3348
+#: cups/ipp.c:3306
 msgid "IPP integer value not 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3547
+#: cups/ipp.c:3505
 msgid "IPP language length overflows value."
 msgstr ""
 
-#: cups/ipp.c:3556
+#: cups/ipp.c:3514
 msgid "IPP language length too large."
 msgstr ""
 
-#: cups/ipp.c:3260
+#: cups/ipp.c:3220
 msgid "IPP member name is not empty."
 msgstr ""
 
-#: cups/ipp.c:3641
+#: cups/ipp.c:3599
 msgid "IPP memberName value is empty."
 msgstr ""
 
-#: cups/ipp.c:3633
+#: cups/ipp.c:3591
 msgid "IPP memberName with no attribute."
 msgstr ""
 
-#: cups/ipp.c:3129
+#: cups/ipp.c:3089
 msgid "IPP name larger than 32767 bytes."
 msgstr ""
 
-#: cups/ipp.c:3514
+#: cups/ipp.c:3472
 msgid "IPP nameWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3671
+#: cups/ipp.c:3629
 msgid "IPP octetString length too large."
 msgstr ""
 
-#: cups/ipp.c:3482
+#: cups/ipp.c:3440
 msgid "IPP rangeOfInteger value not 8 bytes."
 msgstr ""
 
-#: cups/ipp.c:3455
+#: cups/ipp.c:3413
 msgid "IPP resolution value not 9 bytes."
 msgstr ""
 
-#: cups/ipp.c:3574
+#: cups/ipp.c:3532
 msgid "IPP string length overflows value."
 msgstr ""
 
-#: cups/ipp.c:3510
+#: cups/ipp.c:3468
 msgid "IPP textWithLanguage value less than minimum 4 bytes."
 msgstr ""
 
-#: cups/ipp.c:3334
+#: cups/ipp.c:3292
 msgid "IPP value larger than 32767 bytes."
 msgstr ""
 
@@ -4215,26 +4585,42 @@ msgstr ""
 msgid "ISOLatin1"
 msgstr ""
 
-#: cups/ppd.c:311
+#: cups/ppd.c:328
 msgid "Illegal control character"
 msgstr ""
 
-#: cups/ppd.c:312
+#: cups/ppd.c:329
 msgid "Illegal main keyword string"
 msgstr ""
 
-#: cups/ppd.c:313
+#: cups/ppd.c:330
 msgid "Illegal option keyword string"
 msgstr ""
 
-#: cups/ppd.c:314
+#: cups/ppd.c:331
 msgid "Illegal translation string"
 msgstr ""
 
-#: cups/ppd.c:315
+#: cups/ppd.c:332
 msgid "Illegal whitespace character"
 msgstr ""
 
+#: cups/ppd-cache.c:3389
+msgid "Image Setter Paper"
+msgstr ""
+
+#: cups/ppd-cache.c:3390
+msgid "Imaging Cylinder"
+msgstr ""
+
+#: cups/ppd-cache.c:3365
+msgid "Inkjet Envelope"
+msgstr ""
+
+#: cups/ppd-cache.c:3395
+msgid "Inkjet Labels"
+msgstr ""
+
 #: ppdc/sample.c:266
 msgid "Installable Options"
 msgstr ""
@@ -4251,11 +4637,11 @@ msgstr ""
 msgid "Intellitech"
 msgstr ""
 
-#: cups/http-support.c:1396
+#: cups/http-support.c:1400
 msgid "Internal Server Error"
 msgstr ""
 
-#: cups/ppd.c:302
+#: cups/ppd.c:319
 msgid "Internal error"
 msgstr ""
 
@@ -4267,24 +4653,28 @@ msgstr ""
 msgid "Internet Postage 3-Part"
 msgstr ""
 
-#: backend/ipp.c:323
+#: backend/ipp.c:325
 msgid "Internet Printing Protocol"
 msgstr ""
 
-#: cups/pwg-media.c:293 cups/pwg-media.c:312
+#: cups/pwg-media.c:291 cups/pwg-media.c:310
 msgid "Invalid media name arguments."
 msgstr ""
 
-#: cups/dest-options.c:1032
+#: cups/dest-options.c:1031
 msgid "Invalid media size."
 msgstr ""
 
-#: filter/commandtops.c:114
+#: scheduler/ipp.c:2719 scheduler/ipp.c:7026
+msgid "Invalid ppd-name value."
+msgstr ""
+
+#: filter/commandtops.c:112
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr ""
 
-#: cups/ppd.c:1376
+#: cups/ppd.c:1443
 msgid "JCL"
 msgstr ""
 
@@ -4344,93 +4734,97 @@ msgstr ""
 msgid "JIS B9"
 msgstr ""
 
-#: scheduler/ipp.c:8979
+#: scheduler/ipp.c:9287
 #, 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: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
+#: scheduler/ipp.c:3026 scheduler/ipp.c:3260 scheduler/ipp.c:3319
+#: scheduler/ipp.c:3498 scheduler/ipp.c:3944 scheduler/ipp.c:5871
+#: scheduler/ipp.c:6252 scheduler/ipp.c:6399 scheduler/ipp.c:6736
+#: scheduler/ipp.c:7696 scheduler/ipp.c:7718 scheduler/ipp.c:7896
+#: scheduler/ipp.c:8121 scheduler/ipp.c:8164 scheduler/ipp.c:9031
+#: scheduler/ipp.c:9255 scheduler/ipp.c:9607 scheduler/ipp.c:10220
 #, c-format
 msgid "Job #%d does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:3492
+#: scheduler/ipp.c:3530
 #, c-format
 msgid "Job #%d is already aborted - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:3486
+#: scheduler/ipp.c:3524
 #, c-format
 msgid "Job #%d is already canceled - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:3498
+#: scheduler/ipp.c:3536
 #, c-format
 msgid "Job #%d is already completed - can't cancel."
 msgstr ""
 
-#: scheduler/ipp.c:7616 scheduler/ipp.c:7900 scheduler/ipp.c:9927
+#: scheduler/ipp.c:7922 scheduler/ipp.c:8206 scheduler/ipp.c:10235
 #, c-format
 msgid "Job #%d is finished and cannot be altered."
 msgstr ""
 
-#: scheduler/ipp.c:8961
+#: scheduler/ipp.c:9269
 #, c-format
 msgid "Job #%d is not complete."
 msgstr ""
 
-#: scheduler/ipp.c:3003
+#: scheduler/ipp.c:3041
 #, c-format
 msgid "Job #%d is not held for authentication."
 msgstr ""
 
-#: scheduler/ipp.c:8737
+#: scheduler/ipp.c:9045
 #, c-format
 msgid "Job #%d is not held."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1038
+#: cgi-bin/ipp-var.c:1036
 msgid "Job Completed"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1036
+#: cgi-bin/ipp-var.c:1034
 msgid "Job Created"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1042
+#: cgi-bin/ipp-var.c:1040
 msgid "Job Options Changed"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1040
+#: cgi-bin/ipp-var.c:1038
 msgid "Job Stopped"
 msgstr ""
 
-#: scheduler/ipp.c:10009
+#: scheduler/ipp.c:10317
 msgid "Job is completed and cannot be changed."
 msgstr ""
 
-#: cgi-bin/jobs.c:192
+#: cgi-bin/jobs.c:190
 msgid "Job operation failed"
 msgstr ""
 
-#: scheduler/ipp.c:10045 scheduler/ipp.c:10062 scheduler/ipp.c:10073
+#: scheduler/ipp.c:10353 scheduler/ipp.c:10370 scheduler/ipp.c:10381
 msgid "Job state cannot be changed."
 msgstr ""
 
-#: scheduler/ipp.c:8827
+#: scheduler/ipp.c:9135
 msgid "Job subscriptions cannot be renewed."
 msgstr ""
 
-#: cgi-bin/jobs.c:97 cgi-bin/jobs.c:108 cgi-bin/jobs.c:189
+#: cgi-bin/jobs.c:95 cgi-bin/jobs.c:106 cgi-bin/jobs.c:187
 msgid "Jobs"
 msgstr ""
 
-#: backend/lpd.c:177
+#: cups/ppd-cache.c:2982
+msgid "Jog"
+msgstr ""
+
+#: backend/lpd.c:173
 msgid "LPD/LPR Host or Printer"
 msgstr ""
 
@@ -4442,7 +4836,19 @@ msgstr ""
 msgid "Label Top"
 msgstr ""
 
-#: scheduler/ipp.c:2039 scheduler/ipp.c:5496
+#: cups/ppd-cache.c:3391
+msgid "Labels"
+msgstr ""
+
+#: cups/ppd-cache.c:2983
+msgid "Laminate"
+msgstr ""
+
+#: cups/ppd-cache.c:3401
+msgid "Laminating Foil"
+msgstr ""
+
+#: scheduler/ipp.c:2085 scheduler/ipp.c:5794
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr ""
@@ -4451,10 +4857,26 @@ msgstr ""
 msgid "Large Address"
 msgstr ""
 
+#: cups/ppd-cache.c:3259
+msgid "Large Capacity"
+msgstr ""
+
 #: ppdc/sample.c:286
 msgid "LaserJet Series PCL 4/5"
 msgstr ""
 
+#: cups/ppd-cache.c:3271
+msgid "Left"
+msgstr ""
+
+#: cups/ppd-cache.c:2976
+msgid "Left Gate Fold"
+msgstr ""
+
+#: cups/ppd-cache.c:2977
+msgid "Letter Fold"
+msgstr ""
+
 #: ppdc/sample.c:43
 msgid "Letter Oversize"
 msgstr ""
@@ -4463,39 +4885,83 @@ msgstr ""
 msgid "Letter Oversize Long Edge"
 msgstr ""
 
+#: cups/ppd-cache.c:3402 cups/ppd-cache.c:3450
+msgid "Letterhead"
+msgstr ""
+
 #: ppdc/sample.c:236
 msgid "Light"
 msgstr ""
 
-#: cups/ppd.c:310
+#: cups/ppd-cache.c:3366
+msgid "Lightweight Envelope"
+msgstr ""
+
+#: cups/ppd-cache.c:3451
+msgid "Lightweight Paper"
+msgstr ""
+
+#: cups/ppd.c:327
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr ""
 
-#: cgi-bin/admin.c:2379
+#: cgi-bin/admin.c:2377
 msgid "List Available Printers"
 msgstr ""
 
-#: cups/localize.c:291
+#: cups/ppd-localize.c:289
 msgid "Load paper."
 msgstr ""
 
-#: ppdc/sample.c:264
+#: scheduler/ipp.c:5503
+msgid "Local printer created."
+msgstr ""
+
+#: cups/ppd-cache.c:3546 ppdc/sample.c:264
 msgid "Long-Edge (Portrait)"
 msgstr ""
 
-#: cups/http-support.c:1725
-msgid "Looking for printer..."
+#: cups/http-support.c:1727
+msgid "Looking for printer."
+msgstr ""
+
+#: cups/ppd-cache.c:3257
+msgid "Main"
+msgstr ""
+
+#: cups/ppd-cache.c:3265
+msgid "Main Roll"
+msgstr ""
+
+#: cups/ppd-cache.c:3260
+msgid "Manual"
 msgstr ""
 
 #: ppdc/sample.c:260
 msgid "Manual Feed"
 msgstr ""
 
-#: cups/ppd.c:747 cups/ppd.c:1313
+#: cups/ppd-cache.c:3374
+msgid "Matte Fabric"
+msgstr ""
+
+#: cups/ppd-cache.c:3396
+msgid "Matte Labels"
+msgstr ""
+
+#: cups/ppd-cache.c:3350
+msgid "Matte Optical Disc"
+msgstr ""
+
+#: cups/ppd-cache.c:3419
+msgid "Matte Photo Paper"
+msgstr ""
+
+#: cups/ppd.c:814 cups/ppd.c:1380
 msgid "Media Size"
 msgstr ""
 
-#: cups/ppd.c:751 cups/ppd.c:1317 ppdc/sample.c:254
+#: cups/ppd.c:818 cups/ppd.c:1384 ppdc/sample.c:254
 msgid "Media Source"
 msgstr ""
 
@@ -4503,7 +4969,7 @@ msgstr ""
 msgid "Media Tracking"
 msgstr ""
 
-#: cups/ppd.c:749 cups/ppd.c:1315 ppdc/sample.c:280
+#: cups/ppd.c:816 cups/ppd.c:1382 ppdc/sample.c:280
 msgid "Media Type"
 msgstr ""
 
@@ -4511,38 +4977,66 @@ msgstr ""
 msgid "Medium"
 msgstr ""
 
-#: cups/ppd.c:299
+#: cups/ppd.c:316
 msgid "Memory allocation error"
 msgstr ""
 
-#: cups/ppd.c:319
+#: cups/ppd-cache.c:3403
+msgid "Metal"
+msgstr ""
+
+#: cups/ppd-cache.c:3404
+msgid "Metal Glossy"
+msgstr ""
+
+#: cups/ppd-cache.c:3405
+msgid "Metal High Gloss"
+msgstr ""
+
+#: cups/ppd-cache.c:3406
+msgid "Metal Matte"
+msgstr ""
+
+#: cups/ppd-cache.c:3407
+msgid "Metal Satin"
+msgstr ""
+
+#: cups/ppd-cache.c:3408
+msgid "Metal Semi Gloss"
+msgstr ""
+
+#: cups/ppd-cache.c:3268
+msgid "Middle"
+msgstr ""
+
+#: cups/ppd.c:336
 msgid "Missing CloseGroup"
 msgstr ""
 
-#: cups/ppd.c:300
+#: cups/ppd.c:317
 msgid "Missing PPD-Adobe-4.x header"
 msgstr ""
 
-#: cups/ppd.c:309
+#: cups/ppd.c:326
 msgid "Missing asterisk in column 1"
 msgstr ""
 
-#: scheduler/ipp.c:5978
+#: scheduler/ipp.c:6275
 msgid "Missing document-number attribute."
 msgstr ""
 
-#: cups/adminutil.c:262
+#: cups/adminutil.c:261
 #, c-format
 msgid "Missing double quote on line %d."
 msgstr ""
 
-#: cgi-bin/admin.c:712 cgi-bin/admin.c:2092 cgi-bin/admin.c:2177
-#: cgi-bin/admin.c:2771 cgi-bin/admin.c:3025 cgi-bin/admin.c:3136
-#: cgi-bin/admin.c:3846
+#: cgi-bin/admin.c:710 cgi-bin/admin.c:2090 cgi-bin/admin.c:2175
+#: cgi-bin/admin.c:2769 cgi-bin/admin.c:3023 cgi-bin/admin.c:3134
+#: cgi-bin/admin.c:3844
 msgid "Missing form variable"
 msgstr ""
 
-#: scheduler/ipp.c:9353
+#: scheduler/ipp.c:9661
 msgid "Missing last-document attribute in request."
 msgstr ""
 
@@ -4554,36 +5048,41 @@ msgstr ""
 msgid "Missing media-size in media-col."
 msgstr ""
 
-#: scheduler/ipp.c:6581
+#: scheduler/ipp.c:6876
 msgid "Missing notify-subscription-ids attribute."
 msgstr ""
 
-#: cups/ppd.c:317
+#: cups/ppd.c:334
 msgid "Missing option keyword"
 msgstr ""
 
-#: scheduler/ipp.c:3129 scheduler/ipp.c:3154
+#: scheduler/ipp.c:3167 scheduler/ipp.c:3192
 msgid "Missing requesting-user-name attribute."
 msgstr ""
 
-#: scheduler/ipp.c:388
+#: scheduler/ipp.c:5423 scheduler/ipp.c:5449
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
+#: scheduler/ipp.c:386
 msgid "Missing required attributes."
 msgstr ""
 
-#: cups/http-support.c:1486
+#: cups/http-support.c:1490
 msgid "Missing resource in URI"
 msgstr ""
 
-#: cups/http-support.c:1480
+#: cups/http-support.c:1484
 msgid "Missing scheme in URI"
 msgstr ""
 
-#: cups/adminutil.c:243
+#: cups/adminutil.c:242
 #, c-format
 msgid "Missing value on line %d."
 msgstr ""
 
-#: cups/ppd.c:301
+#: cups/ppd.c:318
 msgid "Missing value string"
 msgstr ""
 
@@ -4595,7 +5094,7 @@ msgstr ""
 msgid "Missing y-dimension in media-size."
 msgstr ""
 
-#: systemv/lpinfo.c:470
+#: systemv/lpinfo.c:443
 #, c-format
 msgid ""
 "Model:  name = %s\n"
@@ -4604,39 +5103,55 @@ msgid ""
 "        device-id = %s"
 msgstr ""
 
-#: test/ippfind.c:2794
+#: test/ippfind.c:2792
 msgid "Modifiers:"
 msgstr ""
 
-#: cgi-bin/admin.c:546
+#: cgi-bin/admin.c:544
 msgid "Modify Class"
 msgstr ""
 
-#: cgi-bin/admin.c:859
+#: cgi-bin/admin.c:857
 msgid "Modify Printer"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:413 cgi-bin/ipp-var.c:504
+#: cups/ppd-cache.c:3409
+msgid "Mounting Tape"
+msgstr ""
+
+#: cgi-bin/ipp-var.c:411 cgi-bin/ipp-var.c:502
 msgid "Move All Jobs"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:352 cgi-bin/ipp-var.c:411 cgi-bin/ipp-var.c:502
+#: cgi-bin/ipp-var.c:350 cgi-bin/ipp-var.c:409 cgi-bin/ipp-var.c:500
 msgid "Move Job"
 msgstr ""
 
-#: cups/http-support.c:1353
+#: cups/http-support.c:1357
 msgid "Moved Permanently"
 msgstr ""
 
-#: cups/ppd.c:298
+#: cups/ppd-cache.c:3410
+msgid "Multi Layer"
+msgstr ""
+
+#: cups/ppd-cache.c:3411
+msgid "Multi Part Form"
+msgstr ""
+
+#: cups/ppd-cache.c:3275
+msgid "Multipurpose"
+msgstr ""
+
+#: cups/ppd.c:315
 msgid "NULL PPD file pointer"
 msgstr ""
 
-#: cups/snmp.c:1005
+#: cups/snmp.c:1003
 msgid "Name OID uses indefinite length"
 msgstr ""
 
-#: scheduler/ipp.c:1061
+#: scheduler/ipp.c:1081
 msgid "Nested classes are not allowed."
 msgstr ""
 
@@ -4644,133 +5159,153 @@ msgstr ""
 msgid "Never"
 msgstr ""
 
-#: cups/ppd.c:1904
+#: cups/tls-darwin.c:668 cups/tls-gnutls.c:502
+msgid "New credentials are not valid for name."
+msgstr ""
+
+#: cups/tls-darwin.c:658 cups/tls-gnutls.c:492
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
+#: cups/ppd.c:1971
 msgid "No"
 msgstr ""
 
-#: cups/http-support.c:1350
+#: cups/http-support.c:1354
 msgid "No Content"
 msgstr ""
 
-#: cups/util.c:1123
+#: cups/ppd-cache.c:3612 cups/ppd-cache.c:3657
+msgid "No Finishing"
+msgstr ""
+
+#: cups/ppd-util.c:451
 msgid "No PPD name"
 msgstr ""
 
-#: cups/snmp.c:999
+#: cups/snmp.c:997
 msgid "No VarBind SEQUENCE"
 msgstr ""
 
-#: cups/adminutil.c:777
+#: cups/adminutil.c:776
 msgid "No Windows printer drivers are installed."
 msgstr ""
 
-#: cups/request.c:570 cups/request.c:933
+#: cups/request.c:558 cups/request.c:917
 msgid "No active connection"
 msgstr ""
 
-#: cups/request.c:350
+#: cups/request.c:339
 msgid "No active connection."
 msgstr ""
 
-#: scheduler/ipp.c:3409
+#: scheduler/ipp.c:3447
 #, c-format
 msgid "No active jobs on %s."
 msgstr ""
 
-#: scheduler/ipp.c:216
+#: scheduler/ipp.c:214
 msgid "No attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:3030
+#: scheduler/ipp.c:3068
 msgid "No authentication information provided."
 msgstr ""
 
-#: cups/snmp.c:956
+#: cups/tls-darwin.c:608 cups/tls-gnutls.c:439
+msgid "No common name specified."
+msgstr ""
+
+#: cups/snmp.c:954
 msgid "No community name"
 msgstr ""
 
-#: scheduler/ipp.c:5778
+#: scheduler/ipp.c:6075
 msgid "No default printer."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:424 scheduler/ipp.c:7162
+#: cgi-bin/ipp-var.c:422 scheduler/ipp.c:7456
 msgid "No destinations added."
 msgstr ""
 
-#: backend/usb.c:200
+#: backend/usb.c:192
 msgid "No device URI found in argv[0] or in DEVICE_URI environment variable."
 msgstr ""
 
-#: cups/snmp.c:986
+#: cups/snmp.c:984
 msgid "No error-index"
 msgstr ""
 
-#: cups/snmp.c:978
+#: cups/snmp.c:976
 msgid "No error-status"
 msgstr ""
 
-#: scheduler/ipp.c:8105 scheduler/ipp.c:9367
+#: scheduler/ipp.c:8411 scheduler/ipp.c:9675
 msgid "No file in print request."
 msgstr ""
 
-#: cups/util.c:817
+#: cups/ppd-util.c:164
 msgid "No modification time"
 msgstr ""
 
-#: cups/snmp.c:1003
+#: cups/snmp.c:1001
 msgid "No name OID"
 msgstr ""
 
-#: filter/rastertoepson.c:1144 filter/rastertohp.c:865
-#: filter/rastertolabel.c:1288
+#: filter/rastertoepson.c:1166 filter/rastertohp.c:839
+#: filter/rastertolabel.c:1273
 msgid "No pages were found."
 msgstr ""
 
-#: cups/util.c:811
+#: cups/ppd-util.c:158
 msgid "No printer name"
 msgstr ""
 
-#: cups/util.c:1647
+#: cups/ppd-util.c:709
 msgid "No printer-uri found"
 msgstr ""
 
-#: cups/util.c:1631
+#: cups/ppd-util.c:693
 msgid "No printer-uri found for class"
 msgstr ""
 
-#: scheduler/ipp.c:6186
+#: scheduler/ipp.c:6482
 msgid "No printer-uri in request."
 msgstr ""
 
-#: cups/http.c:2260
+#: cups/http.c:2243
 msgid "No request URI."
 msgstr ""
 
-#: cups/http.c:2277
+#: cups/http.c:2260
 msgid "No request protocol version."
 msgstr ""
 
-#: cups/request.c:358
+#: cups/request.c:347
 msgid "No request sent."
 msgstr ""
 
-#: cups/snmp.c:970
+#: cups/snmp.c:968
 msgid "No request-id"
 msgstr ""
 
-#: scheduler/ipp.c:5381
+#: cups/tls-darwin.c:688 cups/tls-gnutls.c:522
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
+#: scheduler/ipp.c:5679
 msgid "No subscription attributes in request."
 msgstr ""
 
-#: scheduler/ipp.c:7489
+#: scheduler/ipp.c:7795
 msgid "No subscriptions found."
 msgstr ""
 
-#: cups/snmp.c:994
+#: cups/snmp.c:992
 msgid "No variable-bindings SEQUENCE"
 msgstr ""
 
-#: cups/snmp.c:949
+#: cups/snmp.c:947
 msgid "No version number"
 msgstr ""
 
@@ -4782,15 +5317,15 @@ msgstr ""
 msgid "Non-continuous (Web sensing)"
 msgstr ""
 
-#: ppdc/sample.c:238
+#: cups/ppd-cache.c:3699 cups/ppd-cache.c:3749 ppdc/sample.c:238
 msgid "Normal"
 msgstr ""
 
-#: cups/http-support.c:1372
+#: cups/http-support.c:1376
 msgid "Not Found"
 msgstr ""
 
-#: cups/http-support.c:1384
+#: cups/http-support.c:1388
 msgid "Not Implemented"
 msgstr ""
 
@@ -4798,15 +5333,15 @@ msgstr ""
 msgid "Not Installed"
 msgstr ""
 
-#: cups/http-support.c:1359
+#: cups/http-support.c:1363
 msgid "Not Modified"
 msgstr ""
 
-#: cups/http-support.c:1387
+#: cups/http-support.c:1391
 msgid "Not Supported"
 msgstr ""
 
-#: scheduler/ipp.c:1506 scheduler/ipp.c:10626
+#: scheduler/ipp.c:1535 scheduler/ipp.c:10936
 msgid "Not allowed to print."
 msgstr ""
 
@@ -4814,15 +5349,15 @@ msgstr ""
 msgid "Note"
 msgstr ""
 
-#: systemv/cupstestdsc.c:433
+#: systemv/cupstestdsc.c:425
 msgid "Note: this program only validates the DSC comments, not the PostScript itself."
 msgstr ""
 
-#: cups/http-support.c:1341 cups/http-support.c:1477 cups/ppd.c:296
+#: cups/http-support.c:1345 cups/http-support.c:1481 cups/ppd.c:313
 msgid "OK"
 msgstr ""
 
-#: ppdc/sample.c:263
+#: cups/ppd-cache.c:3546 ppdc/sample.c:263
 msgid "Off (1-Sided)"
 msgstr ""
 
@@ -4830,69 +5365,81 @@ msgstr ""
 msgid "Oki"
 msgstr ""
 
-#: cgi-bin/help.c:91 cgi-bin/help.c:132 cgi-bin/help.c:142 cgi-bin/help.c:172
+#: cgi-bin/help.c:85 cgi-bin/help.c:126 cgi-bin/help.c:136 cgi-bin/help.c:166
 msgid "Online Help"
 msgstr ""
 
-#: cups/adminutil.c:944
+#: scheduler/ipp.c:5402
+msgid "Only local users can create a local printer."
+msgstr ""
+
+#: cups/adminutil.c:943
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr ""
 
-#: cups/ppd.c:304
+#: cups/ppd.c:321
 msgid "OpenGroup without a CloseGroup first"
 msgstr ""
 
-#: cups/ppd.c:306
+#: cups/ppd.c:323
 msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
 msgstr ""
 
-#: cgi-bin/admin.c:3617
+#: cgi-bin/admin.c:3615
 msgid "Operation Policy"
 msgstr ""
 
-#: filter/pstops.c:2182
+#: cups/ppd-cache.c:3347
+msgid "Optical Disc"
+msgstr ""
+
+#: filter/pstops.c:2180
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr ""
 
-#: cgi-bin/admin.c:3267 cgi-bin/admin.c:3351
+#: cgi-bin/admin.c:3265 cgi-bin/admin.c:3349
 msgid "Options Installed"
 msgstr ""
 
-#: scheduler/cupsfilter.c:1482 scheduler/main.c:2177 systemv/cupsaddsmb.c:284
-#: systemv/cupsctl.c:203 systemv/cupstestdsc.c:429 systemv/cupstestppd.c:3861
-#: test/ippfind.c:2753 test/ipptool.c:4857 ppdc/ppdc.cxx:432
-#: ppdc/ppdhtml.cxx:179 ppdc/ppdi.cxx:130 ppdc/ppdmerge.cxx:363
-#: ppdc/ppdpo.cxx:249
+#: scheduler/cupsfilter.c:1480 scheduler/main.c:2055 systemv/cupsaddsmb.c:276
+#: systemv/cupsctl.c:196 systemv/cupstestdsc.c:421 systemv/cupstestppd.c:3859
+#: test/ippfind.c:2751 test/ipptool.c:4930 ppdc/ppdc.cxx:430
+#: ppdc/ppdhtml.cxx:177 ppdc/ppdi.cxx:123 ppdc/ppdmerge.cxx:361
+#: ppdc/ppdpo.cxx:247
 msgid "Options:"
 msgstr ""
 
-#: cups/ppd-cache.c:442
+#: cups/ppd-cache.c:3412
+msgid "Other"
+msgstr ""
+
+#: cups/ppd-cache.c:464
 msgid "Out of date PPD cache file."
 msgstr ""
 
-#: cups/ppd-cache.c:1810
+#: cups/ppd-cache.c:1832
 msgid "Out of memory."
 msgstr ""
 
-#: cups/ppd.c:753 cups/ppd.c:1319
+#: cups/ppd.c:820 cups/ppd.c:1386
 msgid "Output Mode"
 msgstr ""
 
-#: cups/localize.c:316
+#: cups/ppd-localize.c:314
 msgid "Output bin is almost full."
 msgstr ""
 
-#: cups/localize.c:318
+#: cups/ppd-localize.c:316
 msgid "Output bin is full."
 msgstr ""
 
-#: cups/localize.c:314
+#: cups/ppd-localize.c:312
 msgid "Output bin is missing."
 msgstr ""
 
-#: systemv/cupstestdsc.c:399
+#: systemv/cupstestdsc.c:391
 msgid "PASS"
 msgstr ""
 
@@ -4924,30 +5471,38 @@ msgstr ""
 msgid "PRC32K Oversize Long Edge"
 msgstr ""
 
-#: cups/snmp.c:966
+#: cups/snmp.c:964
 msgid "Packet does not contain a Get-Response-PDU"
 msgstr ""
 
-#: cups/snmp.c:945
+#: cups/snmp.c:943
 msgid "Packet does not start with SEQUENCE"
 msgstr ""
 
-#: cups/localize.c:293
+#: cups/ppd-cache.c:3413
+msgid "Paper"
+msgstr ""
+
+#: cups/ppd-localize.c:291
 msgid "Paper jam."
 msgstr ""
 
-#: cups/localize.c:310
+#: cups/ppd-localize.c:308
 msgid "Paper tray is almost empty."
 msgstr ""
 
-#: cups/localize.c:312
+#: cups/ppd-localize.c:310
 msgid "Paper tray is empty."
 msgstr ""
 
-#: cups/localize.c:308
+#: cups/ppd-localize.c:306
 msgid "Paper tray is missing."
 msgstr ""
 
+#: cups/ppd-cache.c:2978
+msgid "Parallel Fold"
+msgstr ""
+
 #: ppdc/sample.c:355
 msgid "ParamCustominCutInterval"
 msgstr ""
@@ -4956,21 +5511,21 @@ msgstr ""
 msgid "ParamCustominTearInterval"
 msgstr ""
 
-#: cups/auth.c:195 cups/auth.c:362
+#: cups/auth.c:192 cups/auth.c:359
 #, c-format
 msgid "Password for %s on %s? "
 msgstr ""
 
-#: systemv/cupsaddsmb.c:252
+#: systemv/cupsaddsmb.c:244
 #, c-format
 msgid "Password for %s required to access %s via SAMBA: "
 msgstr ""
 
-#: cgi-bin/classes.c:159
+#: cgi-bin/classes.c:157
 msgid "Pause Class"
 msgstr ""
 
-#: cgi-bin/printers.c:162
+#: cgi-bin/printers.c:160
 msgid "Pause Printer"
 msgstr ""
 
@@ -4978,23 +5533,83 @@ msgstr ""
 msgid "Peel-Off"
 msgstr ""
 
-#: ppdc/sample.c:160
+#: cups/ppd-cache.c:3397
+msgid "Permanent Labels"
+msgstr ""
+
+#: cups/ppd-cache.c:3263 ppdc/sample.c:160
 msgid "Photo"
 msgstr ""
 
+#: cups/ppd-cache.c:3416
+msgid "Photo Film"
+msgstr ""
+
 #: ppdc/sample.c:161
 msgid "Photo Labels"
 msgstr ""
 
-#: ppdc/sample.c:281
-msgid "Plain Paper"
+#: cups/ppd-cache.c:3414
+msgid "Photo Paper"
+msgstr ""
+
+#: cups/ppd-cache.c:3415
+msgid "Photographic Archival"
+msgstr ""
+
+#: cups/ppd-cache.c:3367
+msgid "Plain Envelope"
+msgstr ""
+
+#: ppdc/sample.c:281
+msgid "Plain Paper"
+msgstr ""
+
+#: cups/ppd-cache.c:3422
+msgid "Plastic"
+msgstr ""
+
+#: cups/ppd-cache.c:3423
+msgid "Plastic Archival"
+msgstr ""
+
+#: cups/ppd-cache.c:3424
+msgid "Plastic Colored"
+msgstr ""
+
+#: cups/ppd-cache.c:3425
+msgid "Plastic Glossy"
+msgstr ""
+
+#: cups/ppd-cache.c:3426
+msgid "Plastic High Gloss"
+msgstr ""
+
+#: cups/ppd-cache.c:3427
+msgid "Plastic Matte"
+msgstr ""
+
+#: cups/ppd-cache.c:3428
+msgid "Plastic Satin"
+msgstr ""
+
+#: cups/ppd-cache.c:3429
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+#: cups/ppd-cache.c:3430
+msgid "Plate"
 msgstr ""
 
-#: cgi-bin/admin.c:3285 cgi-bin/admin.c:3566
+#: cgi-bin/admin.c:3283 cgi-bin/admin.c:3564
 msgid "Policies"
 msgstr ""
 
-#: cgi-bin/admin.c:3292 cgi-bin/admin.c:3635 cgi-bin/admin.c:3648
+#: cups/ppd-cache.c:3431
+msgid "Polyester"
+msgstr ""
+
+#: cgi-bin/admin.c:3290 cgi-bin/admin.c:3633 cgi-bin/admin.c:3646
 msgid "Port Monitor"
 msgstr ""
 
@@ -5007,7 +5622,7 @@ msgid "Postcard"
 msgstr ""
 
 #: ppdc/sample.c:71
-msgid "Postcard Double "
+msgid "Postcard Double"
 msgstr ""
 
 #: ppdc/sample.c:72
@@ -5018,15 +5633,31 @@ msgstr ""
 msgid "Postcard Long Edge"
 msgstr ""
 
-#: backend/ipp.c:965 backend/ipp.c:973
+#: cups/ppd-cache.c:2979
+msgid "Poster Fold"
+msgstr ""
+
+#: cups/ppd-cache.c:3432
+msgid "Pre Cut Tabs"
+msgstr ""
+
+#: backend/ipp.c:1000 backend/ipp.c:1008
 msgid "Preparing to print."
 msgstr ""
 
+#: cups/ppd-cache.c:3368
+msgid "Preprinted Envelope"
+msgstr ""
+
+#: cups/ppd-cache.c:3452
+msgid "Preprinted Paper"
+msgstr ""
+
 #: ppdc/sample.c:290
 msgid "Print Density"
 msgstr ""
 
-#: cups/notify.c:82
+#: cups/notify.c:74
 msgid "Print Job:"
 msgstr ""
 
@@ -5034,11 +5665,15 @@ msgstr ""
 msgid "Print Mode"
 msgstr ""
 
+#: cups/ppd-cache.c:3692 cups/ppd-cache.c:3746
+msgid "Print Quality"
+msgstr ""
+
 #: ppdc/sample.c:378
 msgid "Print Rate"
 msgstr ""
 
-#: cgi-bin/printers.c:171
+#: cgi-bin/printers.c:169
 msgid "Print Self-Test Page"
 msgstr ""
 
@@ -5046,7 +5681,7 @@ msgstr ""
 msgid "Print Speed"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:780
+#: cgi-bin/ipp-var.c:778
 msgid "Print Test Page"
 msgstr ""
 
@@ -5058,23 +5693,28 @@ msgstr ""
 msgid "Print and Tear"
 msgstr ""
 
-#: backend/socket.c:429 backend/usb-unix.c:184
+#: backend/socket.c:427 backend/usb-unix.c:182
 msgid "Print file sent."
 msgstr ""
 
-#: backend/ipp.c:2180
+#: backend/ipp.c:2242
 msgid "Print job canceled at printer."
 msgstr ""
 
-#: backend/ipp.c:2172
+#: backend/ipp.c:2234
 msgid "Print job too large."
 msgstr ""
 
-#: backend/ipp.c:1654
+#: backend/ipp.c:1712
 msgid "Print job was not accepted."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1030
+#: scheduler/ipp.c:5468
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
+#: cgi-bin/ipp-var.c:1028
 msgid "Printer Added"
 msgstr ""
 
@@ -5082,15 +5722,15 @@ msgstr ""
 msgid "Printer Default"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1034
+#: cgi-bin/ipp-var.c:1032
 msgid "Printer Deleted"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1032
+#: cgi-bin/ipp-var.c:1030
 msgid "Printer Modified"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1028
+#: cgi-bin/ipp-var.c:1026
 msgid "Printer Paused"
 msgstr ""
 
@@ -5098,50 +5738,62 @@ msgstr ""
 msgid "Printer Settings"
 msgstr ""
 
-#: backend/ipp.c:2175
+#: backend/ipp.c:2237
 msgid "Printer cannot print supplied content."
 msgstr ""
 
-#: backend/ipp.c:2178
+#: backend/ipp.c:2240
 msgid "Printer cannot print with supplied options."
 msgstr ""
 
-#: cups/notify.c:126
+#: cups/notify.c:118
 msgid "Printer:"
 msgstr ""
 
-#: cgi-bin/printers.c:196 cgi-bin/printers.c:324
+#: cgi-bin/printers.c:194 cgi-bin/printers.c:321
 msgid "Printers"
 msgstr ""
 
-#: filter/rastertoepson.c:1090 filter/rastertohp.c:806
-#: filter/rastertolabel.c:1235
+#: filter/rastertoepson.c:1112 filter/rastertohp.c:780
+#: filter/rastertolabel.c:1220
 #, c-format
 msgid "Printing page %d, %u%% complete."
 msgstr ""
 
+#: cups/ppd-cache.c:2984
+msgid "Punch"
+msgstr ""
+
+#: cups/ppd-cache.c:3453
+msgid "Punched Paper"
+msgstr ""
+
 #: ppdc/sample.c:155
 msgid "Quarto"
 msgstr ""
 
-#: scheduler/ipp.c:1501 scheduler/ipp.c:10621
+#: scheduler/ipp.c:1530 scheduler/ipp.c:10931
 msgid "Quota limit reached."
 msgstr ""
 
-#: berkeley/lpq.c:490
+#: berkeley/lpq.c:499
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 
-#: cgi-bin/classes.c:163 cgi-bin/printers.c:166
+#: cups/ppd-cache.c:3274
+msgid "Rear"
+msgstr ""
+
+#: cgi-bin/classes.c:161 cgi-bin/printers.c:164
 msgid "Reject Jobs"
 msgstr ""
 
-#: backend/lpd.c:1024 backend/lpd.c:1156
+#: backend/lpd.c:1098 backend/lpd.c:1230
 #, c-format
 msgid "Remote host did not accept control file (%d)."
 msgstr ""
 
-#: backend/lpd.c:1109
+#: backend/lpd.c:1183
 #, c-format
 msgid "Remote host did not accept data file (%d)."
 msgstr ""
@@ -5150,19 +5802,19 @@ msgstr ""
 msgid "Reprint After Error"
 msgstr ""
 
-#: cups/http-support.c:1375
+#: cups/http-support.c:1379
 msgid "Request Entity Too Large"
 msgstr ""
 
-#: cups/ppd.c:755 cups/ppd.c:1321 ppdc/sample.c:231
+#: cups/ppd.c:822 cups/ppd.c:1388 ppdc/sample.c:231
 msgid "Resolution"
 msgstr ""
 
-#: cgi-bin/classes.c:157
+#: cgi-bin/classes.c:155
 msgid "Resume Class"
 msgstr ""
 
-#: cgi-bin/printers.c:159
+#: cgi-bin/printers.c:157
 msgid "Resume Printer"
 msgstr ""
 
@@ -5174,69 +5826,181 @@ msgstr ""
 msgid "Rewind"
 msgstr ""
 
-#: cups/adminutil.c:2041
+#: cups/ppd-cache.c:3272
+msgid "Right"
+msgstr ""
+
+#: cups/ppd-cache.c:2980
+msgid "Right Gate Fold"
+msgstr ""
+
+#: cups/ppd-cache.c:3433
+msgid "Roll"
+msgstr ""
+
+#: cups/ppd-cache.c:3296
+msgid "Roll 1"
+msgstr ""
+
+#: cups/ppd-cache.c:3305
+msgid "Roll 10"
+msgstr ""
+
+#: cups/ppd-cache.c:3297
+msgid "Roll 2"
+msgstr ""
+
+#: cups/ppd-cache.c:3298
+msgid "Roll 3"
+msgstr ""
+
+#: cups/ppd-cache.c:3299
+msgid "Roll 4"
+msgstr ""
+
+#: cups/ppd-cache.c:3300
+msgid "Roll 5"
+msgstr ""
+
+#: cups/ppd-cache.c:3301
+msgid "Roll 6"
+msgstr ""
+
+#: cups/ppd-cache.c:3302
+msgid "Roll 7"
+msgstr ""
+
+#: cups/ppd-cache.c:3303
+msgid "Roll 8"
+msgstr ""
+
+#: cups/ppd-cache.c:3304
+msgid "Roll 9"
+msgstr ""
+
+#: cups/adminutil.c:2100
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr ""
 
-#: cups/snmp.c:947
+#: cups/snmp.c:945
 msgid "SEQUENCE uses indefinite length"
 msgstr ""
 
-#: cups/http-support.c:1399
+#: cups/http-support.c:1403
 msgid "SSL/TLS Negotiation Error"
 msgstr ""
 
-#: cups/http-support.c:1356
+#: cups/ppd-cache.c:3001
+msgid "Saddle Stitch"
+msgstr ""
+
+#: cups/ppd-cache.c:3398
+msgid "Satin Labels"
+msgstr ""
+
+#: cups/ppd-cache.c:3351
+msgid "Satin Optical Disc"
+msgstr ""
+
+#: cups/ppd-cache.c:3420
+msgid "Satin Photo Paper"
+msgstr ""
+
+#: cups/ppd-cache.c:3434
+msgid "Screen"
+msgstr ""
+
+#: cups/ppd-cache.c:3435
+msgid "Screen Paged"
+msgstr ""
+
+#: cups/ppd-cache.c:3399
+msgid "Security Labels"
+msgstr ""
+
+#: cups/http-support.c:1360
 msgid "See Other"
 msgstr ""
 
-#: backend/usb-darwin.c:564 backend/usb-libusb.c:346
+#: scheduler/ipp.c:7080 scheduler/ipp.c:7099
+msgid "See remote printer."
+msgstr ""
+
+#: cups/ppd-cache.c:3436
+msgid "Self Adhesive"
+msgstr ""
+
+#: cups/ppd-cache.c:3437
+msgid "Self Adhesive Film"
+msgstr ""
+
+#: cups/tls-darwin.c:743 cups/tls-gnutls.c:584
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+#: cups/ppd-cache.c:3375
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+#: cups/ppd-cache.c:3400
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+#: cups/ppd-cache.c:3352
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+#: cups/ppd-cache.c:3421
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
+#: backend/usb-darwin.c:572 backend/usb-libusb.c:346
 msgid "Sending data to printer."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1044
+#: cgi-bin/ipp-var.c:1042
 msgid "Server Restarted"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1050
+#: cgi-bin/ipp-var.c:1048
 msgid "Server Security Auditing"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1046
+#: cgi-bin/ipp-var.c:1044
 msgid "Server Started"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:1048
+#: cgi-bin/ipp-var.c:1046
 msgid "Server Stopped"
 msgstr ""
 
-#: cups/tls-darwin.c:1030 cups/tls-gnutls.c:1049
+#: cups/tls-darwin.c:1183 cups/tls-gnutls.c:1263
 msgid "Server credentials not set."
 msgstr ""
 
-#: cups/http-support.c:1393
+#: cups/http-support.c:1397
 msgid "Service Unavailable"
 msgstr ""
 
-#: cgi-bin/admin.c:2772 cgi-bin/admin.c:2818 cgi-bin/admin.c:2975
-#: cgi-bin/admin.c:2994
+#: cgi-bin/admin.c:2770 cgi-bin/admin.c:2816 cgi-bin/admin.c:2973
+#: cgi-bin/admin.c:2992
 msgid "Set Allowed Users"
 msgstr ""
 
-#: cgi-bin/admin.c:3021
+#: cgi-bin/admin.c:3019
 msgid "Set As Server Default"
 msgstr ""
 
-#: cgi-bin/admin.c:3121
+#: cgi-bin/admin.c:3119
 msgid "Set Class Options"
 msgstr ""
 
-#: cgi-bin/admin.c:3121 cgi-bin/admin.c:3295 cgi-bin/admin.c:3677
+#: cgi-bin/admin.c:3119 cgi-bin/admin.c:3293 cgi-bin/admin.c:3675
 msgid "Set Printer Options"
 msgstr ""
 
-#: cgi-bin/admin.c:3847 cgi-bin/admin.c:3891 cgi-bin/admin.c:3909
+#: cgi-bin/admin.c:3845 cgi-bin/admin.c:3889 cgi-bin/admin.c:3907
 msgid "Set Publishing"
 msgstr ""
 
@@ -5244,15 +6008,67 @@ msgstr ""
 msgid "Shipping Address"
 msgstr ""
 
-#: ppdc/sample.c:265
+#: cups/ppd-cache.c:3546 ppdc/sample.c:265
 msgid "Short-Edge (Landscape)"
 msgstr ""
 
+#: cups/ppd-cache.c:3438
+msgid "Shrink Foil"
+msgstr ""
+
+#: cups/ppd-cache.c:3270
+msgid "Side"
+msgstr ""
+
+#: cups/ppd-cache.c:3439
+msgid "Single Face"
+msgstr ""
+
+#: cups/ppd-cache.c:2996
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2995
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:2985
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2986
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3010
+msgid "Single Staple (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:3009
+msgid "Single Staple (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3003
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:3004
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3440
+msgid "Single Wall Cardboard"
+msgstr ""
+
+#: cups/ppd-cache.c:3441
+msgid "Sleeve"
+msgstr ""
+
 #: ppdc/sample.c:283
 msgid "Special Paper"
 msgstr ""
 
-#: backend/lpd.c:1065
+#: backend/lpd.c:1139
 #, c-format
 msgid "Spooling job, %.0f%% complete."
 msgstr ""
@@ -5261,13 +6077,37 @@ msgstr ""
 msgid "Standard"
 msgstr ""
 
+#: cups/ppd-cache.c:3002
+msgid "Staple"
+msgstr ""
+
+#: cups/ppd-cache.c:2965
+msgid "Staple Edge"
+msgstr ""
+
+#: cups/ppd-cache.c:2969
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2967
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:2966
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:2968
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
-#: cgi-bin/admin.c:3538
+#: cgi-bin/admin.c:3536
 msgid "Starting Banner"
 msgstr ""
 
-#: filter/rastertoepson.c:1066 filter/rastertohp.c:782
-#: filter/rastertolabel.c:1211
+#: filter/rastertoepson.c:1088 filter/rastertohp.c:756
+#: filter/rastertolabel.c:1196
 #, c-format
 msgid "Starting page %d."
 msgstr ""
@@ -5276,13 +6116,33 @@ msgstr ""
 msgid "Statement"
 msgstr ""
 
-#: scheduler/ipp.c:3555 scheduler/ipp.c:6597 scheduler/ipp.c:7302
-#: scheduler/ipp.c:8815
+#: cups/ppd-cache.c:3442
+msgid "Stationery"
+msgstr ""
+
+#: cups/ppd-cache.c:3443
+msgid "Stationery Archival"
+msgstr ""
+
+#: cups/ppd-cache.c:3445
+msgid "Stationery Cotton"
+msgstr ""
+
+#: cups/ppd-cache.c:3448
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+#: cups/ppd-cache.c:3449
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
+#: scheduler/ipp.c:3593 scheduler/ipp.c:6892 scheduler/ipp.c:7602
+#: scheduler/ipp.c:9123
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr ""
 
-#: test/ippfind.c:2806
+#: test/ippfind.c:2804
 msgid "Substitutions:"
 msgstr ""
 
@@ -5298,10 +6158,14 @@ msgstr ""
 msgid "Super B/A3"
 msgstr ""
 
-#: cups/http-support.c:1338
+#: cups/http-support.c:1342
 msgid "Switching Protocols"
 msgstr ""
 
+#: cups/ppd-cache.c:3454
+msgid "Tab Stock"
+msgstr ""
+
 #: ppdc/sample.c:159
 msgid "Tabloid"
 msgstr ""
@@ -5326,213 +6190,213 @@ msgstr ""
 msgid "Tear-Off Adjust Position"
 msgstr ""
 
-#: scheduler/ipp.c:1337
+#: scheduler/ipp.c:1366
 #, c-format
 msgid "The \"%s\" attribute is required for print jobs."
 msgstr ""
 
-#: scheduler/ipp.c:6257 scheduler/ipp.c:6337 scheduler/ipp.c:6350
-#: scheduler/ipp.c:6362 scheduler/ipp.c:6377
+#: scheduler/ipp.c:6553 scheduler/ipp.c:6633 scheduler/ipp.c:6646
+#: scheduler/ipp.c:6658 scheduler/ipp.c:6673
 #, c-format
 msgid "The %s attribute cannot be provided with job-ids."
 msgstr ""
 
-#: scheduler/ipp.c:1316
+#: scheduler/ipp.c:1345
 #, c-format
 msgid "The '%s' Job Status attribute cannot be supplied in a job creation request."
 msgstr ""
 
-#: scheduler/ipp.c:5190
+#: scheduler/ipp.c:5230
 #, c-format
 msgid "The '%s' operation attribute cannot be supplied in a Create-Job request."
 msgstr ""
 
-#: scheduler/ipp.c:6827
+#: scheduler/ipp.c:7122
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
 msgstr ""
 
-#: scheduler/ipp.c:6814
+#: scheduler/ipp.c:7111
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
 msgstr ""
 
-#: filter/rastertoepson.c:1035 filter/rastertohp.c:753
-#: filter/rastertolabel.c:1175
+#: filter/rastertoepson.c:1057 filter/rastertohp.c:727
+#: filter/rastertolabel.c:1160
 msgid "The PPD file could not be opened."
 msgstr ""
 
-#: cgi-bin/admin.c:725
+#: cgi-bin/admin.c:723
 msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
 msgstr ""
 
-#: cups/localize.c:338
+#: cups/ppd-localize.c:336
 msgid "The developer unit needs to be replaced."
 msgstr ""
 
-#: cups/localize.c:336
+#: cups/ppd-localize.c:334
 msgid "The developer unit will need to be replaced soon."
 msgstr ""
 
-#: cups/localize.c:328
+#: cups/ppd-localize.c:326
 msgid "The fuser's temperature is high."
 msgstr ""
 
-#: cups/localize.c:330
+#: cups/ppd-localize.c:328
 msgid "The fuser's temperature is low."
 msgstr ""
 
-#: scheduler/ipp.c:2066
+#: scheduler/ipp.c:2112
 msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
 msgstr ""
 
-#: scheduler/ipp.c:2049 scheduler/ipp.c:5506
+#: scheduler/ipp.c:2095 scheduler/ipp.c:5804
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
 msgstr ""
 
-#: cups/localize.c:334
+#: cups/ppd-localize.c:332
 msgid "The optical photoconductor needs to be replaced."
 msgstr ""
 
-#: cups/localize.c:332
+#: cups/ppd-localize.c:330
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr ""
 
-#: backend/ipp.c:985
+#: backend/ipp.c:1020
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 
-#: backend/lpd.c:627 backend/lpd.c:1017 backend/lpd.c:1099 backend/lpd.c:1149
+#: backend/lpd.c:701 backend/lpd.c:1091 backend/lpd.c:1173 backend/lpd.c:1223
 msgid "The printer did not respond."
 msgstr ""
 
-#: backend/ipp.c:829 backend/ipp.c:948 backend/ipp.c:1062 backend/ipp.c:1459
-#: 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
+#: backend/ipp.c:793 backend/ipp.c:983 backend/ipp.c:1097 backend/ipp.c:1517
+#: backend/ipp.c:1684 backend/lpd.c:910 backend/socket.c:377
+#: backend/usb-unix.c:122 backend/usb-unix.c:412 backend/usb-unix.c:495
 msgid "The printer is in use."
 msgstr ""
 
-#: cups/localize.c:320
+#: cups/ppd-localize.c:318
 msgid "The printer is low on ink."
 msgstr ""
 
-#: cups/localize.c:298
+#: cups/ppd-localize.c:296
 msgid "The printer is low on toner."
 msgstr ""
 
-#: backend/runloop.c:243 backend/runloop.c:363 cups/localize.c:296
+#: backend/runloop.c:241 backend/runloop.c:361 cups/ppd-localize.c:294
 msgid "The printer is not connected."
 msgstr ""
 
-#: backend/ipp.c:807 backend/ipp.c:840 backend/ipp.c:944 backend/lpd.c:815
-#: backend/lpd.c:856 backend/socket.c:358 backend/socket.c:391
+#: backend/ipp.c:771 backend/ipp.c:804 backend/ipp.c:979 backend/lpd.c:889
+#: backend/lpd.c:930 backend/socket.c:356 backend/socket.c:389
 msgid "The printer is not responding."
 msgstr ""
 
-#: backend/runloop.c:385
+#: backend/runloop.c:383
 msgid "The printer is now connected."
 msgstr ""
 
-#: backend/usb-darwin.c:1342
+#: backend/usb-darwin.c:1348
 msgid "The printer is now online."
 msgstr ""
 
-#: backend/usb-darwin.c:1381
+#: backend/usb-darwin.c:1387
 msgid "The printer is offline."
 msgstr ""
 
-#: backend/ipp.c:822 backend/lpd.c:829 backend/socket.c:372
+#: backend/ipp.c:786 backend/lpd.c:903 backend/socket.c:370
 msgid "The printer is unreachable at this time."
 msgstr ""
 
-#: cups/localize.c:322
+#: cups/ppd-localize.c:320
 msgid "The printer may be out of ink."
 msgstr ""
 
-#: cups/localize.c:300
+#: cups/ppd-localize.c:298
 msgid "The printer may be out of toner."
 msgstr ""
 
-#: backend/ipp.c:816 backend/lpd.c:823 backend/socket.c:366
+#: backend/ipp.c:780 backend/lpd.c:897 backend/socket.c:364
 msgid "The printer may not exist or is unavailable at this time."
 msgstr ""
 
-#: cgi-bin/admin.c:908
+#: cgi-bin/admin.c:906
 msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
 msgstr ""
 
-#: scheduler/ipp.c:787 scheduler/ipp.c:1055 scheduler/ipp.c:3194
-#: 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
+#: scheduler/ipp.c:789 scheduler/ipp.c:1072 scheduler/ipp.c:3232
+#: scheduler/ipp.c:3413 scheduler/ipp.c:5213 scheduler/ipp.c:5638
+#: scheduler/ipp.c:5953 scheduler/ipp.c:6519 scheduler/ipp.c:7326
+#: scheduler/ipp.c:7382 scheduler/ipp.c:7708 scheduler/ipp.c:7980
+#: scheduler/ipp.c:8069 scheduler/ipp.c:8102 scheduler/ipp.c:8426
+#: scheduler/ipp.c:8833 scheduler/ipp.c:8915 scheduler/ipp.c:10089
+#: scheduler/ipp.c:10541 scheduler/ipp.c:10894 scheduler/ipp.c:10976
+#: scheduler/ipp.c:11351
 msgid "The printer or class does not exist."
 msgstr ""
 
-#: scheduler/ipp.c:1255
+#: scheduler/ipp.c:1284
 msgid "The printer or class is not shared."
 msgstr ""
 
-#: cups/localize.c:302
+#: cups/ppd-localize.c:300
 msgid "The printer's cover is open."
 msgstr ""
 
-#: cups/localize.c:306
+#: cups/ppd-localize.c:304
 msgid "The printer's door is open."
 msgstr ""
 
-#: cups/localize.c:304
+#: cups/ppd-localize.c:302
 msgid "The printer's interlock is open."
 msgstr ""
 
-#: cups/localize.c:324
+#: cups/ppd-localize.c:322
 msgid "The printer's waste bin is almost full."
 msgstr ""
 
-#: cups/localize.c:326
+#: cups/ppd-localize.c:324
 msgid "The printer's waste bin is full."
 msgstr ""
 
-#: scheduler/ipp.c:893 scheduler/ipp.c:2230
+#: scheduler/ipp.c:895 scheduler/ipp.c:2276
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
 msgstr ""
 
-#: scheduler/ipp.c:3171
+#: scheduler/ipp.c:3209
 msgid "The printer-uri attribute is required."
 msgstr ""
 
-#: scheduler/ipp.c:877
+#: scheduler/ipp.c:879
 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
 msgstr ""
 
-#: scheduler/ipp.c:2214
+#: scheduler/ipp.c:2260
 msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
 msgstr ""
 
-#: cgi-bin/admin.c:450
+#: cgi-bin/admin.c:448
 msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
 msgstr ""
 
-#: scheduler/client.c:2249
+#: scheduler/client.c:2247
 msgid "The web interface is currently disabled. Run \"cupsctl WebInterface=yes\" to enable it."
 msgstr ""
 
-#: scheduler/ipp.c:6321
+#: scheduler/ipp.c:6617
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
 msgstr ""
 
-#: scheduler/ipp.c:5584
+#: scheduler/ipp.c:5882
 msgid "There are too many subscriptions."
 msgstr ""
 
-#: backend/usb-darwin.c:398 backend/usb-darwin.c:457 backend/usb-darwin.c:526
-#: backend/usb-darwin.c:547 backend/usb-libusb.c:271 backend/usb-libusb.c:325
+#: backend/usb-darwin.c:399 backend/usb-darwin.c:465 backend/usb-darwin.c:534
+#: backend/usb-darwin.c:555 backend/usb-libusb.c:271 backend/usb-libusb.c:325
 msgid "There was an unrecoverable USB error."
 msgstr ""
 
@@ -5540,21 +6404,33 @@ msgstr ""
 msgid "Thermal Transfer Media"
 msgstr ""
 
-#: scheduler/ipp.c:1495
+#: scheduler/ipp.c:1524
 msgid "Too many active jobs."
 msgstr ""
 
-#: scheduler/ipp.c:1389
+#: scheduler/ipp.c:1418
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
 msgstr ""
 
-#: scheduler/ipp.c:2524
+#: scheduler/ipp.c:2587
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr ""
 
-#: ppdc/sample.c:284
+#: cups/ppd-cache.c:3267
+msgid "Top"
+msgstr ""
+
+#: cups/ppd-cache.c:3455
+msgid "Tractor"
+msgstr ""
+
+#: cups/ppd-cache.c:3456
+msgid "Transfer"
+msgstr ""
+
+#: cups/ppd-cache.c:3457 ppdc/sample.c:284
 msgid "Transparency"
 msgstr ""
 
@@ -5562,27 +6438,116 @@ msgstr ""
 msgid "Tray"
 msgstr ""
 
-#: ppdc/sample.c:256
+#: cups/ppd-cache.c:3276 ppdc/sample.c:256
 msgid "Tray 1"
 msgstr ""
 
-#: ppdc/sample.c:257
+#: cups/ppd-cache.c:3285
+msgid "Tray 10"
+msgstr ""
+
+#: cups/ppd-cache.c:3286
+msgid "Tray 11"
+msgstr ""
+
+#: cups/ppd-cache.c:3287
+msgid "Tray 12"
+msgstr ""
+
+#: cups/ppd-cache.c:3288
+msgid "Tray 13"
+msgstr ""
+
+#: cups/ppd-cache.c:3289
+msgid "Tray 14"
+msgstr ""
+
+#: cups/ppd-cache.c:3290
+msgid "Tray 15"
+msgstr ""
+
+#: cups/ppd-cache.c:3291
+msgid "Tray 16"
+msgstr ""
+
+#: cups/ppd-cache.c:3292
+msgid "Tray 17"
+msgstr ""
+
+#: cups/ppd-cache.c:3293
+msgid "Tray 18"
+msgstr ""
+
+#: cups/ppd-cache.c:3294
+msgid "Tray 19"
+msgstr ""
+
+#: cups/ppd-cache.c:3277 ppdc/sample.c:257
 msgid "Tray 2"
 msgstr ""
 
-#: ppdc/sample.c:258
+#: cups/ppd-cache.c:3295
+msgid "Tray 20"
+msgstr ""
+
+#: cups/ppd-cache.c:3278 ppdc/sample.c:258
 msgid "Tray 3"
 msgstr ""
 
-#: ppdc/sample.c:259
+#: cups/ppd-cache.c:3279 ppdc/sample.c:259
 msgid "Tray 4"
 msgstr ""
 
-#: cups/http-support.c:1378
+#: cups/ppd-cache.c:3280
+msgid "Tray 5"
+msgstr ""
+
+#: cups/ppd-cache.c:3281
+msgid "Tray 6"
+msgstr ""
+
+#: cups/ppd-cache.c:3282
+msgid "Tray 7"
+msgstr ""
+
+#: cups/ppd-cache.c:3283
+msgid "Tray 8"
+msgstr ""
+
+#: cups/ppd-cache.c:3284
+msgid "Tray 9"
+msgstr ""
+
+#: cups/ppd-cache.c:3014
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:3012
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3011
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+#: cups/ppd-cache.c:3013
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+#: cups/ppd-cache.c:3458
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+#: cups/tls-darwin.c:648 cups/tls-darwin.c:730 cups/tls-gnutls.c:482
+#: cups/tls-gnutls.c:564
+msgid "Trust on first use is disabled."
+msgstr ""
+
+#: cups/http-support.c:1382
 msgid "URI Too Long"
 msgstr ""
 
-#: cups/http-support.c:1453
+#: cups/http-support.c:1457
 msgid "URI too large"
 msgstr ""
 
@@ -5618,495 +6583,502 @@ msgstr ""
 msgid "US Letter Small"
 msgstr ""
 
-#: cgi-bin/admin.c:1945 cgi-bin/admin.c:1958 cgi-bin/admin.c:1982
+#: cgi-bin/admin.c:1943 cgi-bin/admin.c:1956 cgi-bin/admin.c:1980
 msgid "Unable to access cupsd.conf file"
 msgstr ""
 
-#: cgi-bin/help.c:133
+#: cgi-bin/help.c:127
 msgid "Unable to access help file."
 msgstr ""
 
-#: cgi-bin/admin.c:502
+#: cgi-bin/admin.c:500
 msgid "Unable to add RSS subscription"
 msgstr ""
 
-#: cgi-bin/admin.c:790
+#: cgi-bin/admin.c:788
 msgid "Unable to add class"
 msgstr ""
 
-#: backend/ipp.c:1808
+#: backend/ipp.c:1866
 msgid "Unable to add document to print job."
 msgstr ""
 
-#: scheduler/ipp.c:1553
+#: scheduler/ipp.c:1582
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
 msgstr ""
 
-#: cgi-bin/admin.c:1036 cgi-bin/admin.c:1405
+#: cgi-bin/admin.c:1034 cgi-bin/admin.c:1403
 msgid "Unable to add printer"
 msgstr ""
 
-#: scheduler/ipp.c:1173
+#: scheduler/ipp.c:1202
 msgid "Unable to allocate memory for file types."
 msgstr ""
 
-#: filter/pstops.c:423
+#: filter/pstops.c:421
 msgid "Unable to allocate memory for page info"
 msgstr ""
 
-#: filter/pstops.c:417
+#: filter/pstops.c:415
 msgid "Unable to allocate memory for pages array"
 msgstr ""
 
-#: cgi-bin/admin.c:1511
+#: cgi-bin/admin.c:1509
 msgid "Unable to cancel RSS subscription"
 msgstr ""
 
-#: backend/ipp.c:2085 backend/ipp.c:2533
+#: backend/ipp.c:2147 backend/ipp.c:2609
 msgid "Unable to cancel print job."
 msgstr ""
 
-#: cgi-bin/admin.c:2976
+#: cgi-bin/admin.c:2974
 msgid "Unable to change printer"
 msgstr ""
 
-#: cgi-bin/admin.c:3892
+#: cgi-bin/admin.c:3890
 msgid "Unable to change printer-is-shared attribute"
 msgstr ""
 
-#: cgi-bin/admin.c:1643 cgi-bin/admin.c:1785
+#: cgi-bin/admin.c:1641 cgi-bin/admin.c:1783
 msgid "Unable to change server settings"
 msgstr ""
 
-#: cups/ipp.c:5389
+#: cups/ipp.c:5347
 #, c-format
 msgid "Unable to compile mimeMediaType regular expression: %s."
 msgstr ""
 
-#: cups/ipp.c:5335
+#: cups/ipp.c:5293
 #, c-format
 msgid "Unable to compile naturalLanguage regular expression: %s."
 msgstr ""
 
-#: filter/commandtops.c:407
+#: filter/commandtops.c:405
 msgid "Unable to configure printer options."
 msgstr ""
 
-#: cups/adminutil.c:900 cups/request.c:1066
+#: cups/adminutil.c:899 cups/request.c:1050
 msgid "Unable to connect to host."
 msgstr ""
 
-#: backend/ipp.c:785 backend/ipp.c:1258 backend/lpd.c:795 backend/socket.c:338
-#: backend/usb-unix.c:110
+#: backend/ipp.c:749 backend/ipp.c:1295 backend/lpd.c:869 backend/socket.c:336
+#: backend/usb-unix.c:108
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr ""
 
-#: cups/adminutil.c:715
+#: cups/adminutil.c:714
 #, c-format
 msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:680
+#: cups/adminutil.c:679
 #, c-format
 msgid "Unable to copy 64-bit Windows printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:511
+#: cups/adminutil.c:510
 #, c-format
 msgid "Unable to copy CUPS printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2644
+#: scheduler/ipp.c:2690
 #, c-format
 msgid "Unable to copy PPD file - %s"
 msgstr ""
 
-#: scheduler/ipp.c:2699
+#: scheduler/ipp.c:2735
 msgid "Unable to copy PPD file."
 msgstr ""
 
-#: cups/adminutil.c:476
+#: cups/adminutil.c:475
 #, c-format
 msgid "Unable to copy Windows 2000 printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:599
+#: cups/adminutil.c:598
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 
-#: scheduler/ipp.c:2621
-#, c-format
-msgid "Unable to copy interface script - %s"
+#: cups/tls-darwin.c:614 cups/tls-gnutls.c:445
+msgid "Unable to create credentials from array."
 msgstr ""
 
-#: cups/util.c:496 cups/util.c:1479
+#: cups/ppd-util.c:542 cups/util.c:482
 msgid "Unable to create printer-uri"
 msgstr ""
 
-#: cups/tls-darwin.c:1291 cups/tls-gnutls.c:1181
+#: scheduler/ipp.c:5478
+msgid "Unable to create printer."
+msgstr ""
+
+#: cups/tls-darwin.c:1444 cups/tls-gnutls.c:1451
 msgid "Unable to create server credentials."
 msgstr ""
 
-#: cgi-bin/admin.c:1836 cgi-bin/admin.c:1848 scheduler/cupsfilter.c:1290
+#: cgi-bin/admin.c:1834 cgi-bin/admin.c:1846 scheduler/cupsfilter.c:1288
 msgid "Unable to create temporary file"
 msgstr ""
 
-#: cgi-bin/admin.c:2139
+#: cgi-bin/admin.c:2137
 msgid "Unable to delete class"
 msgstr ""
 
-#: cgi-bin/admin.c:2224
+#: cgi-bin/admin.c:2222
 msgid "Unable to delete printer"
 msgstr ""
 
-#: cgi-bin/classes.c:252 cgi-bin/printers.c:261
+#: cgi-bin/classes.c:250 cgi-bin/printers.c:259
 msgid "Unable to do maintenance command"
 msgstr ""
 
-#: cgi-bin/admin.c:1960
+#: cgi-bin/admin.c:1958
 msgid "Unable to edit cupsd.conf files larger than 1MB"
 msgstr ""
 
-#: cups/tls-darwin.c:1459
+#: cups/tls-darwin.c:1611
 msgid "Unable to establish a secure connection to host (certificate chain invalid)."
 msgstr ""
 
-#: cups/tls-darwin.c:1449
+#: cups/tls-darwin.c:1601
 msgid "Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr ""
 
-#: cups/tls-darwin.c:1444
+#: cups/tls-darwin.c:1596
 msgid "Unable to establish a secure connection to host (expired certificate)."
 msgstr ""
 
-#: cups/tls-darwin.c:1454
+#: cups/tls-darwin.c:1606
 msgid "Unable to establish a secure connection to host (host name mismatch)."
 msgstr ""
 
-#: cups/tls-darwin.c:1464
+#: cups/tls-darwin.c:1616
 msgid "Unable to establish a secure connection to host (peer dropped connection before responding)."
 msgstr ""
 
-#: cups/tls-darwin.c:1439
+#: cups/tls-darwin.c:1591
 msgid "Unable to establish a secure connection to host (self-signed certificate)."
 msgstr ""
 
-#: cups/tls-darwin.c:1434
+#: cups/tls-darwin.c:1586
 msgid "Unable to establish a secure connection to host (untrusted certificate)."
 msgstr ""
 
-#: cups/tls-darwin.c:1491 cups/tls-sspi.c:1279 cups/tls-sspi.c:1296
+#: cups/tls-darwin.c:1643 cups/tls-sspi.c:1277 cups/tls-sspi.c:1294
 msgid "Unable to establish a secure connection to host."
 msgstr ""
 
-#: cgi-bin/ipp-var.c:353
+#: cgi-bin/ipp-var.c:351
 msgid "Unable to find destination for job"
 msgstr ""
 
-#: cups/http-support.c:1949
+#: cups/http-support.c:1951
 msgid "Unable to find printer."
 msgstr ""
 
-#: cups/tls-darwin.c:1305
+#: cups/tls-darwin.c:1457
 msgid "Unable to find server credentials."
 msgstr ""
 
-#: backend/ipp.c:3221
+#: backend/ipp.c:3298
 msgid "Unable to get backend exit status."
 msgstr ""
 
-#: cgi-bin/classes.c:442
+#: cgi-bin/classes.c:430
 msgid "Unable to get class list"
 msgstr ""
 
-#: cgi-bin/classes.c:541
+#: cgi-bin/classes.c:529
 msgid "Unable to get class status"
 msgstr ""
 
-#: cgi-bin/admin.c:1299
+#: cgi-bin/admin.c:1297
 msgid "Unable to get list of printer drivers"
 msgstr ""
 
-#: cgi-bin/admin.c:2826
+#: cgi-bin/admin.c:2824
 msgid "Unable to get printer attributes"
 msgstr ""
 
-#: cgi-bin/printers.c:459
+#: cgi-bin/printers.c:447
 msgid "Unable to get printer list"
 msgstr ""
 
-#: cgi-bin/printers.c:561
+#: cgi-bin/printers.c:549
 msgid "Unable to get printer status"
 msgstr ""
 
-#: backend/ipp.c:1009
+#: backend/ipp.c:1044
 msgid "Unable to get printer status."
 msgstr ""
 
-#: cups/adminutil.c:554 cups/adminutil.c:758
+#: cups/adminutil.c:553 cups/adminutil.c:757
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)."
 msgstr ""
 
-#: cups/adminutil.c:628
+#: cups/adminutil.c:627
 #, c-format
 msgid "Unable to install Windows 9x printer driver files (%d)."
 msgstr ""
 
-#: cgi-bin/help.c:92
+#: cgi-bin/help.c:86
 msgid "Unable to load help index."
 msgstr ""
 
-#: backend/ipp.c:672 backend/lpd.c:426 backend/socket.c:277
+#: backend/ipp.c:674 backend/lpd.c:422 backend/socket.c:275
 #, c-format
 msgid "Unable to locate printer \"%s\"."
 msgstr ""
 
-#: backend/dnssd.c:787 backend/ipp.c:340 backend/lpd.c:196
-#: backend/socket.c:163
+#: backend/dnssd.c:785 backend/ipp.c:342 backend/lpd.c:192
+#: backend/socket.c:161
 msgid "Unable to locate printer."
 msgstr ""
 
-#: cgi-bin/admin.c:789
+#: cgi-bin/admin.c:787
 msgid "Unable to modify class"
 msgstr ""
 
-#: cgi-bin/admin.c:1035 cgi-bin/admin.c:1404
+#: cgi-bin/admin.c:1033 cgi-bin/admin.c:1402
 msgid "Unable to modify printer"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:420 cgi-bin/ipp-var.c:509
+#: cgi-bin/ipp-var.c:418 cgi-bin/ipp-var.c:507
 msgid "Unable to move job"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:422 cgi-bin/ipp-var.c:511
+#: cgi-bin/ipp-var.c:420 cgi-bin/ipp-var.c:509
 msgid "Unable to move jobs"
 msgstr ""
 
-#: cgi-bin/admin.c:3172 cups/ppd.c:297
+#: cgi-bin/admin.c:3170 cups/ppd.c:314
 msgid "Unable to open PPD file"
 msgstr ""
 
-#: cgi-bin/admin.c:2594
+#: cgi-bin/admin.c:2592
 msgid "Unable to open cupsd.conf file:"
 msgstr ""
 
-#: backend/usb-unix.c:134
+#: backend/usb-unix.c:132
 msgid "Unable to open device file"
 msgstr ""
 
-#: scheduler/ipp.c:5999
+#: scheduler/ipp.c:6296
 #, c-format
 msgid "Unable to open document #%d in job #%d."
 msgstr ""
 
-#: cgi-bin/help.c:364
+#: cgi-bin/help.c:358
 msgid "Unable to open help file."
 msgstr ""
 
-#: 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
+#: backend/ipp.c:384 backend/ipp.c:1612 backend/ipp.c:1821 backend/lpd.c:492
+#: backend/socket.c:148 backend/usb.c:229 filter/gziptoany.c:71
+#: filter/pstops.c:268
 msgid "Unable to open print file"
 msgstr ""
 
-#: filter/rastertoepson.c:995 filter/rastertohp.c:713
-#: filter/rastertolabel.c:1133
+#: filter/rastertoepson.c:1017 filter/rastertohp.c:687
+#: filter/rastertolabel.c:1118
 msgid "Unable to open raster file"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:783
+#: cgi-bin/ipp-var.c:781
 msgid "Unable to print test page"
 msgstr ""
 
-#: backend/runloop.c:85 backend/runloop.c:314 backend/usb-darwin.c:634
-#: backend/usb-darwin.c:678 backend/usb-libusb.c:416 backend/usb-libusb.c:451
+#: backend/runloop.c:83 backend/runloop.c:312 backend/usb-darwin.c:642
+#: backend/usb-darwin.c:686 backend/usb-libusb.c:416 backend/usb-libusb.c:451
 msgid "Unable to read print data."
 msgstr ""
 
-#: scheduler/ipp.c:8279 scheduler/ipp.c:9520
+#: scheduler/ipp.c:8585 scheduler/ipp.c:9828
 msgid "Unable to rename job document file."
 msgstr ""
 
-#: cups/dest.c:3446
+#: cups/dest.c:3534
 msgid "Unable to resolve printer-uri."
 msgstr ""
 
-#: cups/adminutil.c:2077
+#: cups/adminutil.c:2136
 #, c-format
 msgid "Unable to run \"%s\": %s"
 msgstr ""
 
-#: filter/pstops.c:535
+#: filter/pstops.c:533
 msgid "Unable to see in file"
 msgstr ""
 
-#: cgi-bin/ipp-var.c:586 cgi-bin/ipp-var.c:606
+#: cgi-bin/ipp-var.c:584 cgi-bin/ipp-var.c:604
 msgid "Unable to send command to printer driver"
 msgstr ""
 
-#: backend/usb-darwin.c:756 backend/usb-libusb.c:527
+#: backend/usb-darwin.c:764 backend/usb-libusb.c:527
 msgid "Unable to send data to printer."
 msgstr ""
 
-#: cups/adminutil.c:810
+#: cups/adminutil.c:809
 #, c-format
 msgid "Unable to set Windows printer driver (%d)."
 msgstr ""
 
-#: cgi-bin/admin.c:3793
+#: cgi-bin/admin.c:3791
 msgid "Unable to set options"
 msgstr ""
 
-#: cgi-bin/admin.c:3063
+#: cgi-bin/admin.c:3061
 msgid "Unable to set server default"
 msgstr ""
 
-#: backend/ipp.c:3080 backend/ipp.c:3157 backend/ipp.c:3165
+#: backend/ipp.c:3157 backend/ipp.c:3234 backend/ipp.c:3242
 msgid "Unable to start backend process."
 msgstr ""
 
-#: cgi-bin/admin.c:1898
+#: cgi-bin/admin.c:1896
 msgid "Unable to upload cupsd.conf file"
 msgstr ""
 
-#: backend/usb-darwin.c:2166 backend/usb-darwin.c:2190
+#: backend/usb-darwin.c:2156 backend/usb-darwin.c:2180
 msgid "Unable to use legacy USB class driver."
 msgstr ""
 
-#: backend/runloop.c:114 backend/runloop.c:369
+#: backend/runloop.c:112 backend/runloop.c:367
 msgid "Unable to write print data"
 msgstr ""
 
-#: filter/gziptoany.c:92
+#: filter/gziptoany.c:90
 #, c-format
 msgid "Unable to write uncompressed print data: %s"
 msgstr ""
 
-#: cups/http-support.c:1366
+#: cups/http-support.c:1370
 msgid "Unauthorized"
 msgstr ""
 
-#: cgi-bin/admin.c:3489
+#: cgi-bin/admin.c:3487
 msgid "Units"
 msgstr ""
 
-#: cups/http-support.c:1406 cups/http-support.c:1490 cups/ppd.c:324
+#: cups/http-support.c:1410 cups/http-support.c:1494 cups/ppd.c:341
 msgid "Unknown"
 msgstr ""
 
-#: filter/pstops.c:2190
+#: filter/pstops.c:2188
 #, c-format
 msgid "Unknown choice \"%s\" for option \"%s\"."
 msgstr ""
 
-#: backend/ipp.c:524
+#: backend/ipp.c:526
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:342
+#: backend/lpd.c:338
 #, c-format
 msgid "Unknown file order: \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:313
+#: backend/lpd.c:309
 #, c-format
 msgid "Unknown format character: \"%c\"."
 msgstr ""
 
-#: cups/dest-options.c:964
+#: cups/hash.c:233
+msgid "Unknown hash algorithm."
+msgstr ""
+
+#: cups/dest-options.c:963
 msgid "Unknown media size name."
 msgstr ""
 
-#: backend/ipp.c:588
+#: backend/ipp.c:590
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
 msgstr ""
 
-#: filter/pstops.c:2173
+#: filter/pstops.c:2171
 #, c-format
 msgid "Unknown option \"%s\"."
 msgstr ""
 
-#: backend/lpd.c:328
+#: backend/lpd.c:324
 #, c-format
 msgid "Unknown print mode: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10455
+#: scheduler/ipp.c:10763
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10438
+#: scheduler/ipp.c:10746
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr ""
 
-#: cups/http.c:2309
+#: cups/http.c:2292
 msgid "Unknown request method."
 msgstr ""
 
-#: cups/http.c:2329
+#: cups/http.c:2312
 msgid "Unknown request version."
 msgstr ""
 
-#: cups/http-support.c:1483
+#: cups/http-support.c:1487
 msgid "Unknown scheme in URI"
 msgstr ""
 
-#: cups/http-addrlist.c:737
+#: cups/http-addrlist.c:783
 msgid "Unknown service name."
 msgstr ""
 
-#: backend/ipp.c:553
+#: backend/ipp.c:555
 #, c-format
 msgid "Unknown version option value: \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10912
+#: scheduler/ipp.c:11222
 #, c-format
 msgid "Unsupported 'compression' value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:10942
+#: scheduler/ipp.c:11252
 #, c-format
 msgid "Unsupported 'document-format' value \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:11017
+#: scheduler/ipp.c:11327
 msgid "Unsupported 'job-name' value."
 msgstr ""
 
-#: scheduler/ipp.c:329
+#: scheduler/ipp.c:327
 #, c-format
 msgid "Unsupported character set \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8086 scheduler/ipp.c:9332
+#: scheduler/ipp.c:8392 scheduler/ipp.c:9640
 #, c-format
 msgid "Unsupported compression \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:8222 scheduler/ipp.c:9485
+#: scheduler/ipp.c:8528 scheduler/ipp.c:9793
 #, c-format
 msgid "Unsupported document-format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:9468
+#: scheduler/ipp.c:9776
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1355
+#: scheduler/ipp.c:1384
 #, c-format
 msgid "Unsupported format \"%s\"."
 msgstr ""
 
-#: scheduler/ipp.c:1453
+#: scheduler/ipp.c:1482
 msgid "Unsupported margins."
 msgstr ""
 
@@ -6114,34 +7086,35 @@ msgstr ""
 msgid "Unsupported media value."
 msgstr ""
 
-#: filter/pstops.c:2455
+#: filter/pstops.c:2453
 #, c-format
 msgid "Unsupported number-up value %d, using number-up=1."
 msgstr ""
 
-#: filter/pstops.c:2489
+#: filter/pstops.c:2487
 #, c-format
 msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
 msgstr ""
 
-#: filter/pstops.c:2540
+#: filter/pstops.c:2538
 #, c-format
 msgid "Unsupported page-border value %s, using page-border=none."
 msgstr ""
 
-#: filter/rastertopwg.c:139 filter/rastertopwg.c:147 filter/rastertopwg.c:156
+#: filter/rastertopwg.c:132 filter/rastertopwg.c:168 filter/rastertopwg.c:176
+#: filter/rastertopwg.c:185
 msgid "Unsupported raster data."
 msgstr ""
 
-#: cups/snmp.c:1064
+#: cups/snmp.c:1062
 msgid "Unsupported value type"
 msgstr ""
 
-#: cups/http-support.c:1381
+#: cups/http-support.c:1385
 msgid "Upgrade Required"
 msgstr ""
 
-#: systemv/lpadmin.c:666
+#: systemv/lpadmin.c:635
 msgid ""
 "Usage:\n"
 "\n"
@@ -6153,47 +7126,39 @@ msgid ""
 "                       [-u allow:user,user] [-u deny:user,user]"
 msgstr ""
 
-#: backend/dnssd.c:227 backend/ipp.c:329 backend/lpd.c:183
-#: backend/socket.c:127 backend/usb.c:183 filter/commandtops.c:63
-#: filter/gziptoany.c:46 filter/pstops.c:231 monitor/bcp.c:56
-#: monitor/tbcp.c:55
+#: backend/dnssd.c:225 backend/ipp.c:331 backend/lpd.c:179
+#: backend/socket.c:125 backend/usb.c:175 filter/commandtops.c:61
+#: filter/gziptoany.c:44 filter/pstops.c:229 monitor/bcp.c:54
+#: monitor/tbcp.c:53
 #, c-format
 msgid "Usage: %s job-id user title copies options [file]"
 msgstr ""
 
-#: systemv/cupsaddsmb.c:281
+#: systemv/cupsaddsmb.c:273
 msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
 msgstr ""
 
-#: systemv/cupsctl.c:200
+#: systemv/cupsctl.c:193
 msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr ""
 
-#: scheduler/main.c:2176
+#: scheduler/main.c:2054
 msgid "Usage: cupsd [options]"
 msgstr ""
 
-#: scheduler/cupsfilter.c:1481
+#: scheduler/cupsfilter.c:1479
 msgid "Usage: cupsfilter [ options ] [ -- ] filename"
 msgstr ""
 
-#: systemv/cupstestdsc.c:425
+#: systemv/cupstestdsc.c:417
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr ""
 
-#: systemv/cupstestppd.c:3857
+#: systemv/cupstestppd.c:3855
 msgid "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
 msgstr ""
 
-#: test/ippdiscover.c:814
-msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-
-#: test/ippfind.c:2746
+#: test/ippfind.c:2744
 msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
@@ -6201,7 +7166,7 @@ msgid ""
 "       ippfind --version"
 msgstr ""
 
-#: test/ipptool.c:4855
+#: test/ipptool.c:4928
 msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
 msgstr ""
 
@@ -6209,7 +7174,7 @@ msgstr ""
 msgid "Usage: lpmove job/src dest"
 msgstr ""
 
-#: systemv/lpoptions.c:539
+#: systemv/lpoptions.c:523
 msgid ""
 "Usage: lpoptions [-h server] [-E] -d printer\n"
 "       lpoptions [-h server] [-E] [-p printer] -l\n"
@@ -6217,75 +7182,95 @@ msgid ""
 "       lpoptions [-h server] [-E] -x printer"
 msgstr ""
 
-#: berkeley/lpq.c:637
+#: berkeley/lpq.c:646
 msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
 
-#: ppdc/ppdc.cxx:430
+#: ppdc/ppdc.cxx:428
 msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
 msgstr ""
 
-#: ppdc/ppdhtml.cxx:177
+#: ppdc/ppdhtml.cxx:175
 msgid "Usage: ppdhtml [options] filename.drv >filename.html"
 msgstr ""
 
-#: ppdc/ppdi.cxx:128
+#: ppdc/ppdi.cxx:121
 msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:361
+#: ppdc/ppdmerge.cxx:359
 msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]"
 msgstr ""
 
-#: ppdc/ppdpo.cxx:247
+#: ppdc/ppdpo.cxx:245
 msgid "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
 msgstr ""
 
-#: backend/snmp.c:192
+#: backend/snmp.c:190
 msgid "Usage: snmp [host-or-ip-address]"
 msgstr ""
 
-#: cups/snmp.c:1016
+#: cups/snmp.c:1014
 msgid "Value uses indefinite length"
 msgstr ""
 
-#: cups/snmp.c:1001
+#: cups/snmp.c:999
 msgid "VarBind uses indefinite length"
 msgstr ""
 
-#: cups/snmp.c:951
+#: cups/ppd-cache.c:3446
+msgid "Vellum Paper"
+msgstr ""
+
+#: cups/snmp.c:949
 msgid "Version uses indefinite length"
 msgstr ""
 
-#: backend/ipp.c:1925
+#: backend/ipp.c:1986
 msgid "Waiting for job to complete."
 msgstr ""
 
-#: backend/usb-darwin.c:481 backend/usb-libusb.c:223
+#: backend/usb-darwin.c:430 backend/usb-darwin.c:489 backend/usb-libusb.c:223
 msgid "Waiting for printer to become available."
 msgstr ""
 
-#: backend/socket.c:440
+#: backend/socket.c:438
 msgid "Waiting for printer to finish."
 msgstr ""
 
-#: cups/adminutil.c:782
+#: cups/adminutil.c:781
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr ""
 
-#: cups/http-support.c:1402
+#: cups/ppd-cache.c:3376
+msgid "Waterproof Fabric"
+msgstr ""
+
+#: cups/http-support.c:1406
 msgid "Web Interface is Disabled"
 msgstr ""
 
-#: cups/ppd.c:1902
+#: cups/ppd-cache.c:3459
+msgid "Wet Film"
+msgstr ""
+
+#: cups/ppd-cache.c:3369
+msgid "Windowed Envelope"
+msgstr ""
+
+#: cups/ppd.c:1969
 msgid "Yes"
 msgstr ""
 
-#: scheduler/client.c:2236
+#: scheduler/client.c:2234
 #, c-format
 msgid "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>."
 msgstr ""
 
+#: cups/ppd-cache.c:2981
+msgid "Z Fold"
+msgstr ""
+
 #: ppdc/sample.c:434
 msgid "ZPL Label Printer"
 msgstr ""
@@ -6294,295 +7279,296 @@ msgstr ""
 msgid "Zebra"
 msgstr ""
 
-#: cups/notify.c:102
+#: cups/notify.c:94
 msgid "aborted"
 msgstr ""
 
-#: cups/notify.c:99
+#: cups/notify.c:91
 msgid "canceled"
 msgstr ""
 
-#: cups/notify.c:105
+#: cups/notify.c:97
 msgid "completed"
 msgstr ""
 
-#: scheduler/ipp.c:5871
+#: scheduler/ipp.c:6168
 msgid "cups-deviced failed to execute."
 msgstr ""
 
-#: scheduler/ipp.c:6750 scheduler/ipp.c:6999
+#: scheduler/ipp.c:7054 scheduler/ipp.c:7293
 msgid "cups-driverd failed to execute."
 msgstr ""
 
-#: systemv/cupsaddsmb.c:233
+#: systemv/cupsaddsmb.c:225
 #, c-format
 msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
 msgstr ""
 
-#: systemv/cupsctl.c:141
+#: systemv/cupsctl.c:134
 msgid "cupsctl: Cannot set Listen or Port directly."
 msgstr ""
 
-#: systemv/cupsctl.c:152
+#: systemv/cupsctl.c:145
 #, c-format
 msgid "cupsctl: Unable to connect to server: %s"
 msgstr ""
 
-#: systemv/cupsctl.c:195
+#: systemv/cupsctl.c:188
 #, c-format
 msgid "cupsctl: Unknown option \"%s\""
 msgstr ""
 
-#: systemv/cupsctl.c:197
+#: systemv/cupsctl.c:190
 #, c-format
 msgid "cupsctl: Unknown option \"-%c\""
 msgstr ""
 
-#: scheduler/main.c:182
+#: scheduler/main.c:178
 msgid "cupsd: Expected config filename after \"-c\" option."
 msgstr ""
 
-#: scheduler/main.c:278
+#: scheduler/main.c:274
 msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr ""
 
-#: scheduler/main.c:252
+#: scheduler/main.c:248
 msgid "cupsd: On-demand support not compiled in, running in normal mode."
 msgstr ""
 
-#: scheduler/main.c:289
+#: scheduler/main.c:285
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr ""
 
-#: scheduler/main.c:213 scheduler/main.c:220
+#: scheduler/main.c:209 scheduler/main.c:216
 msgid "cupsd: Unable to get current directory."
 msgstr ""
 
-#: scheduler/main.c:338 scheduler/main.c:347
+#: scheduler/main.c:341 scheduler/main.c:350
 msgid "cupsd: Unable to get path to cups-files.conf file."
 msgstr ""
 
-#: scheduler/main.c:320
+#: scheduler/main.c:323
 #, c-format
 msgid "cupsd: Unknown argument \"%s\" - aborting."
 msgstr ""
 
-#: scheduler/main.c:313
+#: scheduler/main.c:316
 #, c-format
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1263
+#: scheduler/cupsfilter.c:1261
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1257
+#: scheduler/cupsfilter.c:1255
 #, c-format
 msgid "cupsfilter: Invalid job ID %d."
 msgstr ""
 
-#: scheduler/cupsfilter.c:348
+#: scheduler/cupsfilter.c:346
 msgid "cupsfilter: Only one filename can be specified."
 msgstr ""
 
-#: scheduler/cupsfilter.c:1305
+#: scheduler/cupsfilter.c:1303
 #, c-format
 msgid "cupsfilter: Unable to get job file - %s"
 msgstr ""
 
-#: systemv/cupstestppd.c:241
+#: systemv/cupstestppd.c:239
 msgid "cupstestppd: The -q option is incompatible with the -v option."
 msgstr ""
 
-#: systemv/cupstestppd.c:257
+#: systemv/cupstestppd.c:255
 msgid "cupstestppd: The -v option is incompatible with the -q option."
 msgstr ""
 
-#: systemv/lpstat.c:1232 systemv/lpstat.c:1235 systemv/lpstat.c:1238
+#: systemv/lpstat.c:1230 systemv/lpstat.c:1233 systemv/lpstat.c:1236
 #, c-format
 msgid "device for %s/%s: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
+#: systemv/lpstat.c:1216 systemv/lpstat.c:1219 systemv/lpstat.c:1222
 #, c-format
 msgid "device for %s: %s"
 msgstr ""
 
-#: cups/snmp.c:988
+#: cups/snmp.c:986
 msgid "error-index uses indefinite length"
 msgstr ""
 
-#: cups/snmp.c:980
+#: cups/snmp.c:978
 msgid "error-status uses indefinite length"
 msgstr ""
 
-#: cups/notify.c:90
+#: cups/notify.c:82
 msgid "held"
 msgstr ""
 
-#: berkeley/lpc.c:201
+#: berkeley/lpc.c:199
 msgid "help\t\tGet help on commands."
 msgstr ""
 
-#: cups/notify.c:131
+#: cups/notify.c:123
 msgid "idle"
 msgstr ""
 
-#: test/ippfind.c:2465
+#: test/ippfind.c:2463
 #, c-format
 msgid "ippfind: Bad regular expression: %s"
 msgstr ""
 
-#: test/ippfind.c:328
+#: test/ippfind.c:326
 msgid "ippfind: Cannot use --and after --or."
 msgstr ""
 
-#: test/ippfind.c:601
+#: test/ippfind.c:599
 #, c-format
 msgid "ippfind: Expected key name after %s."
 msgstr ""
 
-#: test/ippfind.c:551 test/ippfind.c:734
+#: test/ippfind.c:549 test/ippfind.c:732
 #, c-format
 msgid "ippfind: Expected port range after %s."
 msgstr ""
 
-#: test/ippfind.c:361
+#: test/ippfind.c:359
 #, c-format
 msgid "ippfind: Expected program after %s."
 msgstr ""
 
-#: test/ippfind.c:378
+#: test/ippfind.c:376
 #, c-format
 msgid "ippfind: Expected semi-colon after %s."
 msgstr ""
 
-#: test/ippfind.c:1965
+#: test/ippfind.c:1963
 msgid "ippfind: Missing close brace in substitution."
 msgstr ""
 
-#: test/ippfind.c:1053
+#: test/ippfind.c:1051
 msgid "ippfind: Missing close parenthesis."
 msgstr ""
 
-#: test/ippfind.c:335
+#: test/ippfind.c:333
 msgid "ippfind: Missing expression before \"--and\"."
 msgstr ""
 
-#: test/ippfind.c:448
+#: test/ippfind.c:446
 msgid "ippfind: Missing expression before \"--or\"."
 msgstr ""
 
-#: test/ippfind.c:871
+#: test/ippfind.c:869
 #, c-format
 msgid "ippfind: Missing key name after %s."
 msgstr ""
 
-#: test/ippfind.c:1024
+#: test/ippfind.c:1022
 msgid "ippfind: Missing open parenthesis."
 msgstr ""
 
-#: test/ippfind.c:901
+#: test/ippfind.c:899
 #, c-format
 msgid "ippfind: Missing program after %s."
 msgstr ""
 
-#: test/ippfind.c:347 test/ippfind.c:401 test/ippfind.c:430 test/ippfind.c:536
-#: test/ippfind.c:618 test/ippfind.c:633 test/ippfind.c:788 test/ippfind.c:803
-#: test/ippfind.c:826 test/ippfind.c:886
+#: test/ippfind.c:345 test/ippfind.c:399 test/ippfind.c:428 test/ippfind.c:534
+#: test/ippfind.c:616 test/ippfind.c:631 test/ippfind.c:786 test/ippfind.c:801
+#: test/ippfind.c:824 test/ippfind.c:884
 #, c-format
 msgid "ippfind: Missing regular expression after %s."
 msgstr ""
 
-#: test/ippfind.c:919
+#: test/ippfind.c:917
 #, c-format
 msgid "ippfind: Missing semi-colon after %s."
 msgstr ""
 
-#: test/ippfind.c:1912 test/ippfind.c:1937
+#: test/ippfind.c:1910 test/ippfind.c:1935
 msgid "ippfind: Out of memory."
 msgstr ""
 
-#: test/ippfind.c:997
+#: test/ippfind.c:995
 msgid "ippfind: Too many parenthesis."
 msgstr ""
 
-#: test/ippfind.c:1266 test/ippfind.c:1402 test/ippfind.c:2557
+#: test/ippfind.c:1264 test/ippfind.c:1400 test/ippfind.c:2555
 #, c-format
 msgid "ippfind: Unable to browse or resolve: %s"
 msgstr ""
 
-#: test/ippfind.c:2035 test/ippfind.c:2062
+#: test/ippfind.c:2033 test/ippfind.c:2060
 #, c-format
 msgid "ippfind: Unable to execute \"%s\": %s"
 msgstr ""
 
-#: test/ippfind.c:1143 test/ippfind.c:1151 test/ippfind.c:1162
+#: test/ippfind.c:1141 test/ippfind.c:1149 test/ippfind.c:1160
 #, c-format
 msgid "ippfind: Unable to use Bonjour: %s"
 msgstr ""
 
-#: test/ippfind.c:1994
+#: test/ippfind.c:1992
 #, c-format
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr ""
 
-#: test/ipptool.c:329 test/ipptool.c:392 test/ipptool.c:547 test/ipptool.c:570
+#: test/ipptool.c:317 test/ipptool.c:380 test/ipptool.c:535 test/ipptool.c:558
 msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
 msgstr ""
 
-#: test/ipptool.c:626
+#: test/ipptool.c:614
 #, c-format
 msgid "ipptool: Bad URI - %s."
 msgstr ""
 
-#: test/ipptool.c:540
+#: test/ipptool.c:528
 msgid "ipptool: Invalid seconds for \"-i\"."
 msgstr ""
 
-#: test/ipptool.c:607
+#: test/ipptool.c:595
 msgid "ipptool: May only specify a single URI."
 msgstr ""
 
-#: test/ipptool.c:562
+#: test/ipptool.c:550
 msgid "ipptool: Missing count for \"-n\"."
 msgstr ""
 
-#: test/ipptool.c:426
+#: test/ipptool.c:414
 msgid "ipptool: Missing filename for \"-f\"."
 msgstr ""
 
-#: test/ipptool.c:407
+#: test/ipptool.c:395
 msgid "ipptool: Missing name=value for \"-d\"."
 msgstr ""
 
-#: test/ipptool.c:530
+#: test/ipptool.c:518
 msgid "ipptool: Missing seconds for \"-i\"."
 msgstr ""
 
-#: test/ipptool.c:652
+#: test/ipptool.c:640
 msgid "ipptool: URI required before test file."
 msgstr ""
 
-#: test/ipptool.c:588
+#: test/ipptool.c:576
 #, c-format
 msgid "ipptool: Unknown option \"-%c\"."
 msgstr ""
 
-#: scheduler/ipp.c:7752
+#: scheduler/ipp.c:8058
 msgid "job-printer-uri attribute missing."
 msgstr ""
 
-#: systemv/lpadmin.c:123 systemv/lpadmin.c:364
+#: systemv/lpadmin.c:125 systemv/lpadmin.c:362
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr ""
 
-#: systemv/lpadmin.c:601
-msgid "lpadmin: Expected PPD after \"-P\" option."
+#: systemv/lpadmin.c:215
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:445
+#: systemv/lpadmin.c:443
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr ""
 
@@ -6590,105 +7576,101 @@ msgstr ""
 msgid "lpadmin: Expected class after \"-r\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:112
+#: systemv/lpadmin.c:115
 msgid "lpadmin: Expected class name after \"-c\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:545
+#: systemv/lpadmin.c:537
 msgid "lpadmin: Expected description after \"-D\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:479
+#: systemv/lpadmin.c:473
 msgid "lpadmin: Expected device URI after \"-v\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:561
+#: systemv/lpadmin.c:550
 msgid "lpadmin: Expected file type(s) after \"-I\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:193
+#: systemv/lpadmin.c:194
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:212
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr ""
-
-#: systemv/lpadmin.c:581
+#: systemv/lpadmin.c:569
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:264
+#: systemv/lpadmin.c:266
 msgid "lpadmin: Expected model after \"-m\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:405
+#: systemv/lpadmin.c:401
 msgid "lpadmin: Expected name after \"-R\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:284
+#: systemv/lpadmin.c:286
 msgid "lpadmin: Expected name=value after \"-o\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:303
+#: systemv/lpadmin.c:306
 msgid "lpadmin: Expected printer after \"-p\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:155
+#: systemv/lpadmin.c:157
 msgid "lpadmin: Expected printer name after \"-d\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:512
+#: systemv/lpadmin.c:506
 msgid "lpadmin: Expected printer or class after \"-x\" option."
 msgstr ""
 
-#: systemv/lpadmin.c:973
+#: systemv/lpadmin.c:942
 msgid "lpadmin: No member names were seen."
 msgstr ""
 
-#: systemv/lpadmin.c:760
+#: systemv/lpadmin.c:729
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s."
 msgstr ""
 
-#: systemv/lpadmin.c:987
+#: systemv/lpadmin.c:956
 #, c-format
 msgid "lpadmin: Printer %s is not a member of class %s."
 msgstr ""
 
-#: systemv/lpadmin.c:166 systemv/lpadmin.c:314 systemv/lpadmin.c:523
+#: systemv/lpadmin.c:166 systemv/lpadmin.c:315 systemv/lpadmin.c:515
 msgid "lpadmin: Printer name can only contain printable characters."
 msgstr ""
 
-#: systemv/lpadmin.c:97
+#: systemv/lpadmin.c:99
 msgid ""
 "lpadmin: Unable to add a printer to the class:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:88 systemv/lpadmin.c:140 systemv/lpadmin.c:243
-#: systemv/lpadmin.c:328 systemv/lpadmin.c:381 systemv/lpadmin.c:497
-#: systemv/lpadmin.c:642
+#: systemv/lpadmin.c:91 systemv/lpadmin.c:141 systemv/lpadmin.c:244
+#: systemv/lpadmin.c:328 systemv/lpadmin.c:377 systemv/lpadmin.c:489
+#: systemv/lpadmin.c:611
 #, c-format
 msgid "lpadmin: Unable to connect to server: %s"
 msgstr ""
 
-#: systemv/lpadmin.c:1427
+#: systemv/lpadmin.c:1396
 msgid "lpadmin: Unable to create temporary file"
 msgstr ""
 
-#: systemv/lpadmin.c:390
+#: systemv/lpadmin.c:385
 msgid ""
 "lpadmin: Unable to delete option:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:1419
+#: systemv/lpadmin.c:1388
 #, c-format
 msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
 msgstr ""
 
-#: systemv/lpadmin.c:1439
+#: systemv/lpadmin.c:1408
 #, c-format
 msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
 msgstr ""
@@ -6699,358 +7681,338 @@ msgid ""
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:651
+#: systemv/lpadmin.c:620
 msgid ""
 "lpadmin: Unable to set the printer options:\n"
 "         You must specify a printer name first."
 msgstr ""
 
-#: systemv/lpadmin.c:462
+#: systemv/lpadmin.c:456
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"."
 msgstr ""
 
-#: systemv/lpadmin.c:616
+#: systemv/lpadmin.c:585
 #, c-format
 msgid "lpadmin: Unknown argument \"%s\"."
 msgstr ""
 
-#: systemv/lpadmin.c:611
+#: systemv/lpadmin.c:578
 #, c-format
 msgid "lpadmin: Unknown option \"%c\"."
 msgstr ""
 
-#: systemv/lpadmin.c:567
+#: systemv/lpadmin.c:554
 msgid "lpadmin: Warning - content type list ignored."
 msgstr ""
 
-#: berkeley/lpc.c:68 berkeley/lpc.c:96 berkeley/lpc.c:132
+#: berkeley/lpc.c:66 berkeley/lpc.c:94 berkeley/lpc.c:130
 msgid "lpc> "
 msgstr ""
 
-#: systemv/lpinfo.c:137
+#: systemv/lpinfo.c:82
 msgid "lpinfo: Expected 1284 device ID string after \"--device-id\"."
 msgstr ""
 
-#: systemv/lpinfo.c:190
+#: systemv/lpinfo.c:129
 msgid "lpinfo: Expected language after \"--language\"."
 msgstr ""
 
-#: systemv/lpinfo.c:207
+#: systemv/lpinfo.c:144
 msgid "lpinfo: Expected make and model after \"--make-and-model\"."
 msgstr ""
 
-#: systemv/lpinfo.c:224
+#: systemv/lpinfo.c:159
 msgid "lpinfo: Expected product string after \"--product\"."
 msgstr ""
 
-#: systemv/lpinfo.c:155
+#: systemv/lpinfo.c:98
 msgid "lpinfo: Expected scheme list after \"--exclude-schemes\"."
 msgstr ""
 
-#: systemv/lpinfo.c:173
+#: systemv/lpinfo.c:114
 msgid "lpinfo: Expected scheme list after \"--include-schemes\"."
 msgstr ""
 
-#: systemv/lpinfo.c:241
+#: systemv/lpinfo.c:174
 msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr ""
 
-#: systemv/lpinfo.c:265
-#, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr ""
-
-#: systemv/lpinfo.c:259
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr ""
-
-#: systemv/lpinfo.c:252
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr ""
-
 #: systemv/lpmove.c:133
 #, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr ""
 
-#: systemv/lpmove.c:119
+#: systemv/lpmove.c:118
 #, c-format
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr ""
 
-#: systemv/lpmove.c:97
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr ""
-
-#: systemv/lpoptions.c:143 systemv/lpoptions.c:161 systemv/lpoptions.c:237
+#: systemv/lpoptions.c:150 systemv/lpoptions.c:168 systemv/lpoptions.c:247
 msgid "lpoptions: No printers."
 msgstr ""
 
-#: systemv/lpoptions.c:212
+#: systemv/lpoptions.c:224
 #, c-format
 msgid "lpoptions: Unable to add printer or instance: %s"
 msgstr ""
 
-#: systemv/lpoptions.c:507
+#: systemv/lpoptions.c:491
 #, c-format
 msgid "lpoptions: Unable to get PPD file for %s: %s"
 msgstr ""
 
-#: systemv/lpoptions.c:515
+#: systemv/lpoptions.c:499
 #, c-format
 msgid "lpoptions: Unable to open PPD file for %s."
 msgstr ""
 
-#: systemv/lpoptions.c:92
+#: systemv/lpoptions.c:96
 msgid "lpoptions: Unknown printer or class."
 msgstr ""
 
-#: systemv/lpstat.c:1074
+#: systemv/lpstat.c:1072
 #, c-format
 msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"."
 msgstr ""
 
-#: systemv/lpstat.c:1010
+#: systemv/lpstat.c:1008
 #, c-format
 msgid "members of class %s:"
 msgstr ""
 
-#: berkeley/lpq.c:549
+#: berkeley/lpq.c:558
 msgid "no entries"
 msgstr ""
 
-#: systemv/lpstat.c:1078
+#: systemv/lpstat.c:1076
 msgid "no system default destination"
 msgstr ""
 
-#: scheduler/ipp.c:5555
+#: scheduler/ipp.c:5853
 msgid "notify-events not specified."
 msgstr ""
 
-#: scheduler/ipp.c:2003 scheduler/ipp.c:5460
+#: scheduler/ipp.c:2049 scheduler/ipp.c:5758
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" is already used."
 msgstr ""
 
-#: scheduler/ipp.c:1993 scheduler/ipp.c:5450
+#: scheduler/ipp.c:2039 scheduler/ipp.c:5748
 #, c-format
 msgid "notify-recipient-uri URI \"%s\" uses unknown scheme."
 msgstr ""
 
-#: cups/notify.c:87
+#: cups/notify.c:79
 msgid "pending"
 msgstr ""
 
-#: ppdc/ppdc.cxx:108 ppdc/ppdpo.cxx:87
+#: ppdc/ppdc.cxx:106 ppdc/ppdpo.cxx:85
 #, c-format
 msgid "ppdc: Adding include directory \"%s\"."
 msgstr ""
 
-#: ppdc/ppdpo.cxx:130
+#: ppdc/ppdpo.cxx:128
 #, c-format
 msgid "ppdc: Adding/updating UI text from %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:367
+#: ppdc/ppdc-source.cxx:365
 #, c-format
 msgid "ppdc: Bad boolean value (%s) on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-import.cxx:264
+#: ppdc/ppdc-import.cxx:257
 #, c-format
 msgid "ppdc: Bad font attribute: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1753
+#: ppdc/ppdc-source.cxx:1751
 #, c-format
 msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1070
+#: ppdc/ppdc-source.cxx:1068
 #, c-format
 msgid "ppdc: Bad status keyword %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1990
+#: ppdc/ppdc-source.cxx:1988
 #, c-format
 msgid "ppdc: Bad variable substitution ($%c) on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2675
+#: ppdc/ppdc-source.cxx:2673
 #, c-format
 msgid "ppdc: Choice found on line %d of %s with no Option."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1655
+#: ppdc/ppdc-source.cxx:1653
 #, c-format
 msgid "ppdc: Duplicate #po for locale %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:889
+#: ppdc/ppdc-source.cxx:887
 #, c-format
 msgid "ppdc: Expected a filter definition on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:912
+#: ppdc/ppdc-source.cxx:910
 #, c-format
 msgid "ppdc: Expected a program name on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:351
+#: ppdc/ppdc-source.cxx:349
 #, c-format
 msgid "ppdc: Expected boolean value on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1050
+#: ppdc/ppdc-source.cxx:1048
 #, c-format
 msgid "ppdc: Expected charset after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:404
+#: ppdc/ppdc-source.cxx:402
 #, c-format
 msgid "ppdc: Expected choice code on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:392
+#: ppdc/ppdc-source.cxx:390
 #, c-format
 msgid "ppdc: Expected choice name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:460
+#: ppdc/ppdc-source.cxx:458
 #, c-format
 msgid "ppdc: Expected color order for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:449
+#: ppdc/ppdc-source.cxx:447
 #, c-format
 msgid "ppdc: Expected colorspace for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:471
+#: ppdc/ppdc-source.cxx:469
 #, c-format
 msgid "ppdc: Expected compression for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:652
+#: ppdc/ppdc-source.cxx:650
 #, c-format
 msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2861
+#: ppdc/ppdc-source.cxx:2859
 #, c-format
 msgid "ppdc: Expected driver type keyword following DriverType on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:783
+#: ppdc/ppdc-source.cxx:781
 #, c-format
 msgid "ppdc: Expected duplex type after Duplex on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1034
+#: ppdc/ppdc-source.cxx:1032
 #, c-format
 msgid "ppdc: Expected encoding after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1646
+#: ppdc/ppdc-source.cxx:1644
 #, c-format
 msgid "ppdc: Expected filename after #po %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1162
+#: ppdc/ppdc-source.cxx:1160
 #, c-format
 msgid "ppdc: Expected group name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2575
+#: ppdc/ppdc-source.cxx:2573
 #, c-format
 msgid "ppdc: Expected include filename on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1459
+#: ppdc/ppdc-source.cxx:1457
 #, c-format
 msgid "ppdc: Expected integer on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1638
+#: ppdc/ppdc-source.cxx:1636
 #, c-format
 msgid "ppdc: Expected locale after #po on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:310
+#: ppdc/ppdc-source.cxx:308
 #, c-format
 msgid "ppdc: Expected name after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3233
+#: ppdc/ppdc-source.cxx:3231
 #, c-format
 msgid "ppdc: Expected name after FileName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1015
+#: ppdc/ppdc-source.cxx:1013
 #, c-format
 msgid "ppdc: Expected name after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3064
+#: ppdc/ppdc-source.cxx:3062
 #, c-format
 msgid "ppdc: Expected name after Manufacturer on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3097
+#: ppdc/ppdc-source.cxx:3095
 #, c-format
 msgid "ppdc: Expected name after MediaSize on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3187
+#: ppdc/ppdc-source.cxx:3185
 #, c-format
 msgid "ppdc: Expected name after ModelName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3250
+#: ppdc/ppdc-source.cxx:3248
 #, c-format
 msgid "ppdc: Expected name after PCFileName on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1113
+#: ppdc/ppdc-source.cxx:1111
 #, c-format
 msgid "ppdc: Expected name/text after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1202
+#: ppdc/ppdc-source.cxx:1200
 #, c-format
 msgid "ppdc: Expected name/text after Installable on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1739
+#: ppdc/ppdc-source.cxx:1737
 #, c-format
 msgid "ppdc: Expected name/text after Resolution on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:436
+#: ppdc/ppdc-source.cxx:434
 #, c-format
 msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1531
+#: ppdc/ppdc-source.cxx:1529
 #, c-format
 msgid "ppdc: Expected option name/text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1565
+#: ppdc/ppdc-source.cxx:1563
 #, c-format
 msgid "ppdc: Expected option section on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1543
+#: ppdc/ppdc-source.cxx:1541
 #, c-format
 msgid "ppdc: Expected option type on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1722
+#: ppdc/ppdc-source.cxx:1720
 #, c-format
 msgid "ppdc: Expected override field after Resolution on line %d of %s."
 msgstr ""
@@ -7060,108 +8022,108 @@ msgstr ""
 msgid "ppdc: Expected quoted string on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:961
+#: ppdc/ppdc-source.cxx:959
 #, c-format
 msgid "ppdc: Expected real number on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:529
+#: ppdc/ppdc-source.cxx:527
 #, c-format
 msgid "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1820
+#: ppdc/ppdc-source.cxx:1818
 #, c-format
 msgid "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:318
+#: ppdc/ppdc-source.cxx:316
 #, c-format
 msgid "ppdc: Expected selector after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1058
+#: ppdc/ppdc-source.cxx:1056
 #, c-format
 msgid "ppdc: Expected status after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2750
+#: ppdc/ppdc-source.cxx:2748
 #, c-format
 msgid "ppdc: Expected string after Copyright on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3353
+#: ppdc/ppdc-source.cxx:3351
 #, c-format
 msgid "ppdc: Expected string after Version on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:685
+#: ppdc/ppdc-source.cxx:683
 #, c-format
 msgid "ppdc: Expected two option names on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:329
+#: ppdc/ppdc-source.cxx:327
 #, c-format
 msgid "ppdc: Expected value after %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1042
+#: ppdc/ppdc-source.cxx:1040
 #, c-format
 msgid "ppdc: Expected version after Font on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:184
+#: ppdc/ppdc-source.cxx:182
 #, c-format
 msgid "ppdc: Invalid #include/#po filename \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:929
+#: ppdc/ppdc-source.cxx:927
 #, c-format
 msgid "ppdc: Invalid cost for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:921
+#: ppdc/ppdc-source.cxx:919
 #, c-format
 msgid "ppdc: Invalid empty MIME type for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:937
+#: ppdc/ppdc-source.cxx:935
 #, c-format
 msgid "ppdc: Invalid empty program name for filter on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1585
+#: ppdc/ppdc-source.cxx:1583
 #, c-format
 msgid "ppdc: Invalid option section \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1557
+#: ppdc/ppdc-source.cxx:1555
 #, c-format
 msgid "ppdc: Invalid option type \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:246 ppdc/ppdpo.cxx:117
+#: ppdc/ppdc.cxx:244 ppdc/ppdpo.cxx:115
 #, c-format
 msgid "ppdc: Loading driver information file \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:182
+#: ppdc/ppdc.cxx:180
 #, c-format
 msgid "ppdc: Loading messages for locale \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:121
+#: ppdc/ppdc.cxx:119
 #, c-format
 msgid "ppdc: Loading messages from \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2368 ppdc/ppdc-source.cxx:2600
+#: ppdc/ppdc-source.cxx:2366 ppdc/ppdc-source.cxx:2598
 #, c-format
 msgid "ppdc: Missing #endif at end of \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2469 ppdc/ppdc-source.cxx:2504
-#: ppdc/ppdc-source.cxx:2534
+#: ppdc/ppdc-source.cxx:2467 ppdc/ppdc-source.cxx:2502
+#: ppdc/ppdc-source.cxx:2532
 #, c-format
 msgid "ppdc: Missing #if on line %d of %s."
 msgstr ""
@@ -7171,79 +8133,79 @@ msgstr ""
 msgid "ppdc: Need a msgid line before any translation strings on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-driver.cxx:712
+#: ppdc/ppdc-driver.cxx:710
 #, c-format
 msgid "ppdc: No message catalog provided for locale %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1608 ppdc/ppdc-source.cxx:2838
-#: ppdc/ppdc-source.cxx:2924 ppdc/ppdc-source.cxx:3017
-#: ppdc/ppdc-source.cxx:3150 ppdc/ppdc-source.cxx:3283
+#: ppdc/ppdc-source.cxx:1606 ppdc/ppdc-source.cxx:2836
+#: ppdc/ppdc-source.cxx:2922 ppdc/ppdc-source.cxx:3015
+#: ppdc/ppdc-source.cxx:3148 ppdc/ppdc-source.cxx:3281
 #, c-format
 msgid "ppdc: Option %s defined in two different groups on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1601
+#: ppdc/ppdc-source.cxx:1599
 #, c-format
 msgid "ppdc: Option %s redefined with a different type on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:662
+#: ppdc/ppdc-source.cxx:660
 #, c-format
 msgid "ppdc: Option constraint must *name on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2451
+#: ppdc/ppdc-source.cxx:2449
 #, c-format
 msgid "ppdc: Too many nested #if's on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:369
+#: ppdc/ppdc.cxx:367
 #, c-format
 msgid "ppdc: Unable to create PPD file \"%s\" - %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:261
+#: ppdc/ppdc.cxx:259
 #, c-format
 msgid "ppdc: Unable to create output directory %s: %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:282
+#: ppdc/ppdc.cxx:280
 #, c-format
 msgid "ppdc: Unable to create output pipes: %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:298 ppdc/ppdc.cxx:304
+#: ppdc/ppdc.cxx:296 ppdc/ppdc.cxx:302
 #, c-format
 msgid "ppdc: Unable to execute cupstestppd: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:1687
+#: ppdc/ppdc-source.cxx:1685
 #, c-format
 msgid "ppdc: Unable to find #po file %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2607
+#: ppdc/ppdc-source.cxx:2605
 #, c-format
 msgid "ppdc: Unable to find include file \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:193
+#: ppdc/ppdc.cxx:191
 #, c-format
 msgid "ppdc: Unable to find localization for \"%s\" - %s"
 msgstr ""
 
-#: ppdc/ppdc.cxx:130
+#: ppdc/ppdc.cxx:128
 #, c-format
 msgid "ppdc: Unable to load localization file \"%s\" - %s"
 msgstr ""
 
-#: ppdc/ppdc-file.cxx:50
+#: ppdc/ppdc-file.cxx:41
 #, c-format
 msgid "ppdc: Unable to open %s: %s"
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2011
+#: ppdc/ppdc-source.cxx:2009
 #, c-format
 msgid "ppdc: Undefined variable (%s) on line %d of %s."
 msgstr ""
@@ -7253,17 +8215,17 @@ msgstr ""
 msgid "ppdc: Unexpected text on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2880
+#: ppdc/ppdc-source.cxx:2878
 #, c-format
 msgid "ppdc: Unknown driver type %s on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:863
+#: ppdc/ppdc-source.cxx:861
 #, c-format
 msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3110
+#: ppdc/ppdc-source.cxx:3108
 #, c-format
 msgid "ppdc: Unknown media size \"%s\" on line %d of %s."
 msgstr ""
@@ -7273,134 +8235,134 @@ msgstr ""
 msgid "ppdc: Unknown message catalog format for \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:3364
+#: ppdc/ppdc-source.cxx:3362
 #, c-format
 msgid "ppdc: Unknown token \"%s\" seen on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:971
+#: ppdc/ppdc-source.cxx:969
 #, c-format
 msgid "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc-source.cxx:2121
+#: ppdc/ppdc-source.cxx:2119
 #, c-format
 msgid "ppdc: Unterminated string starting with %c on line %d of %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:360
+#: ppdc/ppdc.cxx:358
 #, c-format
 msgid "ppdc: Warning - overlapping filename \"%s\"."
 msgstr ""
 
-#: ppdc/ppdc.cxx:375
+#: ppdc/ppdc.cxx:373
 #, c-format
 msgid "ppdc: Writing %s."
 msgstr ""
 
-#: ppdc/ppdc.cxx:143
+#: ppdc/ppdc.cxx:141
 #, c-format
 msgid "ppdc: Writing PPD files to directory \"%s\"."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:130
+#: ppdc/ppdmerge.cxx:128
 #, c-format
 msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:170
+#: ppdc/ppdmerge.cxx:168
 #, c-format
 msgid "ppdmerge: Ignoring PPD file %s."
 msgstr ""
 
-#: ppdc/ppdmerge.cxx:154
+#: ppdc/ppdmerge.cxx:152
 #, c-format
 msgid "ppdmerge: Unable to backup %s to %s - %s"
 msgstr ""
 
-#: systemv/lpstat.c:1777
+#: systemv/lpstat.c:1775
 #, c-format
 msgid "printer %s disabled since %s -"
 msgstr ""
 
-#: systemv/lpstat.c:1766
+#: systemv/lpstat.c:1764
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1771
+#: systemv/lpstat.c:1769
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1900
+#: systemv/lpstat.c:1894
 #, c-format
 msgid "printer %s/%s disabled since %s -"
 msgstr ""
 
-#: systemv/lpstat.c:1886
+#: systemv/lpstat.c:1880
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
 msgstr ""
 
-#: systemv/lpstat.c:1893
+#: systemv/lpstat.c:1887
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
 msgstr ""
 
-#: cups/notify.c:93 cups/notify.c:134
+#: cups/notify.c:85 cups/notify.c:126
 msgid "processing"
 msgstr ""
 
-#: systemv/lp.c:662
+#: systemv/lp.c:666
 #, c-format
 msgid "request id is %s-%d (%d file(s))"
 msgstr ""
 
-#: cups/snmp.c:972
+#: cups/snmp.c:970
 msgid "request-id uses indefinite length"
 msgstr ""
 
-#: systemv/lpstat.c:2032
+#: systemv/lpstat.c:2022
 msgid "scheduler is not running"
 msgstr ""
 
-#: systemv/lpstat.c:2028
+#: systemv/lpstat.c:2018
 msgid "scheduler is running"
 msgstr ""
 
-#: cups/adminutil.c:2148
+#: cups/adminutil.c:2207
 #, c-format
 msgid "stat of %s failed: %s"
 msgstr ""
 
-#: berkeley/lpc.c:203
+#: berkeley/lpc.c:201
 msgid "status\t\tShow status of daemon and queue."
 msgstr ""
 
-#: cups/notify.c:96 cups/notify.c:137
+#: cups/notify.c:88 cups/notify.c:129
 msgid "stopped"
 msgstr ""
 
-#: systemv/lpstat.c:1052
+#: systemv/lpstat.c:1050
 #, c-format
 msgid "system default destination: %s"
 msgstr ""
 
-#: systemv/lpstat.c:1049
+#: systemv/lpstat.c:1047
 #, c-format
 msgid "system default destination: %s/%s"
 msgstr ""
 
-#: cups/notify.c:108 cups/notify.c:140
+#: cups/notify.c:100 cups/notify.c:132
 msgid "unknown"
 msgstr ""
 
-#: cups/notify.c:117
+#: cups/notify.c:109
 msgid "untitled"
 msgstr ""
 
-#: cups/snmp.c:997
+#: cups/snmp.c:995
 msgid "variable-bindings uses indefinite length"
 msgstr ""
 
index efe899f..14c15d4 100644 (file)
@@ -16,7 +16,6 @@
 "\tForm mounted:" = "\tForm mounted:";
 "\tForms allowed:" = "\tForms allowed:";
 "\tInterface: %s.ppd" = "\tInterface: %s.ppd";
-"\tInterface: %s/interfaces/%s" = "\tInterface: %s/interfaces/%s";
 "\tInterface: %s/ppd/%s.ppd" = "\tInterface: %s/ppd/%s.ppd";
 "\tLocation: %s" = "\tLocation: %s";
 "\tOn fault: no alert" = "\tOn fault: no alert";
 "  --help                  Show help." = "  --help                  Show help.";
 "  --help                  Show this help." = "  --help                  Show this help.";
 "  --host regex            Match hostname to regular expression." = "  --host regex            Match hostname to regular expression.";
-"  --lf                    End lines with LF (UNIX/Linux/OS X)." = "  --lf                    End lines with LF (UNIX/Linux/OS X).";
+"  --lf                    End lines with LF (UNIX/Linux/macOS)." = "  --lf                    End lines with LF (UNIX/Linux/macOS).";
 "  --list-filters          List filters that will be used." = "  --list-filters          List filters that will be used.";
 "  --local                 True if service is local." = "  --local                 True if service is local.";
 "  --ls                    List attributes." = "  --ls                    List attributes.";
 "  -V version              Set default IPP version." = "  -V version              Set default IPP version.";
 "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}" = "  -W {all,none,constraints,defaults,duplex,filters,profiles,sizes,translations}";
 "  -X                      Produce XML plist instead of plain text." = "  -X                      Produce XML plist instead of plain text.";
-"  -a                      Browse for all services." = "  -a                      Browse for all services.";
 "  -a                      Export all printers." = "  -a                      Export all printers.";
 "  -c                      Produce CSV output." = "  -c                      Produce CSV output.";
 "  -c catalog.po           Load the specified message catalog." = "  -c catalog.po           Load the specified message catalog.";
 "  -c cups-files.conf      Set cups-files.conf file to use." = "  -c cups-files.conf      Set cups-files.conf file to use.";
 "  -c cupsd.conf           Set cupsd.conf file to use." = "  -c cupsd.conf           Set cupsd.conf file to use.";
-"  -d domain               Browse/resolve in specified domain." = "  -d domain               Browse/resolve in specified domain.";
 "  -d name=value           Set named variable to value." = "  -d name=value           Set named variable to value.";
 "  -d output-dir           Specify the output directory." = "  -d output-dir           Specify the output directory.";
 "  -d printer              Use the named printer." = "  -d printer              Use the named printer.";
 "  -o name=value           Set option(s)." = "  -o name=value           Set option(s).";
 "  -p                      Print URI if true." = "  -p                      Print URI if true.";
 "  -p filename.ppd         Set PPD file." = "  -p filename.ppd         Set PPD file.";
-"  -p program              Run specified program for each service." = "  -p program              Run specified program for each service.";
 "  -q                      Quietly report match via exit code." = "  -q                      Quietly report match via exit code.";
 "  -q                      Run silently." = "  -q                      Run silently.";
 "  -r                      True if service is remote." = "  -r                      True if service is remote.";
 "  -r                      Use 'relaxed' open mode." = "  -r                      Use 'relaxed' open mode.";
 "  -s                      Print service name if true." = "  -s                      Print service name if true.";
+"  -s cups-files.conf      Set cups-files.conf file to use." = "  -s cups-files.conf      Set cups-files.conf file to use.";
 "  -t                      Produce a test report." = "  -t                      Produce a test report.";
 "  -t                      Test PPDs instead of generating them." = "  -t                      Test PPDs instead of generating them.";
 "  -t                      Test the configuration file." = "  -t                      Test the configuration file.";
 "  -t key                  True if the TXT record contains the key." = "  -t key                  True if the TXT record contains the key.";
 "  -t title                Set title." = "  -t title                Set title.";
-"  -t type                 Browse/resolve with specified type." = "  -t type                 Browse/resolve with specified type.";
 "  -u                      Remove the PPD file when finished." = "  -u                      Remove the PPD file when finished.";
 "  -u regex                Match URI to regular expression." = "  -u regex                Match URI to regular expression.";
 "  -v                      Be verbose." = "  -v                      Be verbose.";
 "%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 - copies must be 1 or more." = "%s: Error - copies must be 1 or more.";
 "%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: 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 argument \"%s\"." = "%s: Unknown argument “%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”.";
 "19" = "19";
 "2" = "2";
 "2 inches/sec." = "2 inches/sec.";
+"2-Hole Punch (Landscape)" = "2-Hole Punch (Landscape)";
+"2-Hole Punch (Portrait)" = "2-Hole Punch (Portrait)";
+"2-Hole Punch (Reverse Landscape)" = "2-Hole Punch (Reverse Landscape)";
+"2-Hole Punch (Reverse Portrait)" = "2-Hole Punch (Reverse Portrait)";
 "2-Sided Printing" = "2-Sided Printing";
 "2.00x0.37\"" = "2.00x0.37\"";
 "2.00x0.50\"" = "2.00x0.50\"";
 "3" = "3";
 "3 inches/sec." = "3 inches/sec.";
 "3 x 5" = "3 x 5";
+"3-Hole Punch (Landscape)" = "3-Hole Punch (Landscape)";
+"3-Hole Punch (Portrait)" = "3-Hole Punch (Portrait)";
+"3-Hole Punch (Reverse Landscape)" = "3-Hole Punch (Reverse Landscape)";
+"3-Hole Punch (Reverse Portrait)" = "3-Hole Punch (Reverse Portrait)";
 "3.00x1.00\"" = "3.00x1.00\"";
 "3.00x1.25\"" = "3.00x1.25\"";
 "3.00x2.00\"" = "3.00x2.00\"";
 "360x180dpi" = "360x180dpi";
 "4" = "4";
 "4 inches/sec." = "4 inches/sec.";
+"4-Hole Punch (Landscape)" = "4-Hole Punch (Landscape)";
+"4-Hole Punch (Portrait)" = "4-Hole Punch (Portrait)";
+"4-Hole Punch (Reverse Landscape)" = "4-Hole Punch (Reverse Landscape)";
+"4-Hole Punch (Reverse Portrait)" = "4-Hole Punch (Reverse Portrait)";
 "4.00x1.00\"" = "4.00x1.00\"";
 "4.00x13.00\"" = "4.00x13.00\"";
 "4.00x2.00\"" = "4.00x2.00\"";
 "ARCH E Long Edge" = "ARCH E Long Edge";
 "Accept Jobs" = "Accept Jobs";
 "Accepted" = "Accepted";
+"Accordian Fold" = "Accordian Fold";
 "Add Class" = "Add Class";
 "Add Printer" = "Add Printer";
 "Add RSS Subscription" = "Add RSS Subscription";
 "Address" = "Address";
 "Administration" = "Administration";
+"Alternate" = "Alternate";
+"Alternate Roll" = "Alternate Roll";
+"Aluminum" = "Aluminum";
 "Always" = "Always";
 "AppSocket/HP JetDirect" = "AppSocket/HP JetDirect";
 "Applicator" = "Applicator";
+"Archival Envelope" = "Archival Envelope";
+"Archival Fabric" = "Archival Fabric";
 "Attempt to set %s printer-state to bad value %d." = "Attempt to set %s printer-state to bad value %d.";
+"Attribute \"%s\" is in the wrong group." = "Attribute “%s” is in the wrong group.";
+"Attribute \"%s\" is the wrong value type." = "Attribute “%s” is the wrong value type.";
 "Attribute groups are out of order (%x < %x)." = "Attribute groups are out of order (%x < %x).";
+"Automatic" = "Automatic";
 "B0" = "B0";
 "B1" = "B1";
 "B10" = "B10";
 "B7" = "B7";
 "B8" = "B8";
 "B9" = "B9";
+"Back Print Film" = "Back Print Film";
 "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 OrderDependency" = "Bad OrderDependency";
 "Bad PPD cache file." = "Bad PPD cache file.";
+"Bad PPD file." = "Bad PPD file.";
 "Bad Request" = "Bad Request";
 "Bad SNMP version number" = "Bad SNMP version number";
 "Bad UIConstraints" = "Bad UIConstraints";
 "Bad username in URI" = "Bad username in URI";
 "Bad value string" = "Bad value string";
 "Bad/empty URI" = "Bad/empty URI";
+"Bale" = "Bale";
 "Banners" = "Banners";
+"Bind" = "Bind";
+"Bind (Landscape)" = "Bind (Landscape)";
+"Bind (Portrait)" = "Bind (Portrait)";
+"Bind (Reverse Landscape)" = "Bind (Reverse Landscape)";
+"Bind (Reverse Portrait)" = "Bind (Reverse Portrait)";
+"Bond Envelope" = "Bond Envelope";
 "Bond Paper" = "Bond Paper";
+"Booklet Maker" = "Booklet Maker";
 "Boolean expected for waiteof option \"%s\"." = "Boolean expected for waiteof option “%s”.";
+"Bottom" = "Bottom";
 "Buffer overflow detected, aborting." = "Buffer overflow detected, aborting.";
+"CD" = "CD";
 "CMYK" = "CMYK";
 "CPCL Label Printer" = "CPCL Label Printer";
 "Cancel Jobs" = "Cancel Jobs";
 "Cancel RSS Subscription" = "Cancel RSS Subscription";
 "Canceling print job." = "Canceling print job.";
+"Cannot change printer-is-shared for remote queues." = "Cannot change printer-is-shared for remote queues.";
 "Cannot share a remote Kerberized printer." = "Cannot share a remote Kerberized printer.";
+"Cardboard" = "Cardboard";
+"Cardstock" = "Cardstock";
 "Cassette" = "Cassette";
+"Center" = "Center";
 "Change Settings" = "Change Settings";
 "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.";
+"Coat" = "Coat";
+"Coated Envelope" = "Coated Envelope";
+"Coated Paper" = "Coated Paper";
 "Color" = "Color";
 "Color Mode" = "Color Mode";
+"Colored Labels" = "Colored Labels";
 "Commands may be abbreviated.  Commands are:\n\nexit    help    quit    status  ?" = "Commands may be abbreviated.  Commands are:\n\nexit    help    quit    status  ?";
 "Community name uses indefinite length" = "Community name uses indefinite length";
 "Connected to printer." = "Connected to printer.";
 "Connecting to printer." = "Connecting to printer.";
 "Continue" = "Continue";
 "Continuous" = "Continuous";
+"Continuous Long" = "Continuous Long";
+"Continuous Short" = "Continuous Short";
 "Control file sent successfully." = "Control file sent successfully.";
 "Copying print data." = "Copying print data.";
+"Cotton Envelope" = "Cotton Envelope";
+"Cover" = "Cover";
 "Created" = "Created";
+"Credentials do not validate against site CA certificate." = "Credentials do not validate against site CA certificate.";
+"Credentials have expired." = "Credentials have expired.";
 "Custom" = "Custom";
 "CustominCutInterval" = "CustominCutInterval";
 "CustominTearInterval" = "CustominTearInterval";
 "Cut" = "Cut";
+"Cut Media" = "Cut Media";
 "Cutter" = "Cutter";
+"DVD" = "DVD";
 "Dark" = "Dark";
 "Darkness" = "Darkness";
 "Data file sent successfully." = "Data file sent successfully.";
 "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";
+"Disc" = "Disc";
 "Document #%d does not exist in job #%d." = "Document #%d does not exist in job #%d.";
+"Double Gate Fold" = "Double Gate Fold";
+"Double Staple (Landscape)" = "Double Staple (Landscape)";
+"Double Staple (Portrait)" = "Double Staple (Portrait)";
+"Double Staple (Reverse Landscape)" = "Double Staple (Reverse Landscape)";
+"Double Staple (Reverse Portrait)" = "Double Staple (Reverse Portrait)";
+"Double Wall Cardboard" = "Double Wall Cardboard";
+"Draft" = "Draft";
+"Dry Film" = "Dry Film";
 "Duplexer" = "Duplexer";
 "Dymo" = "Dymo";
 "EPL1 Label Printer" = "EPL1 Label Printer";
 "EPL2 Label Printer" = "EPL2 Label Printer";
 "Edit Configuration File" = "Edit Configuration File";
+"Embossing Foil" = "Embossing Foil";
 "Empty PPD file." = "Empty PPD file.";
 "Encryption is not supported." = "Encryption is not supported.";
+"End Board" = "End Board";
 // TRANSLATORS: Banner/cover sheet after the print job.
 "Ending Banner" = "Ending Banner";
 "English" = "English";
 "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." = "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.";
-"Envelope #10 " = "Envelope #10 ";
+"Envelope" = "Envelope";
+"Envelope #10" = "Envelope #10";
 "Envelope #11" = "Envelope #11";
 "Envelope #12" = "Envelope #12";
 "Envelope #14" = "Envelope #14";
 "Envelope Kaku3" = "Envelope Kaku3";
 "Envelope Kaku3 Long Edge" = "Envelope Kaku3 Long Edge";
 "Envelope Monarch" = "Envelope Monarch";
-"Envelope PRC1 " = "Envelope PRC1 ";
+"Envelope PRC1" = "Envelope PRC1";
 "Envelope PRC1 Long Edge" = "Envelope PRC1 Long Edge";
 "Envelope PRC10" = "Envelope PRC10";
 "Envelope PRC10 Long Edge" = "Envelope PRC10 Long Edge";
 "Export Printers to Samba" = "Export Printers to Samba";
 "Expressions:" = "Expressions:";
 "FAIL" = "FAIL";
+"Fabric" = "Fabric";
 "FanFold German" = "FanFold German";
 "FanFold Legal German" = "FanFold Legal German";
 "Fanfold US" = "Fanfold US";
+"Fast Grayscale" = "Fast Grayscale";
 "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 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”.";
+"Film" = "Film";
+"Fine Envelope" = "Fine Envelope";
 "Finished page %d." = "Finished page %d.";
+"Finishing" = "Finishing";
+"Flexo Base" = "Flexo Base";
+"Flexo Photo Polymer" = "Flexo Photo Polymer";
+"Flute" = "Flute";
+"Foil" = "Foil";
+"Fold" = "Fold";
 "Folio" = "Folio";
 "Forbidden" = "Forbidden";
+"Full Cut Tabs" = "Full Cut Tabs";
+"Gate Fold" = "Gate Fold";
 "General" = "General";
 "Generic" = "Generic";
 "Get-Response-PDU uses indefinite length" = "Get-Response-PDU uses indefinite length";
+"Glass" = "Glass";
+"Glass Colored" = "Glass Colored";
+"Glass Opaque" = "Glass Opaque";
+"Glass Surfaced" = "Glass Surfaced";
+"Glass Textured" = "Glass Textured";
+"Glossy Fabric" = "Glossy Fabric";
+"Glossy Labels" = "Glossy Labels";
+"Glossy Optical Disc" = "Glossy Optical Disc";
 "Glossy Paper" = "Glossy Paper";
+"Glossy Photo Paper" = "Glossy Photo Paper";
 "Got a printer-uri attribute but no job-id." = "Got a printer-uri attribute but no job-id.";
+"Gravure Cylinder" = "Gravure Cylinder";
 "Grayscale" = "Grayscale";
 "HP" = "HP";
+"Hagaki" = "Hagaki";
+"Half Fold" = "Half Fold";
+"Half Z Fold" = "Half Z Fold";
 "Hanging Folder" = "Hanging Folder";
+"Hash buffer too small." = "Hash buffer too small.";
+"Heavyweight Envelope" = "Heavyweight Envelope";
+"Heavyweight Paper" = "Heavyweight Paper";
 "Help file not in index." = "Help file not in index.";
+"High" = "High";
+"High Gloss Fabric" = "High Gloss Fabric";
+"High Gloss Labels" = "High Gloss Labels";
+"High Gloss Optical Disc" = "High Gloss Optical Disc";
+"High Gloss Photo Paper" = "High Gloss Photo Paper";
 "IPP 1setOf attribute with incompatible value tags." = "IPP 1setOf attribute with incompatible value tags.";
 "IPP attribute has no name." = "IPP attribute has no name.";
 "IPP attribute is not a member of the message." = "IPP attribute is not a member of the message.";
 "Illegal option keyword string" = "Illegal option keyword string";
 "Illegal translation string" = "Illegal translation string";
 "Illegal whitespace character" = "Illegal whitespace character";
+"Image Setter Paper" = "Image Setter Paper";
+"Imaging Cylinder" = "Imaging Cylinder";
+"Inkjet Envelope" = "Inkjet Envelope";
+"Inkjet Labels" = "Inkjet Labels";
 "Installable Options" = "Installable Options";
 "Installed" = "Installed";
 "IntelliBar Label Printer" = "IntelliBar Label Printer";
 "Internet Printing Protocol" = "Internet Printing Protocol";
 "Invalid media name arguments." = "Invalid media name arguments.";
 "Invalid media size." = "Invalid media size.";
+"Invalid ppd-name value." = "Invalid ppd-name value.";
 "Invalid printer command \"%s\"." = "Invalid printer command “%s”.";
 "JCL" = "JCL";
 "JIS B0" = "JIS B0";
 "Job state cannot be changed." = "Job state cannot be changed.";
 "Job subscriptions cannot be renewed." = "Job subscriptions cannot be renewed.";
 "Jobs" = "Jobs";
+"Jog" = "Jog";
 "LPD/LPR Host or Printer" = "LPD/LPR Host or Printer";
 "Label Printer" = "Label Printer";
 "Label Top" = "Label Top";
+"Labels" = "Labels";
+"Laminate" = "Laminate";
+"Laminating Foil" = "Laminating Foil";
 "Language \"%s\" not supported." = "Language “%s” not supported.";
 "Large Address" = "Large Address";
+"Large Capacity" = "Large Capacity";
 "LaserJet Series PCL 4/5" = "LaserJet Series PCL 4/5";
+"Left" = "Left";
+"Left Gate Fold" = "Left Gate Fold";
+"Letter Fold" = "Letter Fold";
 "Letter Oversize" = "Letter Oversize";
 "Letter Oversize Long Edge" = "Letter Oversize Long Edge";
+"Letterhead" = "Letterhead";
 "Light" = "Light";
+"Lightweight Envelope" = "Lightweight Envelope";
+"Lightweight Paper" = "Lightweight Paper";
 "Line longer than the maximum allowed (255 characters)" = "Line longer than the maximum allowed (255 characters)";
 "List Available Printers" = "List Available Printers";
 "Load paper." = "Load paper.";
+"Local printer created." = "Local printer created.";
 "Long-Edge (Portrait)" = "Long-Edge (Portrait)";
-"Looking for printer..." = "Looking for printer…";
+"Looking for printer." = "Looking for printer.";
+"Main" = "Main";
+"Main Roll" = "Main Roll";
+"Manual" = "Manual";
 "Manual Feed" = "Manual Feed";
+"Matte Fabric" = "Matte Fabric";
+"Matte Labels" = "Matte Labels";
+"Matte Optical Disc" = "Matte Optical Disc";
+"Matte Photo Paper" = "Matte Photo Paper";
 "Media Size" = "Media Size";
 "Media Source" = "Media Source";
 "Media Tracking" = "Media Tracking";
 "Media Type" = "Media Type";
 "Medium" = "Medium";
 "Memory allocation error" = "Memory allocation error";
+"Metal" = "Metal";
+"Metal Glossy" = "Metal Glossy";
+"Metal High Gloss" = "Metal High Gloss";
+"Metal Matte" = "Metal Matte";
+"Metal Satin" = "Metal Satin";
+"Metal Semi Gloss" = "Metal Semi Gloss";
+"Middle" = "Middle";
 "Missing CloseGroup" = "Missing CloseGroup";
 "Missing PPD-Adobe-4.x header" = "Missing PPD-Adobe-4.x header";
 "Missing asterisk in column 1" = "Missing asterisk in column 1";
 "Missing notify-subscription-ids attribute." = "Missing notify-subscription-ids attribute.";
 "Missing option keyword" = "Missing option keyword";
 "Missing requesting-user-name attribute." = "Missing requesting-user-name attribute.";
+"Missing required attribute \"%s\"." = "Missing required attribute “%s”.";
 "Missing required attributes." = "Missing required attributes.";
 "Missing resource in URI" = "Missing resource in URI";
 "Missing scheme in URI" = "Missing scheme in URI";
 "Modifiers:" = "Modifiers:";
 "Modify Class" = "Modify Class";
 "Modify Printer" = "Modify Printer";
+"Mounting Tape" = "Mounting Tape";
 "Move All Jobs" = "Move All Jobs";
 "Move Job" = "Move Job";
 "Moved Permanently" = "Moved Permanently";
+"Multi Layer" = "Multi Layer";
+"Multi Part Form" = "Multi Part Form";
+"Multipurpose" = "Multipurpose";
 "NULL PPD file pointer" = "NULL PPD file pointer";
 "Name OID uses indefinite length" = "Name OID uses indefinite length";
 "Nested classes are not allowed." = "Nested classes are not allowed.";
 "Never" = "Never";
+"New credentials are not valid for name." = "New credentials are not valid for name.";
+"New credentials are older than stored credentials." = "New credentials are older than stored credentials.";
 "No" = "No";
 "No Content" = "No Content";
+"No Finishing" = "No Finishing";
 "No PPD name" = "No PPD name";
 "No VarBind SEQUENCE" = "No VarBind SEQUENCE";
 "No Windows printer drivers are installed." = "No Windows printer drivers are installed.";
 "No active jobs on %s." = "No active jobs on %s.";
 "No attributes in request." = "No attributes in request.";
 "No authentication information provided." = "No authentication information provided.";
+"No common name specified." = "No common name specified.";
 "No community name" = "No community name";
 "No default printer." = "No default printer.";
 "No destinations added." = "No destinations added.";
 "No request protocol version." = "No request protocol version.";
 "No request sent." = "No request sent.";
 "No request-id" = "No request-id";
+"No stored credentials, not valid for name." = "No stored credentials, not valid for name.";
 "No subscription attributes in request." = "No subscription attributes in request.";
 "No subscriptions found." = "No subscriptions found.";
 "No variable-bindings SEQUENCE" = "No variable-bindings SEQUENCE";
 "Off (1-Sided)" = "Off (1-Sided)";
 "Oki" = "Oki";
 "Online Help" = "Online Help";
+"Only local users can create a local printer." = "Only local users can create a local printer.";
 "Open of %s failed: %s" = "Open of %s failed: %s";
 "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";
+"Optical Disc" = "Optical Disc";
 "Option \"%s\" cannot be included via %%%%IncludeFeature." = "Option “%s” cannot be included via %%%%IncludeFeature.";
 "Options Installed" = "Options Installed";
 "Options:" = "Options:";
+"Other" = "Other";
 "Out of date PPD cache file." = "Out of date PPD cache file.";
 "Out of memory." = "Out of memory.";
 "Output Mode" = "Output Mode";
 "PRC32K Oversize Long Edge" = "PRC32K Oversize Long Edge";
 "Packet does not contain a Get-Response-PDU" = "Packet does not contain a Get-Response-PDU";
 "Packet does not start with SEQUENCE" = "Packet does not start with SEQUENCE";
+"Paper" = "Paper";
 "Paper jam." = "Paper jam.";
 "Paper tray is almost empty." = "Paper tray is almost empty.";
 "Paper tray is empty." = "Paper tray is empty.";
 "Paper tray is missing." = "Paper tray is missing.";
+"Parallel Fold" = "Parallel Fold";
 "ParamCustominCutInterval" = "ParamCustominCutInterval";
 "ParamCustominTearInterval" = "ParamCustominTearInterval";
 "Password for %s on %s? " = "Password for %s on %s? ";
 "Pause Class" = "Pause Class";
 "Pause Printer" = "Pause Printer";
 "Peel-Off" = "Peel-Off";
+"Permanent Labels" = "Permanent Labels";
 "Photo" = "Photo";
+"Photo Film" = "Photo Film";
 "Photo Labels" = "Photo Labels";
+"Photo Paper" = "Photo Paper";
+"Photographic Archival" = "Photographic Archival";
+"Plain Envelope" = "Plain Envelope";
 "Plain Paper" = "Plain Paper";
+"Plastic" = "Plastic";
+"Plastic Archival" = "Plastic Archival";
+"Plastic Colored" = "Plastic Colored";
+"Plastic Glossy" = "Plastic Glossy";
+"Plastic High Gloss" = "Plastic High Gloss";
+"Plastic Matte" = "Plastic Matte";
+"Plastic Satin" = "Plastic Satin";
+"Plastic Semi Gloss" = "Plastic Semi Gloss";
+"Plate" = "Plate";
 "Policies" = "Policies";
+"Polyester" = "Polyester";
 "Port Monitor" = "Port Monitor";
 "PostScript Printer" = "PostScript Printer";
 "Postcard" = "Postcard";
-"Postcard Double " = "Postcard Double ";
+"Postcard Double" = "Postcard Double";
 "Postcard Double Long Edge" = "Postcard Double Long Edge";
 "Postcard Long Edge" = "Postcard Long Edge";
+"Poster Fold" = "Poster Fold";
+"Pre Cut Tabs" = "Pre Cut Tabs";
 "Preparing to print." = "Preparing to print.";
+"Preprinted Envelope" = "Preprinted Envelope";
+"Preprinted Paper" = "Preprinted Paper";
 "Print Density" = "Print Density";
 "Print Job:" = "Print Job:";
 "Print Mode" = "Print Mode";
+"Print Quality" = "Print Quality";
 "Print Rate" = "Print Rate";
 "Print Self-Test Page" = "Print Self-Test Page";
 "Print Speed" = "Print Speed";
 "Print job canceled at printer." = "Print job canceled at printer.";
 "Print job too large." = "Print job too large.";
 "Print job was not accepted." = "Print job was not accepted.";
+"Printer \"%s\" already exists." = "Printer “%s” already exists.";
 "Printer Added" = "Printer Added";
 "Printer Default" = "Printer Default";
 "Printer Deleted" = "Printer Deleted";
 "Printer:" = "Printer:";
 "Printers" = "Printers";
 "Printing page %d, %u%% complete." = "Printing page %d, %u%% complete.";
+"Punch" = "Punch";
+"Punched Paper" = "Punched Paper";
 "Quarto" = "Quarto";
 "Quota limit reached." = "Quota limit reached.";
 "Rank    Owner   Job     File(s)                         Total Size" = "Rank    Owner   Job     File(s)                         Total Size";
+"Rear" = "Rear";
 "Reject Jobs" = "Reject Jobs";
 "Remote host did not accept control file (%d)." = "Remote host did not accept control file (%d).";
 "Remote host did not accept data file (%d)." = "Remote host did not accept data file (%d).";
 "Resume Printer" = "Resume Printer";
 "Return Address" = "Return Address";
 "Rewind" = "Rewind";
+"Right" = "Right";
+"Right Gate Fold" = "Right Gate Fold";
+"Roll" = "Roll";
+"Roll 1" = "Roll 1";
+"Roll 10" = "Roll 10";
+"Roll 2" = "Roll 2";
+"Roll 3" = "Roll 3";
+"Roll 4" = "Roll 4";
+"Roll 5" = "Roll 5";
+"Roll 6" = "Roll 6";
+"Roll 7" = "Roll 7";
+"Roll 8" = "Roll 8";
+"Roll 9" = "Roll 9";
 "Running command: %s %s -N -A %s -c '%s'" = "Running command: %s %s -N -A %s -c '%s'";
 "SEQUENCE uses indefinite length" = "SEQUENCE uses indefinite length";
 "SSL/TLS Negotiation Error" = "SSL/TLS Negotiation Error";
+"Saddle Stitch" = "Saddle Stitch";
+"Satin Labels" = "Satin Labels";
+"Satin Optical Disc" = "Satin Optical Disc";
+"Satin Photo Paper" = "Satin Photo Paper";
+"Screen" = "Screen";
+"Screen Paged" = "Screen Paged";
+"Security Labels" = "Security Labels";
 "See Other" = "See Other";
+"See remote printer." = "See remote printer.";
+"Self Adhesive" = "Self Adhesive";
+"Self Adhesive Film" = "Self Adhesive Film";
+"Self-signed credentials are blocked." = "Self-signed credentials are blocked.";
+"Semi-Gloss Fabric" = "Semi-Gloss Fabric";
+"Semi-Gloss Labels" = "Semi-Gloss Labels";
+"Semi-Gloss Optical Disc" = "Semi-Gloss Optical Disc";
+"Semi-Gloss Photo Paper" = "Semi-Gloss Photo Paper";
 "Sending data to printer." = "Sending data to printer.";
 "Server Restarted" = "Server Restarted";
 "Server Security Auditing" = "Server Security Auditing";
 "Set Publishing" = "Set Publishing";
 "Shipping Address" = "Shipping Address";
 "Short-Edge (Landscape)" = "Short-Edge (Landscape)";
+"Shrink Foil" = "Shrink Foil";
+"Side" = "Side";
+"Single Face" = "Single Face";
+"Single Punch (Landscape)" = "Single Punch (Landscape)";
+"Single Punch (Portrait)" = "Single Punch (Portrait)";
+"Single Punch (Reverse Landscape)" = "Single Punch (Reverse Landscape)";
+"Single Punch (Reverse Portrait)" = "Single Punch (Reverse Portrait)";
+"Single Staple (Landscape)" = "Single Staple (Landscape)";
+"Single Staple (Portrait)" = "Single Staple (Portrait)";
+"Single Staple (Reverse Landscape)" = "Single Staple (Reverse Landscape)";
+"Single Staple (Reverse Portrait)" = "Single Staple (Reverse Portrait)";
+"Single Wall Cardboard" = "Single Wall Cardboard";
+"Sleeve" = "Sleeve";
 "Special Paper" = "Special Paper";
 "Spooling job, %.0f%% complete." = "Spooling job, %.0f%% complete.";
 "Standard" = "Standard";
+"Staple" = "Staple";
+"Staple Edge" = "Staple Edge";
+"Staple Edge (Landscape)" = "Staple Edge (Landscape)";
+"Staple Edge (Portrait)" = "Staple Edge (Portrait)";
+"Staple Edge (Reverse Landscape)" = "Staple Edge (Reverse Landscape)";
+"Staple Edge (Reverse Portrait)" = "Staple Edge (Reverse Portrait)";
 // TRANSLATORS: Banner/cover sheet before the print job.
 "Starting Banner" = "Starting Banner";
 "Starting page %d." = "Starting page %d.";
 "Statement" = "Statement";
+"Stationery" = "Stationery";
+"Stationery Archival" = "Stationery Archival";
+"Stationery Cotton" = "Stationery Cotton";
+"Stationery Heavyweight Coated" = "Stationery Heavyweight Coated";
+"Stationery Inkjet Paper" = "Stationery Inkjet Paper";
 "Subscription #%d does not exist." = "Subscription #%d does not exist.";
 "Substitutions:" = "Substitutions:";
 "Super A" = "Super A";
 "Super B" = "Super B";
 "Super B/A3" = "Super B/A3";
 "Switching Protocols" = "Switching Protocols";
+"Tab Stock" = "Tab Stock";
 "Tabloid" = "Tabloid";
 "Tabloid Oversize" = "Tabloid Oversize";
 "Tabloid Oversize Long Edge" = "Tabloid Oversize Long Edge";
 "Too many active jobs." = "Too many active jobs.";
 "Too many job-sheets values (%d > 2)." = "Too many job-sheets values (%d > 2).";
 "Too many printer-state-reasons values (%d > %d)." = "Too many printer-state-reasons values (%d > %d).";
+"Top" = "Top";
+"Tractor" = "Tractor";
+"Transfer" = "Transfer";
 "Transparency" = "Transparency";
 "Tray" = "Tray";
 "Tray 1" = "Tray 1";
+"Tray 10" = "Tray 10";
+"Tray 11" = "Tray 11";
+"Tray 12" = "Tray 12";
+"Tray 13" = "Tray 13";
+"Tray 14" = "Tray 14";
+"Tray 15" = "Tray 15";
+"Tray 16" = "Tray 16";
+"Tray 17" = "Tray 17";
+"Tray 18" = "Tray 18";
+"Tray 19" = "Tray 19";
 "Tray 2" = "Tray 2";
+"Tray 20" = "Tray 20";
 "Tray 3" = "Tray 3";
 "Tray 4" = "Tray 4";
+"Tray 5" = "Tray 5";
+"Tray 6" = "Tray 6";
+"Tray 7" = "Tray 7";
+"Tray 8" = "Tray 8";
+"Tray 9" = "Tray 9";
+"Triple Staple (Landscape)" = "Triple Staple (Landscape)";
+"Triple Staple (Portrait)" = "Triple Staple (Portrait)";
+"Triple Staple (Reverse Landscape)" = "Triple Staple (Reverse Landscape)";
+"Triple Staple (Reverse Portrait)" = "Triple Staple (Reverse Portrait)";
+"Triple Wall Cardboard" = "Triple Wall Cardboard";
+"Trust on first use is disabled." = "Trust on first use is disabled.";
 "URI Too Long" = "URI Too Long";
 "URI too large" = "URI too large";
 "US Ledger" = "US Ledger";
 "Unable to copy PPD file." = "Unable to copy PPD file.";
 "Unable to copy Windows 2000 printer driver files (%d)." = "Unable to copy Windows 2000 printer driver files (%d).";
 "Unable to copy Windows 9x printer driver files (%d)." = "Unable to copy Windows 9x printer driver files (%d).";
-"Unable to copy interface script - %s" = "Unable to copy interface script - %s";
+"Unable to create credentials from array." = "Unable to create credentials from array.";
 "Unable to create printer-uri" = "Unable to create printer-uri";
+"Unable to create printer." = "Unable to create printer.";
 "Unable to create server credentials." = "Unable to create server credentials.";
 "Unable to create temporary file" = "Unable to create temporary file";
 "Unable to delete class" = "Unable to delete class";
 "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 hash algorithm." = "Unknown hash algorithm.";
 "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”.";
 "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: lpmove job/src dest" = "Usage: lpmove job/src dest";
 "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";
+"Vellum Paper" = "Vellum Paper";
 "Version uses indefinite length" = "Version uses indefinite length";
 "Waiting for job to complete." = "Waiting for job to complete.";
 "Waiting for printer to become available." = "Waiting for printer to become available.";
 "Waiting for printer to finish." = "Waiting for printer to finish.";
 "Warning, no Windows 2000 printer drivers are installed." = "Warning, no Windows 2000 printer drivers are installed.";
+"Waterproof Fabric" = "Waterproof Fabric";
 "Web Interface is Disabled" = "Web Interface is Disabled";
+"Wet Film" = "Wet Film";
+"Windowed Envelope" = "Windowed Envelope";
 "Yes" = "Yes";
 "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>." = "You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A>.";
+"Z Fold" = "Z Fold";
 "ZPL Label Printer" = "ZPL Label Printer";
 "Zebra" = "Zebra";
 "aborted" = "aborted";
 "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 PPD after \"-%c\" option." = "lpadmin: Expected PPD after “-%c” 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 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.";
 "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”.";
 "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";
index 369e7fd..4d5d18b 100644 (file)
@@ -32,7 +32,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.4.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
+"POT-Creation-Date: 2016-08-30 16:00-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"
@@ -102,10 +102,6 @@ msgid "\tInterface: %s.ppd"
 msgstr "\tInterfície: %s.ppd"
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr "\tInterfície: %s/interfícies/%s"
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tInterfície: %s/ppd/%s.ppd"
 
@@ -982,8 +978,8 @@ msgstr ""
 msgid "  --host regex            Match hostname to regular expression."
 msgstr ""
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
-msgstr "  --lf                    Final de línia amb LF (UNIX/Linux/OS X)."
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
+msgstr ""
 
 msgid "  --list-filters          List filters that will be used."
 msgstr ""
@@ -1128,9 +1124,6 @@ msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 "  -X                      Retorna els plist en XML en comptes de text pla."
 
-msgid "  -a                      Browse for all services."
-msgstr ""
-
 msgid "  -a                      Export all printers."
 msgstr "  -a                      Exporta totes les impressores."
 
@@ -1147,9 +1140,6 @@ msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 "  -c cupsd.conf           Estableix el fitxer cupsd.conf que cal fer servir."
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr ""
-
 msgid "  -d name=value           Set named variable to value."
 msgstr "  -d nom=valor           Estableix la variable indicada al valor."
 
@@ -1255,9 +1245,6 @@ msgstr ""
 msgid "  -p filename.ppd         Set PPD file."
 msgstr "  -p nomfitxer.ppd         Estableix el fitxer PPD."
 
-msgid "  -p program              Run specified program for each service."
-msgstr ""
-
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 
@@ -1273,6 +1260,9 @@ msgstr "  -r                      Fa servir el mode obert «relaxat»."
 msgid "  -s                      Print service name if true."
 msgstr ""
 
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      Genera un informe de prova."
 
@@ -1288,9 +1278,6 @@ msgstr ""
 msgid "  -t title                Set title."
 msgstr "  -t títol                Estableix el títol."
 
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr ""
-
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      Elimina el fitxer PPD quan ha acabat."
 
@@ -1676,6 +1663,10 @@ msgstr ""
 "l'identificador de la feina."
 
 #, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr ""
+
+#, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr ""
 "%s: error - s'esperava un conjunt de caràcters després de l'opció «-S»."
@@ -1885,6 +1876,10 @@ msgid "%s: Unable to resolve \"%s\"."
 msgstr ""
 
 #, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr "%s: el destí «%s» és desconegut."
 
@@ -2172,6 +2167,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 polzades/seg."
 
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "2-Sided Printing"
 msgstr "Impressió a doble cara"
 
@@ -2286,6 +2293,18 @@ msgstr "3 polzades/seg."
 msgid "3 x 5"
 msgstr "3 x 5"
 
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "3.00x1.00\""
 msgstr "3.00x1.00\""
 
@@ -2352,6 +2371,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 polzades/seg."
 
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "4.00x1.00\""
 msgstr "4.00x1.00\""
 
@@ -2652,6 +2683,9 @@ msgstr "Accepta feines"
 msgid "Accepted"
 msgstr "Acceptada"
 
+msgid "Accordian Fold"
+msgstr ""
+
 msgid "Add Class"
 msgstr "Afegeix una classe"
 
@@ -2667,6 +2701,15 @@ msgstr "Adreça"
 msgid "Administration"
 msgstr "Administració"
 
+msgid "Alternate"
+msgstr ""
+
+msgid "Alternate Roll"
+msgstr ""
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "Sempre"
 
@@ -2676,15 +2719,32 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "Aplicador"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
 "S'ha intentat posar l'estat de la impressora %s a un valor incorrecte %d."
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "Grups d'atribut desordenats (%x < %x)."
 
+msgid "Automatic"
+msgstr ""
+
 msgid "B0"
 msgstr "B0"
 
@@ -2721,6 +2781,9 @@ msgstr "B8"
 msgid "B9"
 msgstr "B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr ""
@@ -2740,6 +2803,9 @@ msgstr "La OrderDependency és incorrecta"
 msgid "Bad PPD cache file."
 msgstr "El fitxer PPD de memòria cau és incorrecte."
 
+msgid "Bad PPD file."
+msgstr ""
+
 msgid "Bad Request"
 msgstr "La petició és incorrecta"
 
@@ -2865,19 +2931,49 @@ msgstr "El valor de la cadena és incorrecte"
 msgid "Bad/empty URI"
 msgstr ""
 
+msgid "Bale"
+msgstr ""
+
 msgid "Banners"
 msgstr "Bàners"
 
+msgid "Bind"
+msgstr ""
+
+msgid "Bind (Landscape)"
+msgstr ""
+
+msgid "Bind (Portrait)"
+msgstr ""
+
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "Paper de valors"
 
+msgid "Booklet Maker"
+msgstr ""
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "S'esperava un booleà per l'opció waiteof «%s»."
 
+msgid "Bottom"
+msgstr ""
+
 msgid "Buffer overflow detected, aborting."
 msgstr "S'ha detectat un desbordament la memòria cau. S'interromp."
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMYK"
 
@@ -2893,12 +2989,24 @@ msgstr "Cancel·la la subscripció RSS"
 msgid "Canceling print job."
 msgstr "Es cancel·la feina."
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
 msgid "Cannot share a remote Kerberized printer."
 msgstr "No es pot compartir una impressora remota sobre Kerberos."
 
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
+msgstr ""
+
 msgid "Cassette"
 msgstr "Classet"
 
+msgid "Center"
+msgstr ""
+
 msgid "Change Settings"
 msgstr "Canvia la configuració"
 
@@ -2915,12 +3023,24 @@ msgstr "Neteja els capçals de la impressora"
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job no permet l'ús de l'atribut job-uri."
 
+msgid "Coat"
+msgstr ""
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
+msgstr ""
+
 msgid "Color"
 msgstr "Color"
 
 msgid "Color Mode"
 msgstr "Mode de color"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -2945,15 +3065,33 @@ msgstr "Continua"
 msgid "Continuous"
 msgstr "Contínua"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr "El fitxer de control s'ha enviat correctament."
 
 msgid "Copying print data."
 msgstr "Es copien les dades d'impressió."
 
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
 msgid "Created"
 msgstr "Creat"
 
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
+
 msgid "Custom"
 msgstr "Personalitzat"
 
@@ -2966,9 +3104,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "Tall"
 
+msgid "Cut Media"
+msgstr ""
+
 msgid "Cutter"
 msgstr "Ganiveta"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "Fosc"
 
@@ -3033,10 +3177,37 @@ msgstr "El directori «%s» té els permisos correctes (0%o/uid=%d/gid=%d)."
 msgid "Disabled"
 msgstr "Desabilitat"
 
+msgid "Disc"
+msgstr ""
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "No s'ha trobat el document #%d a la feina #%d."
 
+msgid "Double Gate Fold"
+msgstr ""
+
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dry Film"
+msgstr ""
+
 msgid "Duplexer"
 msgstr "Unitat d'impressió a dues cares"
 
@@ -3052,12 +3223,18 @@ msgstr "Impressora d'etiquetes EPL2"
 msgid "Edit Configuration File"
 msgstr "Edita el fitxer de configuració"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr "El fitxer PPD és buit."
 
 msgid "Encryption is not supported."
 msgstr ""
 
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "S'està acabant el bàner"
@@ -3075,8 +3252,11 @@ msgstr ""
 "l'autenticació Kerberos, assegureu-vos de tenir un tiquet Kerberos que sigui "
 "vàlid."
 
-msgid "Envelope #10 "
-msgstr "Sobre #10"
+msgid "Envelope"
+msgstr ""
+
+msgid "Envelope #10"
+msgstr ""
 
 msgid "Envelope #11"
 msgstr "Sobre #11"
@@ -3165,8 +3345,8 @@ msgstr "Sobre Kaku3 costat llarg"
 msgid "Envelope Monarch"
 msgstr "Sobre monarch"
 
-msgid "Envelope PRC1 "
-msgstr "Sobre PRC1"
+msgid "Envelope PRC1"
+msgstr ""
 
 msgid "Envelope PRC1 Long Edge"
 msgstr "Sobre PRC1 costat llarg"
@@ -3297,6 +3477,9 @@ msgstr ""
 msgid "FAIL"
 msgstr "ERROR"
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr "Paper continu alemany"
 
@@ -3306,6 +3489,9 @@ msgstr "Paper continu legal alemany"
 msgid "Fanfold US"
 msgstr "Paper continu americà"
 
+msgid "Fast Grayscale"
+msgstr ""
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "El fitxer «%s» conté un camí relatiu."
@@ -3326,8 +3512,8 @@ msgstr "El fitxer «%s» no està disponible: %s"
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "El fitxer «%s» té els permisos correctes (0%o/uid=%d/gid=%d)."
 
-msgid "File Folder "
-msgstr "Carpeta d'arxivador "
+msgid "File Folder"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -3335,16 +3521,46 @@ msgid ""
 "in \"%s/cups-files.conf\"."
 msgstr ""
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
 msgstr "S'ha acabat la pàgina %d."
 
+msgid "Finishing"
+msgstr ""
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
+msgstr ""
+
 msgid "Folio"
 msgstr "Foli"
 
 msgid "Forbidden"
 msgstr "Prohibit"
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr ""
+
 msgid "General"
 msgstr "General"
 
@@ -3354,24 +3570,87 @@ msgstr "Genèric"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "La Get-Response-PDU fa servir una longitud indefinida"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
 msgstr "Paper fotogràfic"
 
+msgid "Glossy Photo Paper"
+msgstr ""
+
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "S'ha obtingut l'atribut printer-uri però no el job-id."
 
+msgid "Gravure Cylinder"
+msgstr ""
+
 msgid "Grayscale"
 msgstr "Escala de grisos"
 
 msgid "HP"
 msgstr "HP"
 
+msgid "Hagaki"
+msgstr ""
+
+msgid "Half Fold"
+msgstr ""
+
+msgid "Half Z Fold"
+msgstr ""
+
 msgid "Hanging Folder"
 msgstr "Carpeta per penjar"
 
+msgid "Hash buffer too small."
+msgstr ""
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
 msgid "Help file not in index."
 msgstr "El fitxer d'ajuda no és a l'índex."
 
+msgid "High"
+msgstr ""
+
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+msgid "High Gloss Photo Paper"
+msgstr ""
+
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr ""
 "L'atribut 1setOf del IPP té etiquetes amb valors que no són compatibles."
@@ -3462,6 +3741,18 @@ msgstr "Cadena de traducció no permesa"
 msgid "Illegal whitespace character"
 msgstr "Caràcter d'espai en blanc no permés"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "Opcions instal·lables"
 
@@ -3495,6 +3786,9 @@ msgstr ""
 msgid "Invalid media size."
 msgstr "Mida del suport no vàlida."
 
+msgid "Invalid ppd-name value."
+msgstr ""
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "La comanda de la impressora «%s» no és vàlida."
@@ -3607,6 +3901,9 @@ msgstr "Les subscripcions a les feines no es poden renovar."
 msgid "Jobs"
 msgstr "Feines"
 
+msgid "Jog"
+msgstr ""
+
 msgid "LPD/LPR Host or Printer"
 msgstr "Amfitrió o impressora LPD/LPR"
 
@@ -3616,6 +3913,15 @@ msgstr "Impressora d'etiquetes"
 msgid "Label Top"
 msgstr "Capçalera de l'etiqueta"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr ""
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "L'idioma «%s» no està disponible."
@@ -3623,18 +3929,39 @@ msgstr "L'idioma «%s» no està disponible."
 msgid "Large Address"
 msgstr "Adreça gran"
 
+msgid "Large Capacity"
+msgstr ""
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "Sèrie Laser Jet PCL 4/5"
 
+msgid "Left"
+msgstr ""
+
+msgid "Left Gate Fold"
+msgstr ""
+
+msgid "Letter Fold"
+msgstr ""
+
 msgid "Letter Oversize"
 msgstr "Carta gran"
 
 msgid "Letter Oversize Long Edge"
 msgstr "Carta americà gran costat llarg"
 
+msgid "Letterhead"
+msgstr ""
+
 msgid "Light"
 msgstr "Lluminós"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "La línia la longitud màxima permesa (255 caràcters)"
 
@@ -3644,20 +3971,44 @@ msgstr "Llista les impressores disponibles"
 msgid "Load paper."
 msgstr ""
 
+msgid "Local printer created."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Costat-llarg (vertical)"
 
-msgid "Looking for printer..."
+msgid "Looking for printer."
+msgstr "S'està buscant la impressora."
+
+msgid "Main"
+msgstr ""
+
+msgid "Main Roll"
+msgstr ""
+
+msgid "Manual"
 msgstr ""
 
 msgid "Manual Feed"
 msgstr "Alimentació manual"
 
-msgid "Media Size"
-msgstr "Mida del paper"
+msgid "Matte Fabric"
+msgstr ""
 
-msgid "Media Source"
-msgstr "Font del paper"
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
+msgid "Media Size"
+msgstr "Mida del paper"
+
+msgid "Media Source"
+msgstr "Font del paper"
 
 msgid "Media Tracking"
 msgstr "Seguiment del paper"
@@ -3671,6 +4022,27 @@ msgstr "Mitjà"
 msgid "Memory allocation error"
 msgstr "S'ha produït un error d'ubicació de memòria"
 
+msgid "Metal"
+msgstr ""
+
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr ""
+
 msgid "Missing CloseGroup"
 msgstr "Falta el CloseGroup"
 
@@ -3708,6 +4080,10 @@ msgstr "Falta l'opció keyword"
 msgid "Missing requesting-user-name attribute."
 msgstr "Falta l'atribut requesting-user-name."
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
 msgid "Missing required attributes."
 msgstr "Falten alguns atributs necessaris."
 
@@ -3751,6 +4127,9 @@ msgstr "Modifica la classe"
 msgid "Modify Printer"
 msgstr "Modifica la impressora"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "Mou totes les feines"
 
@@ -3760,6 +4139,15 @@ msgstr "Mou la feina"
 msgid "Moved Permanently"
 msgstr "S'ha mogut de manera permanent"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr ""
+
 msgid "NULL PPD file pointer"
 msgstr "Punter del fitxer PPD NUL"
 
@@ -3772,12 +4160,21 @@ msgstr "No es permeten les classes imbricades."
 msgid "Never"
 msgstr "Mai"
 
+msgid "New credentials are not valid for name."
+msgstr ""
+
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
 msgid "No"
 msgstr "No"
 
 msgid "No Content"
 msgstr "No hi ha contingut"
 
+msgid "No Finishing"
+msgstr ""
+
 msgid "No PPD name"
 msgstr "El PPD no té nom"
 
@@ -3803,6 +4200,9 @@ msgstr "No hi ha atributs en demanda."
 msgid "No authentication information provided."
 msgstr "No s'ha donat cap informació d'autenticació."
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "Ho hi na cap nom de comunitat"
 
@@ -3859,6 +4259,9 @@ msgstr ""
 msgid "No request-id"
 msgstr "No hi ha cap request-id"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr "No hi ha cap atribut de la subscripció a la sol·licitud."
 
@@ -3919,6 +4322,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "Ajuda en línia"
 
+msgid "Only local users can create a local printer."
+msgstr ""
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "No s'ha pogut obrir %s: %s"
@@ -3932,6 +4338,9 @@ msgstr "OpenUI/JCLOpenUI sense un CloseUI/JCLCloseUI abans"
 msgid "Operation Policy"
 msgstr "Política d'operacions"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "L'opció «%s» no es pot incloure a través de %%%%IncludeFeature."
@@ -3942,6 +4351,9 @@ msgstr "Opcions instal·lades"
 msgid "Options:"
 msgstr "Opcions:"
 
+msgid "Other"
+msgstr ""
+
 msgid "Out of date PPD cache file."
 msgstr "El fitxer de memòria cau del PPD no està actualitzat."
 
@@ -3990,6 +4402,9 @@ msgstr "El paquet no conté cap Get-Response-PDU"
 msgid "Packet does not start with SEQUENCE"
 msgstr "El paquet no comença amb SEQUENCE"
 
+msgid "Paper"
+msgstr ""
+
 msgid "Paper jam."
 msgstr ""
 
@@ -4002,6 +4417,9 @@ msgstr ""
 msgid "Paper tray is missing."
 msgstr ""
 
+msgid "Parallel Fold"
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4025,18 +4443,63 @@ msgstr "Posa la impressora en pausa"
 msgid "Peel-Off"
 msgstr "Desenganxar"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "Fotografia"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "Etiquetes de fotografia"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr "Paper normal"
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "Polítiques"
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "Seguiment del port"
 
@@ -4046,8 +4509,8 @@ msgstr "Impressora PostScript"
 msgid "Postcard"
 msgstr "Postal"
 
-msgid "Postcard Double "
-msgstr "Postal doble"
+msgid "Postcard Double"
+msgstr ""
 
 msgid "Postcard Double Long Edge"
 msgstr "Postal doble costat llarg"
@@ -4055,9 +4518,21 @@ msgstr "Postal doble costat llarg"
 msgid "Postcard Long Edge"
 msgstr "Postal costat llarg"
 
+msgid "Poster Fold"
+msgstr ""
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
 msgstr ""
 
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
+msgstr ""
+
 msgid "Print Density"
 msgstr "Densitat de la impressió"
 
@@ -4067,6 +4542,9 @@ msgstr "Feina d'impressió:"
 msgid "Print Mode"
 msgstr "Mode d'impressió"
 
+msgid "Print Quality"
+msgstr ""
+
 msgid "Print Rate"
 msgstr "Ritme d'impressió"
 
@@ -4097,6 +4575,10 @@ msgstr "La feina d'impressió és massa llarga."
 msgid "Print job was not accepted."
 msgstr ""
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "S'ha afegit una impressora"
 
@@ -4131,6 +4613,12 @@ msgstr "Impressores"
 msgid "Printing page %d, %u%% complete."
 msgstr ""
 
+msgid "Punch"
+msgstr ""
+
+msgid "Punched Paper"
+msgstr ""
+
 msgid "Quarto"
 msgstr "Quart"
 
@@ -4141,6 +4629,9 @@ msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 "Rang    Propietari   Feina     Fitxer(s)                         Mida total"
 
+msgid "Rear"
+msgstr ""
+
 msgid "Reject Jobs"
 msgstr "Rebutja feines"
 
@@ -4173,6 +4664,45 @@ msgstr "Remitent"
 msgid "Rewind"
 msgstr "Rebobina"
 
+msgid "Right"
+msgstr ""
+
+msgid "Right Gate Fold"
+msgstr ""
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr ""
+
+msgid "Roll 10"
+msgstr ""
+
+msgid "Roll 2"
+msgstr ""
+
+msgid "Roll 3"
+msgstr ""
+
+msgid "Roll 4"
+msgstr ""
+
+msgid "Roll 5"
+msgstr ""
+
+msgid "Roll 6"
+msgstr ""
+
+msgid "Roll 7"
+msgstr ""
+
+msgid "Roll 8"
+msgstr ""
+
+msgid "Roll 9"
+msgstr ""
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "S'està executant l'ordre: %s %s -N -A %s -c «%s»"
@@ -4183,9 +4713,54 @@ msgstr "SEQUENCE té una longitud indefinida"
 msgid "SSL/TLS Negotiation Error"
 msgstr "S'ha produït un error mentre es negociava el SSL/TLS"
 
+msgid "Saddle Stitch"
+msgstr ""
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "Vegeu altres"
 
+msgid "See remote printer."
+msgstr ""
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr "S'envien les dades a la impressora."
 
@@ -4228,6 +4803,45 @@ msgstr "Adreça de lliurament"
 msgid "Short-Edge (Landscape)"
 msgstr "Costat curt (horitzontal)"
 
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr ""
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Staple (Landscape)"
+msgstr ""
+
+msgid "Single Staple (Portrait)"
+msgstr ""
+
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Wall Cardboard"
+msgstr ""
+
+msgid "Sleeve"
+msgstr ""
+
 msgid "Special Paper"
 msgstr "Paper especial"
 
@@ -4238,6 +4852,24 @@ msgstr "S'està posant a la cua la feina. S'ha completat el %.0f%%."
 msgid "Standard"
 msgstr "Estàndard"
 
+msgid "Staple"
+msgstr ""
+
+msgid "Staple Edge"
+msgstr ""
+
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "Bàner inicial"
@@ -4249,6 +4881,21 @@ msgstr "S'està començant la pàgina %d."
 msgid "Statement"
 msgstr "Declaració"
 
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
+
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr "La subscripció #%d no existeix."
@@ -4268,6 +4915,9 @@ msgstr "Super B/A3"
 msgid "Switching Protocols"
 msgstr "Intercanviar els protocols"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "Tabloide"
 
@@ -4480,6 +5130,15 @@ msgstr "Hi ha massa valors de job-sheets (%d > 2)."
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "Hi ha massa valors de printer-state-reasons (%d > %d)."
 
+msgid "Top"
+msgstr ""
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
+msgstr ""
+
 msgid "Transparency"
 msgstr "Transparència"
 
@@ -4489,15 +5148,81 @@ msgstr "Safata"
 msgid "Tray 1"
 msgstr "Safata 1"
 
+msgid "Tray 10"
+msgstr ""
+
+msgid "Tray 11"
+msgstr ""
+
+msgid "Tray 12"
+msgstr ""
+
+msgid "Tray 13"
+msgstr ""
+
+msgid "Tray 14"
+msgstr ""
+
+msgid "Tray 15"
+msgstr ""
+
+msgid "Tray 16"
+msgstr ""
+
+msgid "Tray 17"
+msgstr ""
+
+msgid "Tray 18"
+msgstr ""
+
+msgid "Tray 19"
+msgstr ""
+
 msgid "Tray 2"
 msgstr "Safata 2"
 
+msgid "Tray 20"
+msgstr ""
+
 msgid "Tray 3"
 msgstr "Safata 3"
 
 msgid "Tray 4"
 msgstr "Safata 4"
 
+msgid "Tray 5"
+msgstr ""
+
+msgid "Tray 6"
+msgstr ""
+
+msgid "Tray 7"
+msgstr ""
+
+msgid "Tray 8"
+msgstr ""
+
+msgid "Tray 9"
+msgstr ""
+
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "L'URI és massa llarg"
 
@@ -4627,13 +5352,15 @@ msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 "No es poden copiar els fitxers del controlador d'impressora Windows 9x (%d)."
 
-#, c-format
-msgid "Unable to copy interface script - %s"
-msgstr "No es pot copiar l'script de la interfície - %s"
+msgid "Unable to create credentials from array."
+msgstr ""
 
 msgid "Unable to create printer-uri"
 msgstr "No es pot crear el printer-uri"
 
+msgid "Unable to create printer."
+msgstr ""
+
 msgid "Unable to create server credentials."
 msgstr ""
 
@@ -4861,6 +5588,9 @@ msgstr "Ordre desconegut del fitxer: «%s»."
 msgid "Unknown format character: \"%c\"."
 msgstr "Format del caràcter desconegut: «%c»."
 
+msgid "Unknown hash algorithm."
+msgstr ""
+
 msgid "Unknown media size name."
 msgstr "El nom de la mida del suport no és conegut."
 
@@ -5005,13 +5735,6 @@ msgstr ""
 "Sintaxi: cupstestppd [opcions] nomfitxer1.ppd[.gz] [... nomfitxerN.ppd[.gz]]"
 
 msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-
-msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
 "       ippfind --help\n"
@@ -5067,6 +5790,9 @@ msgstr "El valor té una longitud indefinida"
 msgid "VarBind uses indefinite length"
 msgstr "VarBind té una longitud indefinida"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "Version té una longitud indefinida"
 
@@ -5082,9 +5808,18 @@ msgstr "S'està esperant que la impressora acabi."
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr "AVÍS. No hi ha cap controlador per Windows 2000 instal·lat."
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr "La interfície web està deshabilitada"
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "Sí"
 
@@ -5096,6 +5831,9 @@ msgstr ""
 "Heu d'accedir a aquesta pagina a través de la URL <A HREF=\"https://%s:%d%s"
 "\">https://%s:%d%s</A>."
 
+msgid "Z Fold"
+msgstr ""
+
 msgid "ZPL Label Printer"
 msgstr "Impressora d'etiquetes ZPL"
 
@@ -5321,8 +6059,9 @@ msgstr "Falta l'atribut de job-printer-uri."
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: el nom de la classe només pot tenir caràcters imprimibles."
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr "lpadmin: s'esperava un PPD després de l'opció «-P»."
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
+msgstr ""
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr "lpadmin: s'esperava allow/deny:llistausuaris després de l'opció «-u»."
@@ -5345,9 +6084,6 @@ msgstr "lpadmin: s'esperava un(s) tipus de fitxer(s) després de l'opció «-I»
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr "lpadmin: s'esperava un nom d'amfitrió després de l'opció «-h»."
 
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr "lpadmin: s'esperava una interfície després de l'opció «-i»."
-
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: s'esperava una ubicació després de l'opció «-L»."
 
@@ -5473,18 +6209,6 @@ msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr "lpinfo: s'esperava un temps d'espera després de «--timeout»."
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr "lpinfo: l'argument «%s» és desconegut."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr "lpinfo: l'opció «%c» és desconeguda."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr "lpinfo: l'opció «%s» és desconeguda."
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: no s'ha pogut connectar al servidor: %s"
 
@@ -5492,10 +6216,6 @@ msgstr "lpmove: no s'ha pogut connectar al servidor: %s"
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: l'argument «%s» és desconegut."
 
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr "lpmove: l'opció «%c» és desconeguda."
-
 msgid "lpoptions: No printers."
 msgstr "lpoptions: no hi ha cap impressora."
 
@@ -6024,6 +6744,9 @@ msgstr "sense títol"
 msgid "variable-bindings uses indefinite length"
 msgstr "La variable-bindings fa servir una longitud indefinida"
 
+#~ msgid "\tInterface: %s/interfaces/%s"
+#~ msgstr "\tInterfície: %s/interfícies/%s"
+
 #~ msgid ""
 #~ "      **FAIL**  BAD Manufacturer (should be \"Oki\")\n"
 #~ "                REF: Page 211, table D.1."
@@ -6034,6 +6757,9 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "      **FAIL**  Unable to open PPD file - %s"
 #~ msgstr "      **ERROR**  No es pot obrir el fitxer PPD - %s"
 
+#~ msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+#~ msgstr "  --lf                    Final de línia amb LF (UNIX/Linux/OS X)."
+
 #~ msgid "  -E                      Enable encryption."
 #~ msgstr "  -E                      Habilita el xifrat."
 
@@ -6130,6 +6856,15 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "Enter password:"
 #~ msgstr "Introduïu la contrasenya:"
 
+#~ msgid "Envelope #10 "
+#~ msgstr "Sobre #10"
+
+#~ msgid "Envelope PRC1 "
+#~ msgstr "Sobre PRC1"
+
+#~ msgid "File Folder "
+#~ msgstr "Carpeta d'arxivador "
+
 #~ msgid "File Folder - 9/16 x 3 7/16\""
 #~ msgstr "Carpeta d'arxivador: 9/16 x 3 7/16\""
 
@@ -6152,9 +6887,6 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ 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"
 
@@ -6175,6 +6907,9 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgstr ""
 #~ "La sortida per la impressora %s/%s s'envia a la impressora remota %s a %s"
 
+#~ msgid "Postcard Double "
+#~ msgstr "Postal doble"
+
 #~ msgid "Print file accepted - job ID %d."
 #~ msgstr "S'ha acceptat el fitxer d'impressió - ID de la feina %d."
 
@@ -6272,6 +7007,9 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "There is a paper jam."
 #~ msgstr "S'ha encallat el paper."
 
+#~ msgid "Unable to copy interface script - %s"
+#~ msgstr "No es pot copiar l'script de la interfície - %s"
+
 #~ msgid "Unable to create compressed print file"
 #~ msgstr "No es pot crear el fitxer d'impressió comprimit"
 
@@ -6352,6 +7090,24 @@ msgstr "La variable-bindings fa servir una longitud indefinida"
 #~ msgid "ipptool: Missing version for \"-V\"."
 #~ msgstr "ipptool: falta la versió a «-V»."
 
+#~ msgid "lpadmin: Expected PPD after \"-P\" option."
+#~ msgstr "lpadmin: s'esperava un PPD després de l'opció «-P»."
+
+#~ msgid "lpadmin: Expected interface after \"-i\" option."
+#~ msgstr "lpadmin: s'esperava una interfície després de l'opció «-i»."
+
+#~ msgid "lpinfo: Unknown argument \"%s\"."
+#~ msgstr "lpinfo: l'argument «%s» és desconegut."
+
+#~ msgid "lpinfo: Unknown option \"%c\"."
+#~ msgstr "lpinfo: l'opció «%c» és desconeguda."
+
+#~ msgid "lpinfo: Unknown option \"%s\"."
+#~ msgstr "lpinfo: l'opció «%s» és desconeguda."
+
+#~ msgid "lpmove: Unknown option \"%c\"."
+#~ msgstr "lpmove: l'opció «%c» és desconeguda."
+
 #~ msgid "lppasswd: Only root can add or delete passwords."
 #~ msgstr ""
 #~ "lppasswd: només l'usuari primari (root) pot afegir o esborrar "
index 8e03517..889c3d5 100644 (file)
@@ -29,7 +29,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
+"POT-Creation-Date: 2016-08-30 16:00-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"
@@ -98,10 +98,6 @@ msgid "\tInterface: %s.ppd"
 msgstr ""
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr ""
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr ""
 
@@ -835,7 +831,7 @@ msgstr ""
 msgid "  --host regex            Match hostname to regular expression."
 msgstr ""
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
 msgstr ""
 
 msgid "  --list-filters          List filters that will be used."
@@ -971,9 +967,6 @@ msgstr ""
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 
-msgid "  -a                      Browse for all services."
-msgstr ""
-
 msgid "  -a                      Export all printers."
 msgstr ""
 
@@ -989,9 +982,6 @@ msgstr ""
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr ""
-
 msgid "  -d name=value           Set named variable to value."
 msgstr ""
 
@@ -1079,9 +1069,6 @@ msgstr ""
 msgid "  -p filename.ppd         Set PPD file."
 msgstr ""
 
-msgid "  -p program              Run specified program for each service."
-msgstr ""
-
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 
@@ -1097,6 +1084,9 @@ msgstr ""
 msgid "  -s                      Print service name if true."
 msgstr ""
 
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
 msgid "  -t                      Produce a test report."
 msgstr ""
 
@@ -1112,9 +1102,6 @@ msgstr ""
 msgid "  -t title                Set title."
 msgstr ""
 
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr ""
-
 msgid "  -u                      Remove the PPD file when finished."
 msgstr ""
 
@@ -1493,6 +1480,10 @@ msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
 msgstr ""
 
 #, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr ""
+
+#, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr ""
 
@@ -1699,6 +1690,10 @@ msgid "%s: Unable to resolve \"%s\"."
 msgstr ""
 
 #, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr ""
 
@@ -1984,6 +1979,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 palce/sek."
 
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "2-Sided Printing"
 msgstr "oboustranný tisk"
 
@@ -2098,6 +2105,18 @@ msgstr "3 palce/sek."
 msgid "3 x 5"
 msgstr ""
 
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "3.00x1.00\""
 msgstr "3.00x1.00\""
 
@@ -2164,6 +2183,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 palce/sek."
 
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "4.00x1.00\""
 msgstr "4.00x1.00\""
 
@@ -2460,6 +2491,9 @@ msgstr "Příjem úloh"
 msgid "Accepted"
 msgstr "Přijatý"
 
+msgid "Accordian Fold"
+msgstr ""
+
 msgid "Add Class"
 msgstr "Přidat třídu"
 
@@ -2475,6 +2509,15 @@ msgstr "Adresa"
 msgid "Administration"
 msgstr "Administrace"
 
+msgid "Alternate"
+msgstr ""
+
+msgid "Alternate Roll"
+msgstr ""
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "Vždy"
 
@@ -2484,14 +2527,31 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "Aplikátor"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr ""
 
+msgid "Automatic"
+msgstr ""
+
 msgid "B0"
 msgstr "B0"
 
@@ -2528,6 +2588,9 @@ msgstr "B8"
 msgid "B9"
 msgstr "B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr ""
@@ -2547,6 +2610,9 @@ msgstr "Chybný OrderDependency"
 msgid "Bad PPD cache file."
 msgstr ""
 
+msgid "Bad PPD file."
+msgstr ""
+
 msgid "Bad Request"
 msgstr "Chybný požadavek"
 
@@ -2672,19 +2738,49 @@ msgstr ""
 msgid "Bad/empty URI"
 msgstr ""
 
+msgid "Bale"
+msgstr ""
+
 msgid "Banners"
 msgstr "Banery"
 
+msgid "Bind"
+msgstr ""
+
+msgid "Bind (Landscape)"
+msgstr ""
+
+msgid "Bind (Portrait)"
+msgstr ""
+
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "Kancelářský papír"
 
+msgid "Booklet Maker"
+msgstr ""
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr ""
 
+msgid "Bottom"
+msgstr ""
+
 msgid "Buffer overflow detected, aborting."
 msgstr ""
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMYK"
 
@@ -2700,12 +2796,24 @@ msgstr "Zrušit RSS předplatné"
 msgid "Canceling print job."
 msgstr ""
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
+msgstr ""
+
 msgid "Cassette"
 msgstr ""
 
+msgid "Center"
+msgstr ""
+
 msgid "Change Settings"
 msgstr "Změna nastavení"
 
@@ -2722,12 +2830,24 @@ msgstr "Vyčištění tiskových hlav"
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr ""
 
+msgid "Coat"
+msgstr ""
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
+msgstr ""
+
 msgid "Color"
 msgstr "Barva"
 
 msgid "Color Mode"
 msgstr "Barevný režim"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -2749,15 +2869,33 @@ msgstr "Pokračovat"
 msgid "Continuous"
 msgstr "Souvislý"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr ""
 
 msgid "Copying print data."
 msgstr ""
 
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
 msgid "Created"
 msgstr "Vytvořeno"
 
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
+
 msgid "Custom"
 msgstr "Uživatelský"
 
@@ -2770,9 +2908,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "Snížit"
 
+msgid "Cut Media"
+msgstr ""
+
 msgid "Cutter"
 msgstr "Výstřižek"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "Tmavý"
 
@@ -2831,10 +2975,37 @@ msgstr ""
 msgid "Disabled"
 msgstr "Zakázaný"
 
+msgid "Disc"
+msgstr ""
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr ""
 
+msgid "Double Gate Fold"
+msgstr ""
+
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dry Film"
+msgstr ""
+
 msgid "Duplexer"
 msgstr "Duplexní jednotka"
 
@@ -2850,12 +3021,18 @@ msgstr "Tiskárna štítků EPL2"
 msgid "Edit Configuration File"
 msgstr "Úprava konfiguračního souboru"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr ""
 
 msgid "Encryption is not supported."
 msgstr ""
 
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Ukončení baneru"
@@ -2872,7 +3049,10 @@ msgstr ""
 "administrátora pro přístup na tuto stránku. Pokud používáte ověřování "
 "Kerberos, ujistěte se, že máte platný ticket Kerberosu."
 
-msgid "Envelope #10 "
+msgid "Envelope"
+msgstr ""
+
+msgid "Envelope #10"
 msgstr ""
 
 msgid "Envelope #11"
@@ -2962,7 +3142,7 @@ msgstr ""
 msgid "Envelope Monarch"
 msgstr ""
 
-msgid "Envelope PRC1 "
+msgid "Envelope PRC1"
 msgstr ""
 
 msgid "Envelope PRC1 Long Edge"
@@ -3094,6 +3274,9 @@ msgstr ""
 msgid "FAIL"
 msgstr ""
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr ""
 
@@ -3103,6 +3286,9 @@ msgstr ""
 msgid "Fanfold US"
 msgstr ""
 
+msgid "Fast Grayscale"
+msgstr ""
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr ""
@@ -3123,8 +3309,8 @@ msgstr ""
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-msgid "File Folder "
-msgstr "Složka souborů "
+msgid "File Folder"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -3132,16 +3318,46 @@ msgid ""
 "in \"%s/cups-files.conf\"."
 msgstr ""
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
 msgstr ""
 
+msgid "Finishing"
+msgstr ""
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
+msgstr ""
+
 msgid "Folio"
 msgstr "Fólie"
 
 msgid "Forbidden"
 msgstr "Zakázaný"
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr ""
+
 msgid "General"
 msgstr "Obecný"
 
@@ -3151,24 +3367,87 @@ msgstr "Obecný"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "\"Get-Response-PDU\" má neomezenou délku"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
 msgstr "Lesklý papír"
 
+msgid "Glossy Photo Paper"
+msgstr ""
+
 msgid "Got a printer-uri attribute but no job-id."
 msgstr ""
 
+msgid "Gravure Cylinder"
+msgstr ""
+
 msgid "Grayscale"
 msgstr "Stupně šedi"
 
 msgid "HP"
 msgstr "HP"
 
+msgid "Hagaki"
+msgstr ""
+
+msgid "Half Fold"
+msgstr ""
+
+msgid "Half Z Fold"
+msgstr ""
+
 msgid "Hanging Folder"
 msgstr "Závěsná složka"
 
+msgid "Hash buffer too small."
+msgstr ""
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
 msgid "Help file not in index."
 msgstr ""
 
+msgid "High"
+msgstr ""
+
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+msgid "High Gloss Photo Paper"
+msgstr ""
+
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr ""
 
@@ -3256,6 +3535,18 @@ msgstr "Neplatný překlad řetězce"
 msgid "Illegal whitespace character"
 msgstr "Nedovolený prázdný znak"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "Možnosti instalace"
 
@@ -3289,6 +3580,9 @@ msgstr ""
 msgid "Invalid media size."
 msgstr ""
 
+msgid "Invalid ppd-name value."
+msgstr ""
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr ""
@@ -3401,6 +3695,9 @@ msgstr ""
 msgid "Jobs"
 msgstr "Úlohy"
 
+msgid "Jog"
+msgstr ""
+
 msgid "LPD/LPR Host or Printer"
 msgstr "LPD/LPR hostitel nebo tiskárna"
 
@@ -3410,6 +3707,15 @@ msgstr "Tiskárna štítků"
 msgid "Label Top"
 msgstr "Horní štítek"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr ""
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr ""
@@ -3417,18 +3723,39 @@ msgstr ""
 msgid "Large Address"
 msgstr "Plná adresa"
 
+msgid "Large Capacity"
+msgstr ""
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Serie PCL 4/5"
 
+msgid "Left"
+msgstr ""
+
+msgid "Left Gate Fold"
+msgstr ""
+
+msgid "Letter Fold"
+msgstr ""
+
 msgid "Letter Oversize"
 msgstr ""
 
 msgid "Letter Oversize Long Edge"
 msgstr ""
 
+msgid "Letterhead"
+msgstr ""
+
 msgid "Light"
 msgstr "Světlý"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Řádek je delší než maximální povolená velikost (255 znaků)"
 
@@ -3438,20 +3765,44 @@ msgstr "Seznam dostupných tiskáren"
 msgid "Load paper."
 msgstr ""
 
+msgid "Local printer created."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Delší okraj (na výšku)"
 
-msgid "Looking for printer..."
+msgid "Looking for printer."
+msgstr ""
+
+msgid "Main"
+msgstr ""
+
+msgid "Main Roll"
+msgstr ""
+
+msgid "Manual"
 msgstr ""
 
 msgid "Manual Feed"
 msgstr "Ruční podávání"
 
-msgid "Media Size"
-msgstr "Velikost média"
+msgid "Matte Fabric"
+msgstr ""
 
-msgid "Media Source"
-msgstr "Zdroj média"
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
+msgid "Media Size"
+msgstr "Velikost média"
+
+msgid "Media Source"
+msgstr "Zdroj média"
 
 msgid "Media Tracking"
 msgstr "Sledování média"
@@ -3465,6 +3816,27 @@ msgstr "Střední"
 msgid "Memory allocation error"
 msgstr "Chyba přidělení paměti"
 
+msgid "Metal"
+msgstr ""
+
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr ""
+
 msgid "Missing CloseGroup"
 msgstr ""
 
@@ -3502,6 +3874,10 @@ msgstr ""
 msgid "Missing requesting-user-name attribute."
 msgstr ""
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
 msgid "Missing required attributes."
 msgstr ""
 
@@ -3541,6 +3917,9 @@ msgstr "Úprava třídy"
 msgid "Modify Printer"
 msgstr "Úprava tiskárny"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "Přesun všech úloh"
 
@@ -3550,6 +3929,15 @@ msgstr "Přesun úlohy"
 msgid "Moved Permanently"
 msgstr "Trvale přesunuto"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr ""
+
 msgid "NULL PPD file pointer"
 msgstr "Prázdný ukazatel PPD souboru"
 
@@ -3562,12 +3950,21 @@ msgstr ""
 msgid "Never"
 msgstr "Nikdy"
 
+msgid "New credentials are not valid for name."
+msgstr ""
+
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
 msgid "No"
 msgstr "Ne"
 
 msgid "No Content"
 msgstr "Žádný obsah"
 
+msgid "No Finishing"
+msgstr ""
+
 msgid "No PPD name"
 msgstr ""
 
@@ -3593,6 +3990,9 @@ msgstr ""
 msgid "No authentication information provided."
 msgstr ""
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "Žádný název komunity"
 
@@ -3647,6 +4047,9 @@ msgstr ""
 msgid "No request-id"
 msgstr "Žádný ID požadavek"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr ""
 
@@ -3706,6 +4109,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "Nápověda"
 
+msgid "Only local users can create a local printer."
+msgstr ""
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "Otevření %s selhalo: %s"
@@ -3719,6 +4125,9 @@ msgstr "OpenUI/JCLOpenUI nepředcházelo CloseUI/JCLCloseUI"
 msgid "Operation Policy"
 msgstr "Způsob ověření"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr ""
@@ -3729,6 +4138,9 @@ msgstr "Instalované možnosti"
 msgid "Options:"
 msgstr ""
 
+msgid "Other"
+msgstr ""
+
 msgid "Out of date PPD cache file."
 msgstr ""
 
@@ -3777,6 +4189,9 @@ msgstr "Packet neobsahuje \"Get-Response-PDU\""
 msgid "Packet does not start with SEQUENCE"
 msgstr "Paket nezačíná SEQUENCÍ"
 
+msgid "Paper"
+msgstr ""
+
 msgid "Paper jam."
 msgstr ""
 
@@ -3789,6 +4204,9 @@ msgstr ""
 msgid "Paper tray is missing."
 msgstr ""
 
+msgid "Parallel Fold"
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -3812,18 +4230,63 @@ msgstr "Pozastavení tiskárny"
 msgid "Peel-Off"
 msgstr "Peel-Off"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "Fotografie"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "Foto-samolepky"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr "Obyčejný papír"
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "Pravidla"
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "Monitorování portu"
 
@@ -3833,7 +4296,7 @@ msgstr "PostScriptová tiskárna"
 msgid "Postcard"
 msgstr "Pohlednice"
 
-msgid "Postcard Double "
+msgid "Postcard Double"
 msgstr ""
 
 msgid "Postcard Double Long Edge"
@@ -3842,9 +4305,21 @@ msgstr ""
 msgid "Postcard Long Edge"
 msgstr ""
 
+msgid "Poster Fold"
+msgstr ""
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
 msgstr ""
 
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
+msgstr ""
+
 msgid "Print Density"
 msgstr "Hustota tisku"
 
@@ -3854,6 +4329,9 @@ msgstr "Tisk úlohy:"
 msgid "Print Mode"
 msgstr "Režim tisku"
 
+msgid "Print Quality"
+msgstr ""
+
 msgid "Print Rate"
 msgstr "Kvalita tisku"
 
@@ -3884,6 +4362,10 @@ msgstr ""
 msgid "Print job was not accepted."
 msgstr ""
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "Tiskárna přidána"
 
@@ -3918,6 +4400,12 @@ msgstr "Tiskárny"
 msgid "Printing page %d, %u%% complete."
 msgstr ""
 
+msgid "Punch"
+msgstr ""
+
+msgid "Punched Paper"
+msgstr ""
+
 msgid "Quarto"
 msgstr "Quarto"
 
@@ -3927,6 +4415,9 @@ msgstr "Kvóta byla překročena."
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 
+msgid "Rear"
+msgstr ""
+
 msgid "Reject Jobs"
 msgstr "Odmítnutí úloh"
 
@@ -3959,6 +4450,45 @@ msgstr "Návrat adresy"
 msgid "Rewind"
 msgstr "Přetočit"
 
+msgid "Right"
+msgstr ""
+
+msgid "Right Gate Fold"
+msgstr ""
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr ""
+
+msgid "Roll 10"
+msgstr ""
+
+msgid "Roll 2"
+msgstr ""
+
+msgid "Roll 3"
+msgstr ""
+
+msgid "Roll 4"
+msgstr ""
+
+msgid "Roll 5"
+msgstr ""
+
+msgid "Roll 6"
+msgstr ""
+
+msgid "Roll 7"
+msgstr ""
+
+msgid "Roll 8"
+msgstr ""
+
+msgid "Roll 9"
+msgstr ""
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr ""
@@ -3969,9 +4499,54 @@ msgstr "\"SEQUENCE\" má neomezenou délku"
 msgid "SSL/TLS Negotiation Error"
 msgstr ""
 
+msgid "Saddle Stitch"
+msgstr ""
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "Viz další"
 
+msgid "See remote printer."
+msgstr ""
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr ""
 
@@ -4014,6 +4589,45 @@ msgstr "Doručovací adresa"
 msgid "Short-Edge (Landscape)"
 msgstr "Kratší okraj (na šířku)"
 
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr ""
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Staple (Landscape)"
+msgstr ""
+
+msgid "Single Staple (Portrait)"
+msgstr ""
+
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Wall Cardboard"
+msgstr ""
+
+msgid "Sleeve"
+msgstr ""
+
 msgid "Special Paper"
 msgstr "Speciální papír"
 
@@ -4024,6 +4638,24 @@ msgstr ""
 msgid "Standard"
 msgstr "Standardní"
 
+msgid "Staple"
+msgstr ""
+
+msgid "Staple Edge"
+msgstr ""
+
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "Spuštění baneru"
@@ -4035,6 +4667,21 @@ msgstr ""
 msgid "Statement"
 msgstr "Prohlášení"
 
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
+
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr ""
@@ -4054,6 +4701,9 @@ msgstr "Super B/A3"
 msgid "Switching Protocols"
 msgstr "Protokol výměny"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "Tabloid"
 
@@ -4256,6 +4906,15 @@ msgstr ""
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr ""
 
+msgid "Top"
+msgstr ""
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
+msgstr ""
+
 msgid "Transparency"
 msgstr "Průhlednost"
 
@@ -4265,15 +4924,81 @@ msgstr "Podavač"
 msgid "Tray 1"
 msgstr "Podavač 1"
 
+msgid "Tray 10"
+msgstr ""
+
+msgid "Tray 11"
+msgstr ""
+
+msgid "Tray 12"
+msgstr ""
+
+msgid "Tray 13"
+msgstr ""
+
+msgid "Tray 14"
+msgstr ""
+
+msgid "Tray 15"
+msgstr ""
+
+msgid "Tray 16"
+msgstr ""
+
+msgid "Tray 17"
+msgstr ""
+
+msgid "Tray 18"
+msgstr ""
+
+msgid "Tray 19"
+msgstr ""
+
 msgid "Tray 2"
 msgstr "Podavač 2"
 
+msgid "Tray 20"
+msgstr ""
+
 msgid "Tray 3"
 msgstr "Podavač 3"
 
 msgid "Tray 4"
 msgstr "Podavač 4"
 
+msgid "Tray 5"
+msgstr ""
+
+msgid "Tray 6"
+msgstr ""
+
+msgid "Tray 7"
+msgstr ""
+
+msgid "Tray 8"
+msgstr ""
+
+msgid "Tray 9"
+msgstr ""
+
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "URI je příliš dlouhá"
 
@@ -4394,13 +5119,15 @@ msgstr ""
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 
-#, c-format
-msgid "Unable to copy interface script - %s"
+msgid "Unable to create credentials from array."
 msgstr ""
 
 msgid "Unable to create printer-uri"
 msgstr ""
 
+msgid "Unable to create printer."
+msgstr ""
+
 msgid "Unable to create server credentials."
 msgstr ""
 
@@ -4610,6 +5337,9 @@ msgstr ""
 msgid "Unknown format character: \"%c\"."
 msgstr ""
 
+msgid "Unknown hash algorithm."
+msgstr ""
+
 msgid "Unknown media size name."
 msgstr ""
 
@@ -4742,13 +5472,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-
-msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
 "       ippfind --help\n"
@@ -4797,6 +5520,9 @@ msgstr "Hodnota má neomezenou délku"
 msgid "VarBind uses indefinite length"
 msgstr "VarBind má neomezenou délku"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "Version má neomezenou délku"
 
@@ -4812,9 +5538,18 @@ msgstr ""
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr ""
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr ""
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "Ano"
 
@@ -4826,6 +5561,9 @@ msgstr ""
 "Pro přístup k této stránce, použijte adresu URL <A HREF=\"https://%s:%d%s"
 "\">https://%s:%d%s</A>."
 
+msgid "Z Fold"
+msgstr ""
+
 msgid "ZPL Label Printer"
 msgstr "Tiskárna štítků ZPL"
 
@@ -5050,7 +5788,8 @@ msgstr ""
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr ""
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
 msgstr ""
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
@@ -5074,9 +5813,6 @@ msgstr ""
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr ""
 
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr ""
-
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr ""
 
@@ -5187,18 +5923,6 @@ msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr ""
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr ""
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr ""
 
@@ -5206,10 +5930,6 @@ msgstr ""
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr ""
 
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr ""
-
 msgid "lpoptions: No printers."
 msgstr ""
 
@@ -5719,6 +6439,9 @@ msgstr "\"variable-bindings\" má neomezenou délku"
 #~ msgid "Enter password:"
 #~ msgstr "Zadejte heslo:"
 
+#~ msgid "File Folder "
+#~ msgstr "Složka souborů "
+
 #~ msgid "New Stylus Color Series"
 #~ msgstr "New Stylus Color Series"
 
index 089ca04..928f8f9 100644 (file)
@@ -29,8 +29,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 2.0\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
-"PO-Revision-Date: 2015-05-09 22:25+0100\n"
+"POT-Creation-Date: 2016-08-30 16:00-0400\n"
+"PO-Revision-Date: 2016-04-22 12:25+0100\n"
 "Last-Translator: Joachim Schwender <joachim.schwender@web.de>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
 "Language: German\n"
@@ -98,10 +98,6 @@ msgid "\tInterface: %s.ppd"
 msgstr "\tSchnittstelle: %s.ppd"
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr "\tSchnittstelle: %s/interfaces/%s"
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tSchnittstelle: %s/ppp/%s.ppd"
 
@@ -120,13 +116,13 @@ msgid "\tStatus: %s"
 msgstr "\tStatus: %s"
 
 msgid "\tUsers allowed:"
-msgstr ""
+msgstr "\tErlaubte Benutzer:"
 
 msgid "\tUsers denied:"
 msgstr "\tGesperrte Benutzer:"
 
 msgid "\tdaemon present"
-msgstr ""
+msgstr "\tDienst verfügbar"
 
 msgid "\tno entries"
 msgstr "\tKeine Einträge"
@@ -160,43 +156,43 @@ msgid ""
 msgstr ""
 
 msgid "                          Ignore specific warnings."
-msgstr ""
+msgstr "                          Ignoriere bestimmte Warnungen."
 
 msgid "                          Issue warnings instead of errors."
-msgstr ""
+msgstr "                          Gebe Warnungen anstelle fon Fehlern aus."
 
 msgid "                REF: Page 15, section 3.1."
-msgstr ""
+msgstr "                REF: Seite 15, Kap. 3.1."
 
 msgid "                REF: Page 15, section 3.2."
-msgstr ""
+msgstr "                REF: Seite 15, Kap. 3.2."
 
 msgid "                REF: Page 19, section 3.3."
-msgstr ""
+msgstr "                REF: Seite 19, Kap. 3.3."
 
 msgid "                REF: Page 20, section 3.4."
-msgstr ""
+msgstr "                REF: Seite 20, Kap. 3.4."
 
 msgid "                REF: Page 27, section 3.5."
-msgstr ""
+msgstr "                REF: Seite 27, Kap. 3.5."
 
 msgid "                REF: Page 42, section 5.2."
-msgstr ""
+msgstr "                REF: Seite 42, Kap. 5.2."
 
 msgid "                REF: Pages 16-17, section 3.2."
-msgstr ""
+msgstr "                REF: Seiten 16-17, Kap. 3.2."
 
 msgid "                REF: Pages 42-45, section 5.2."
-msgstr ""
+msgstr "                REF: Seiten 42-45, Kap. 5.2."
 
 msgid "                REF: Pages 45-46, section 5.2."
-msgstr ""
+msgstr "                REF: Seiten 45-46, Kap. 5.2."
 
 msgid "                REF: Pages 48-49, section 5.2."
-msgstr ""
+msgstr "                REF: Seiten 48-49, Kap. 5.2."
 
 msgid "                REF: Pages 52-54, section 5.2."
-msgstr ""
+msgstr "                REF: Seiten 52-52, Kap. 5.2."
 
 #, c-format
 msgid "        %-39.39s %.0f bytes"
@@ -253,13 +249,15 @@ msgstr ""
 
 #, c-format
 msgid "        WARN    %s has no corresponding options."
-msgstr ""
+msgstr "        WARN    %s hat keine entsprechenden Optionen."
 
 #, c-format
 msgid ""
 "        WARN    %s shares a common prefix with %s\n"
 "                REF: Page 15, section 3.2."
 msgstr ""
+"        WARN    %s hat mit %s ein gemeinsames Präfix\n"
+"                REF: Seite 15, Kap. 3.2."
 
 #, c-format
 msgid ""
@@ -270,15 +268,19 @@ msgstr ""
 
 msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
 msgstr ""
+"        WARN    Datei einthält gemischt CR, LF, und CR LF Zeilenmenden."
 
 msgid ""
 "        WARN    LanguageEncoding required by PPD 4.3 spec.\n"
 "                REF: Pages 56-57, section 5.3."
 msgstr ""
+"        WARN    LanguageEncoding ist erforderlich gem. PPD 4.3 "
+"Spezifikation.\n"
+"                REF: Seiten 56-57, Kap. 5.3."
 
 #, c-format
 msgid "        WARN    Line %d only contains whitespace."
-msgstr ""
+msgstr "        WARN    Zeile %d enthält nur Leerzeichen."
 
 msgid ""
 "        WARN    Manufacturer required by PPD 4.3 spec.\n"
@@ -289,12 +291,16 @@ msgid ""
 "        WARN    Non-Windows PPD files should use lines ending with only LF, "
 "not CR LF."
 msgstr ""
+"        WARN    Nicht-Windows PPD Dateien sollten ausschliesslich LF "
+"Zeilenenden verwenden, nicht CR LF."
 
 #, c-format
 msgid ""
 "        WARN    Obsolete PPD version %.1f.\n"
 "                REF: Page 42, section 5.2."
 msgstr ""
+"        WARN    Veraltete PPD Version %.1f.\n"
+"                REF: Seite 42, Kap. 5.2."
 
 msgid ""
 "        WARN    PCFileName longer than 8.3 in violation of PPD spec.\n"
@@ -328,21 +334,23 @@ msgid "       cupstestdsc [options] -"
 msgstr ""
 
 msgid "       program | cupstestppd [options] -"
-msgstr ""
+msgstr "       program | cupstestppd [Optionen] -"
 
 #, c-format
 msgid ""
 "      %s  \"%s %s\" conflicts with \"%s %s\"\n"
 "                (constraint=\"%s %s %s %s\")."
 msgstr ""
+"      %s  \"%s %s\" ist nicht vereinbar mit \"%s %s\"\n"
+"                (constraint=\"%s %s %s %s\")."
 
 #, c-format
 msgid "      %s  %s %s does not exist."
-msgstr ""
+msgstr "      %s  %s %s existiert nicht."
 
 #, c-format
 msgid "      %s  %s file \"%s\" has the wrong capitalization."
-msgstr ""
+msgstr "      %s  %s Datei \"%s\" hat falsche Großschreibung."
 
 #, c-format
 msgid ""
@@ -353,26 +361,29 @@ msgstr ""
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
 msgstr ""
+"      %s  Ungültige UTF-8 »%s« Zeichenkette zur Übersetzung der Option %s, "
+"Auswahl %s."
 
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s."
 msgstr ""
+"      %s  Ungültige UTF-8 »%s« Zeichenkette zur Übersetzung der Option %s."
 
 #, c-format
 msgid "      %s  Bad cupsFilter value \"%s\"."
-msgstr ""
+msgstr "      %s   Wert für cupsFilter \"%s\"."
 
 #, c-format
 msgid "      %s  Bad cupsFilter2 value \"%s\"."
-msgstr ""
+msgstr "      %s  Ungültiger Wert für cupsFilter2 \"%s\"."
 
 #, c-format
 msgid "      %s  Bad cupsICCProfile %s."
-msgstr ""
+msgstr "      %s  Ungültiger Wert für cupsICCProfile %s."
 
 #, c-format
 msgid "      %s  Bad cupsPreFilter value \"%s\"."
-msgstr ""
+msgstr "      %s  Ungültiger Wert für cupsPreFilter \"%s\"."
 
 #, c-format
 msgid "      %s  Bad cupsUIConstraints %s: \"%s\""
@@ -380,15 +391,15 @@ msgstr ""
 
 #, c-format
 msgid "      %s  Bad language \"%s\"."
-msgstr ""
+msgstr "      %s  Ungültige Sprache \"%s\"."
 
 #, c-format
 msgid "      %s  Bad permissions on %s file \"%s\"."
-msgstr ""
+msgstr "      %s  Ungültige Rechte %s Datei \"%s\"."
 
 #, c-format
 msgid "      %s  Bad spelling of %s - should be %s."
-msgstr ""
+msgstr "      %s  Ungültige Schreibweise von %s - sollte %s sein."
 
 #, c-format
 msgid "      %s  Cannot provide both APScanAppPath and APScanAppBundleID."
@@ -396,11 +407,11 @@ msgstr ""
 
 #, c-format
 msgid "      %s  Default choices conflicting."
-msgstr ""
+msgstr "      %s  Wiedersprüchliche voreingestellte Auswahl."
 
 #, c-format
 msgid "      %s  Empty cupsUIConstraints %s"
-msgstr ""
+msgstr "      %s  Leere cupsUIConstraints %s"
 
 #, c-format
 msgid "      %s  Missing \"%s\" translation string for option %s, choice %s."
@@ -412,7 +423,7 @@ msgstr ""
 
 #, c-format
 msgid "      %s  Missing %s file \"%s\"."
-msgstr ""
+msgstr "      %s  Fehlende %s Datei »%s«."
 
 #, c-format
 msgid ""
@@ -795,7 +806,7 @@ msgid "  ( expressions )         Group expressions."
 msgstr ""
 
 msgid "  --[no-]debug-logging    Turn debug logging on/off."
-msgstr ""
+msgstr "  --[no-]debug-logging    Ein-/Abschalten von Fehlersuche-Protokoll."
 
 msgid "  --[no-]remote-admin     Turn remote administration on/off."
 msgstr "  --[no-]remote-admin     Fernadministrierung ein/ausschalten."
@@ -819,7 +830,8 @@ msgstr "  --crlf                  Zeilenenden mit CR+LF (Windows)"
 
 msgid "  --domain regex          Match domain to regular expression."
 msgstr ""
-"  --domain regex          Prüfe auf Übereinstimmung mit Regulärem Ausdruck"
+"  --domain regex          Prüfe die Domäne aud Übereinstimmung mit regulärem "
+"Ausdruck"
 
 msgid ""
 "  --exec utility [argument ...] ;\n"
@@ -827,7 +839,7 @@ msgid ""
 msgstr ""
 
 msgid "  --false                 Always false."
-msgstr ""
+msgstr "  --false                 Immer falsch."
 
 msgid "  --help                  Show help."
 msgstr "  --help                  Zeige Hilfe."
@@ -840,8 +852,8 @@ msgstr ""
 "  --host regex            Prüfe den Hostnamen auf Übereinstimmung mit "
 "Regulärem Audruck"
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
-msgstr "  --lf                    Zeilenenden mit LF (UNIX/Linux/OS X)"
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
+msgstr ""
 
 msgid "  --list-filters          List filters that will be used."
 msgstr "  --list-filters          Liste die Filter auf die benutzt werden."
@@ -854,27 +866,33 @@ msgstr "  --ls                    Liste Attribute auf."
 
 msgid "  --name regex            Match service name to regular expression."
 msgstr ""
+"  --name regex            Vergleiche den Dienstnamen mit dem regulären "
+"Ausdruck."
 
 msgid "  --not expression        Unary NOT of expression."
-msgstr ""
+msgstr "  --not expression        Logische Negation eines Ausdrucks."
 
 msgid "  --path regex            Match resource path to regular expression."
 msgstr ""
+"  --path regex            Vergleiche den Resourcenpfad mit dem regulären "
+"Ausdruck."
 
 msgid "  --port number[-number]  Match port to number or range."
 msgstr ""
+"  --port number[-number]  Vergleiche den Port mit der Nummer oder dem "
+"Bereich."
 
 msgid "  --print                 Print URI if true."
-msgstr ""
+msgstr "  --print                 Drucke URI wenn wahr."
 
 msgid "  --print-name            Print service name if true."
-msgstr ""
+msgstr "  --print-name            Drucke Dienstname wenn wahr."
 
 msgid "  --quiet                 Quietly report match via exit code."
 msgstr ""
 
 msgid "  --remote                True if service is remote."
-msgstr ""
+msgstr "  --remote                Wahr wenn der Dienst entfernt ist."
 
 msgid ""
 "  --stop-after-include-error\n"
@@ -882,37 +900,40 @@ msgid ""
 msgstr ""
 
 msgid "  --true                  Always true."
-msgstr ""
+msgstr "  --true                  immer wahr."
 
 msgid "  --txt key               True if the TXT record contains the key."
 msgstr ""
+"  --txt key               Wahr wenn der TXT Eintrag den Schlüssel enthält."
 
 msgid "  --txt-* regex           Match TXT record key to regular expression."
 msgstr ""
 
 msgid "  --uri regex             Match URI to regular expression."
 msgstr ""
+"  --uri regex             Prüft die URI auf Übereinstimmung mit dem "
+"regulären Ausdruck."
 
 msgid "  --version               Show program version."
-msgstr ""
+msgstr "  --version               Zeigfe die Programmversion."
 
 msgid "  --version               Show version."
-msgstr ""
+msgstr "  --version               Zeige Version."
 
 msgid "  -4                      Connect using IPv4."
-msgstr ""
+msgstr "  -4                      Verbinde unter Verwendung von IPv4."
 
 msgid "  -6                      Connect using IPv6."
-msgstr ""
+msgstr "  -6                      Verbinde unter Verwendung von IPv6."
 
 msgid "  -C                      Send requests using chunking (default)."
 msgstr ""
 
 msgid "  -D                      Remove the input file when finished."
-msgstr ""
+msgstr "  -D                      Lösche die Eingabe nach Beenden."
 
 msgid "  -D name=value           Set named variable to value."
-msgstr ""
+msgstr "  -D Name=Wert            Variable »Name« den »Wert« zuordnen."
 
 msgid "  -E                      Encrypt the connection."
 msgstr "  -E                      Verschlüssele die Verbindung."
@@ -934,6 +955,7 @@ msgstr "  -I                      Ignoriere Fehler."
 
 msgid "  -I include-dir          Add include directory to search path."
 msgstr ""
+"  -I Inklus.Verz.         Inklusionsverzeichnis dem Suchpfad hinzufügen."
 
 msgid "  -I {filename,filters,none,profiles}"
 msgstr ""
@@ -951,22 +973,25 @@ msgstr "  -P filename.ppd         Lege PPD Datei fest."
 
 msgid "  -P number[-number]      Match port to number or range."
 msgstr ""
+"  -P number[-Nummer]      Prüft die Portnummer auf Übereinstimmung mit dem "
+"regulären Ausdruck."
 
 msgid "  -R root-directory       Set alternate root."
 msgstr ""
+"  -R root-Verz.           Legt ein alternatives Wurzelverzeichnis fest."
 
 msgid "  -S                      Test with SSL encryption."
 msgstr "  -S                      Teste mit SSL Verschlüsselung."
 
 msgid "  -T seconds              Set the browse timeout in seconds."
 msgstr ""
-"  -T seconds              Setze die Zeitüberschreitung für das Browsen in "
-"Sekunden."
+"  -T Sekunden              Legt die Zeitüberschreitung für das Browsen in s "
+"fest."
 
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr ""
-"  -T seconds              Setze die Zeitüberschreitung für das Senden/"
-"Empfangen in Sekunden."
+"  -T Sekunden             Legt die Sende-/Empfangs-Zeitüberschreitung in s "
+"fest."
 
 msgid "  -U username             Specify username."
 msgstr "  -U username             Gebe den Benutzernamen an."
@@ -982,9 +1007,6 @@ msgstr ""
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr "  -X                      Erzeuge XML-Ausgaben anstatt von Text."
 
-msgid "  -a                      Browse for all services."
-msgstr "  -a                      Browse für alle Dienste."
-
 msgid "  -a                      Export all printers."
 msgstr "  -a                      Exportiere alle Drucker."
 
@@ -992,7 +1014,7 @@ msgid "  -c                      Produce CSV output."
 msgstr "  -c                      Erzeuge CSV Ausgabe."
 
 msgid "  -c catalog.po           Load the specified message catalog."
-msgstr ""
+msgstr "  -c Katalog.po           Lade den angegebenen Nachrichtenkatalog."
 
 msgid "  -c cups-files.conf      Set cups-files.conf file to use."
 msgstr ""
@@ -1001,35 +1023,38 @@ msgstr ""
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cups.conf            Setze die zu benutzende Datei cups.conf"
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr "  -d domain               Browse/löse auf in der angegebenen Domäne."
-
 msgid "  -d name=value           Set named variable to value."
 msgstr ""
 
 msgid "  -d output-dir           Specify the output directory."
-msgstr ""
+msgstr "  -d AusgabeVerz.         Angabe des Ausgabeverzeichnisses."
 
 msgid "  -d printer              Use the named printer."
 msgstr "  -d printer              Benutze den genannten Drucker."
 
 msgid "  -d regex                Match domain to regular expression."
 msgstr ""
+"  -d regex                Prüft die Domäne auf Übereinstimmung mit regulärem "
+"Ausdruck."
 
 msgid "  -e                      Use every filter from the PPD file."
-msgstr ""
+msgstr "  -e                      Benutzt jeden Filter der PPD Datei."
 
 msgid "  -f                      Run in the foreground."
 msgstr "  -f                      Laufe im Vordergrund."
 
 msgid "  -f filename             Set default request filename."
 msgstr ""
+"  -f Dateiname            Legt den voreingestellten Dateinanmen der Anfrage "
+"fest."
 
 msgid "  -h                      Show this usage message."
-msgstr ""
+msgstr "  -h                      Zeige diese Verwendungsanleitung."
 
 msgid "  -h regex                Match hostname to regular expression."
 msgstr ""
+"  -h regex                Prüft den Hostnamen auf Übereinstimmung mit dem "
+"regulären Ausdruck."
 
 msgid "  -h server[:port]        Specify server address."
 msgstr "  -h server[:port]        Spezifiziere die Server-Adresse."
@@ -1047,19 +1072,19 @@ msgid ""
 msgstr ""
 
 msgid "  -l                      List attributes."
-msgstr ""
+msgstr "  -l                      Listet die Attribute auf."
 
 msgid "  -l                      Produce plain text output."
-msgstr ""
+msgstr "  -l                      Erzeuge reine Textausgabe."
 
 msgid "  -l                      Run cupsd on demand."
-msgstr ""
+msgstr "  -l                      Starte cupsd bei Bedarf."
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
-msgstr ""
+msgstr "  -l lang[,lang,...]      Spezifiziere die Ausgabesprache(n) (locale)."
 
 msgid "  -m                      Use the ModelName value as the filename."
-msgstr ""
+msgstr "  -m                      Verwende den ModellNamen als Dateinamen."
 
 msgid ""
 "  -m mime/type            Set output MIME type (otherwise application/pdf)."
@@ -1078,27 +1103,26 @@ msgstr ""
 msgid ""
 "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
 msgstr ""
+"  -o Dateiname.drv        Legt die Treiberinformationsdatei fest (sonst ppdi."
+"drv)."
 
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
 msgstr ""
 
 msgid "  -o name=value           Set option(s)."
-msgstr ""
+msgstr "  -o Name=Wert            Legt Optionen fest."
 
 msgid "  -p                      Print URI if true."
 msgstr ""
 
 msgid "  -p filename.ppd         Set PPD file."
-msgstr ""
-
-msgid "  -p program              Run specified program for each service."
-msgstr ""
+msgstr "  -p filename.ppd         Lege PPD Datei fest."
 
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 
 msgid "  -q                      Run silently."
-msgstr ""
+msgstr "  -q                      stille Ausführung."
 
 msgid "  -r                      True if service is remote."
 msgstr ""
@@ -1109,35 +1133,37 @@ msgstr ""
 msgid "  -s                      Print service name if true."
 msgstr ""
 
-msgid "  -t                      Produce a test report."
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
 msgstr ""
 
+msgid "  -t                      Produce a test report."
+msgstr "  -t                      Erzeuge einen Testbericht."
+
 msgid "  -t                      Test PPDs instead of generating them."
-msgstr ""
+msgstr "  -t                      Teste PPDs anstelle sie zu erzeugen."
 
 msgid "  -t                      Test the configuration file."
-msgstr ""
+msgstr "  -t                      Teste die Konfigurationsdatei."
 
 msgid "  -t key                  True if the TXT record contains the key."
 msgstr ""
 
 msgid "  -t title                Set title."
-msgstr ""
-
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr ""
+msgstr "  -t Titel                Legt den Titel fest."
 
 msgid "  -u                      Remove the PPD file when finished."
-msgstr ""
+msgstr "  -u                      Lösche die PPD Datei nach Beenden."
 
 msgid "  -u regex                Match URI to regular expression."
 msgstr ""
+"  -u regex                Auf Übereinstimmung der URI mit dem regulären "
+"Ausdruck prüfen."
 
 msgid "  -v                      Be verbose."
-msgstr "  -v                      Sei ausführlich."
+msgstr "  -v                      ausführliche Ausgabe."
 
 msgid "  -vv                     Be very verbose."
-msgstr "  -vv                     Sei sehr ausführlich."
+msgstr "  -vv                     sehr ausführliche Ausgabe."
 
 msgid ""
 "  -x utility [argument ...] ;\n"
@@ -1425,7 +1451,7 @@ msgstr "%s kann nicht geändert werden."
 
 #, c-format
 msgid "%s is not implemented by the CUPS version of lpc."
-msgstr ""
+msgstr "%s ist in der CUPS-Version von lpc nicht implementiert."
 
 #, c-format
 msgid "%s is not ready"
@@ -1441,11 +1467,11 @@ msgstr "%s ist bereit und druckt"
 
 #, c-format
 msgid "%s job-id user title copies options [file]"
-msgstr ""
+msgstr "%s Auftrags-ID Benutzer Titel Kopien Optionen [Datei]"
 
 #, c-format
 msgid "%s not accepting requests since %s -"
-msgstr ""
+msgstr "%s akzeptiert keine Anfragen seit %s -"
 
 #, c-format
 msgid "%s not supported."
@@ -1453,11 +1479,11 @@ msgstr "%s nicht unterstützt."
 
 #, c-format
 msgid "%s/%s accepting requests since %s"
-msgstr ""
+msgstr "%s/%s akzeptiert Anfragen seit %s"
 
 #, c-format
 msgid "%s/%s not accepting requests since %s -"
-msgstr ""
+msgstr "%s/%s akzeptiert keine Anfragen seit %s -"
 
 #, c-format
 msgid "%s: %-33.33s [job %d localhost]"
@@ -1470,64 +1496,72 @@ msgstr ""
 
 #, c-format
 msgid "%s: %s failed: %s"
-msgstr ""
+msgstr "%s: %s fehlgeschlagen: %s"
 
 #, c-format
 msgid "%s: Bad printer URI \"%s\"."
-msgstr ""
+msgstr "%s: Ungültige Drucker URI \"%s\"."
 
 #, c-format
 msgid "%s: Bad version %s for \"-V\"."
-msgstr ""
+msgstr "%s: Ungültige Version %s für \"-V\"."
 
 #, c-format
 msgid "%s: Don't know what to do."
-msgstr ""
+msgstr "%s: Unklar was zu tun ist."
 
 #, c-format
 msgid ""
 "%s: Error - %s environment variable names non-existent destination \"%s\"."
 msgstr ""
+"%s: Fehler - %s Umgebungsvariable bezeichnet nicht existentes Ziel \"%s\"."
 
 #, c-format
 msgid "%s: Error - add '/version=1.1' to server name."
-msgstr ""
+msgstr "%s: Fehler - füge '/version=1.1' zum Servernamen hinzu."
 
 #, c-format
 msgid "%s: Error - bad job ID."
-msgstr ""
+msgstr "%s: Fehler - ungültige Auftrags-ID."
 
 #, c-format
 msgid "%s: Error - cannot print files and alter jobs simultaneously."
 msgstr ""
+"%s: Fehler - kann nicht gleichzeitig Dateien drucken und Aufträge ändern."
 
 #, c-format
 msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
 msgstr ""
+"%s: Fehler - Kann von der Standardeingabe nicht drucken wenn eine Datei oder "
+"Auftrags-ID übergeben werden."
 
 #, c-format
-msgid "%s: Error - expected character set after \"-S\" option."
+msgid "%s: Error - copies must be 1 or more."
 msgstr ""
 
 #, c-format
+msgid "%s: Error - expected character set after \"-S\" option."
+msgstr "%s: Fehler - Zeichensatz nach der \"-S\" Option erwartet."
+
+#, c-format
 msgid "%s: Error - expected content type after \"-T\" option."
-msgstr ""
+msgstr "%s: Fehler - Inhaltstyp nach der \"-T\" Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected copies after \"-#\" option."
-msgstr ""
+msgstr "%s: Fehler - Kopienanzahl nach der \"-#\" Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected copies after \"-n\" option."
-msgstr ""
+msgstr "%s: Fehler - Kopienzahl nach der \"-n\" Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected destination after \"-P\" option."
-msgstr ""
+msgstr "%s: Fehler - Zielangabe nach der \"-P\" Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected destination after \"-d\" option."
-msgstr ""
+msgstr "%s: Fehler - Zielangabe nach der \"-d\" Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected form after \"-f\" option."
@@ -1535,15 +1569,15 @@ msgstr ""
 
 #, c-format
 msgid "%s: Error - expected hold name after \"-H\" option."
-msgstr ""
+msgstr "%s: Fehler - erwarte hold name nach \"-H\" Option."
 
 #, c-format
 msgid "%s: Error - expected hostname after \"-H\" option."
-msgstr ""
+msgstr "%s: Fehler - Hostname nach der \"-H\" Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected hostname after \"-h\" option."
-msgstr ""
+msgstr "%s: Fehler - Hostname nach der \"-h\" Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected mode list after \"-y\" option."
@@ -1551,65 +1585,67 @@ msgstr ""
 
 #, c-format
 msgid "%s: Error - expected name after \"-%c\" option."
-msgstr ""
+msgstr "%s: Fehler - Name nach der »-%c« Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected option=value after \"-o\" option."
-msgstr ""
+msgstr "%s: Fehler - Option=Wert nach der »-o« Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected page list after \"-P\" option."
-msgstr ""
+msgstr "%s: Fehler - Seitenliste nach der »-P« Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected priority after \"-%c\" option."
-msgstr ""
+msgstr "%s: Fehler - Priorität nach der »-%c« Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected reason text after \"-r\" option."
-msgstr ""
+msgstr "%s: Fehler - Grund nach der »-r« Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected title after \"-t\" option."
-msgstr ""
+msgstr "%s: Fehler - Titel nach der »-t« Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected username after \"-U\" option."
-msgstr ""
+msgstr "%s: Fehler - Benutzername nach der »-U« Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected username after \"-u\" option."
-msgstr ""
+msgstr "%s: Fehler - Benutzername nach der »-u« Option erwartet."
 
 #, c-format
 msgid "%s: Error - expected value after \"-%c\" option."
-msgstr ""
+msgstr "%s: Fehler - Wert nach der »%c« Option erwartet."
 
 #, c-format
 msgid ""
 "%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" "
 "option."
 msgstr ""
+"%s: Fehler - benötigt \"completed\", \"not-completed\", oder \"all\" nach \"-"
+"W\" Option."
 
 #, c-format
 msgid "%s: Error - no default destination available."
-msgstr ""
+msgstr "%s: Fehler - kein voreingestellted Druckziel verfügbar."
 
 #, c-format
 msgid "%s: Error - priority must be between 1 and 100."
-msgstr ""
+msgstr "%s: Fehler - Priorität muss zwischen 1 und 100 liegen."
 
 #, c-format
 msgid "%s: Error - scheduler not responding."
-msgstr ""
+msgstr "%s: Fehler - Zeitplandienst antwortet nicht."
 
 #, c-format
 msgid "%s: Error - too many files - \"%s\"."
-msgstr ""
+msgstr "%s: Fehler - zu viele Dateien - \"%s\"."
 
 #, c-format
 msgid "%s: Error - unable to access \"%s\" - %s"
-msgstr ""
+msgstr "%s: Fehler - Zugriff auf »%s« nicht möglich - %s"
 
 #, c-format
 msgid "%s: Error - unable to queue from stdin - %s."
@@ -1617,19 +1653,19 @@ msgstr ""
 
 #, c-format
 msgid "%s: Error - unknown destination \"%s\"."
-msgstr ""
+msgstr "%s: Fehler - unbekanntes Druckziel \"%s\"."
 
 #, c-format
 msgid "%s: Error - unknown destination \"%s/%s\"."
-msgstr ""
+msgstr "%s: Fehler - unbekanntes Druckziel \"%s/%s\"."
 
 #, c-format
 msgid "%s: Error - unknown option \"%c\"."
-msgstr ""
+msgstr "%s: Fehler - unbekannte Option \"%c\"."
 
 #, c-format
 msgid "%s: Error - unknown option \"%s\"."
-msgstr ""
+msgstr "%s: Fehler - unbekannte Option \"%s\"."
 
 #, c-format
 msgid "%s: Expected job ID after \"-i\" option."
@@ -1645,70 +1681,74 @@ msgstr ""
 
 #, c-format
 msgid "%s: Missing filename for \"-P\"."
-msgstr ""
+msgstr "%s: Fehlender NAme für \"-P\"."
 
 #, c-format
 msgid "%s: Missing timeout for \"-T\"."
-msgstr ""
+msgstr "%s: Fehlender Zeitüberschreitung für \"-T\"."
 
 #, c-format
 msgid "%s: Missing version for \"-V\"."
-msgstr ""
+msgstr "%s: Fehlende Version für \"-V\"."
 
 #, c-format
 msgid "%s: Need job ID (\"-i jobid\") before \"-H restart\"."
-msgstr ""
+msgstr "%s: Benötigt Auftrags-ID (\"-i jobid\") vor \"-H restart\"."
 
 #, c-format
 msgid "%s: No filter to convert from %s/%s to %s/%s."
-msgstr ""
+msgstr "%s: Kein Filter zum Umwandeln von %s/%s nach %s/%s."
 
 #, c-format
 msgid "%s: Operation failed: %s"
-msgstr ""
+msgstr "%s: Vorgang fehlgeschlagen: %s"
 
 #, c-format
 msgid "%s: Sorry, no encryption support."
-msgstr ""
+msgstr "%s: Sorry, Verschlüsselung nicht unterstützt."
 
 #, c-format
 msgid "%s: Unable to connect to \"%s:%d\": %s"
-msgstr ""
+msgstr "%s: Verbindung zu \"%s:%d\": %s nicht möglich"
 
 #, c-format
 msgid "%s: Unable to connect to server."
-msgstr ""
+msgstr "%s: Verbindung zum Server nicht möglich."
 
 #, c-format
 msgid "%s: Unable to contact server."
-msgstr ""
+msgstr "%s: Server kontaktieren nicht möglich."
 
 #, c-format
 msgid "%s: Unable to create PPD file: %s"
-msgstr ""
+msgstr "%s: Erzeugung der PPD Datei nicht möglich: %s"
 
 #, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
-msgstr ""
+msgstr "%s: Nicht möglich den MIME type von \"%s\" zu ermitteln."
 
 #, c-format
 msgid "%s: Unable to open \"%s\": %s"
-msgstr ""
+msgstr "%s: Öffnen von \"%s\": %s nicht möglich"
 
 #, c-format
 msgid "%s: Unable to open %s: %s"
-msgstr ""
+msgstr "%s: Öffnen von %s: %s nicht möglich"
 
 #, c-format
 msgid "%s: Unable to open PPD file: %s on line %d."
-msgstr ""
+msgstr "%s: Öffnen der PPD Datei: %s in Zeile %d."
 
 #, c-format
 msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
-msgstr ""
+msgstr "%s: Lesen der MIME Datenbank von \"%s\" oder \"%s\" nicht möglich."
 
 #, c-format
 msgid "%s: Unable to resolve \"%s\"."
+msgstr "%s: Auflösen von \"%s\" nicht möglich."
+
+#, c-format
+msgid "%s: Unknown argument \"%s\"."
 msgstr ""
 
 #, c-format
@@ -1721,15 +1761,15 @@ msgstr "%s: Unbekannte Ziel-MIME-Type %s/%s."
 
 #, c-format
 msgid "%s: Unknown option \"%c\"."
-msgstr ""
+msgstr "%s: Unbekannte Option \"%c\"."
 
 #, c-format
 msgid "%s: Unknown option \"%s\"."
-msgstr ""
+msgstr "%s: Unbekannte Option \"%s\"."
 
 #, c-format
 msgid "%s: Unknown option \"-%c\"."
-msgstr ""
+msgstr "%s: Unbekannte Option \"-%c\"."
 
 #, c-format
 msgid "%s: Unknown source MIME type %s/%s."
@@ -1743,11 +1783,11 @@ msgstr ""
 
 #, c-format
 msgid "%s: Warning - character set option ignored."
-msgstr ""
+msgstr "%s: Warnung - Zeichensatzoption ignoriert."
 
 #, c-format
 msgid "%s: Warning - content type option ignored."
-msgstr ""
+msgstr "%s: Warnung - Inhaltstypenoption ignoriert."
 
 #, c-format
 msgid "%s: Warning - form option ignored."
@@ -1907,13 +1947,13 @@ msgid "10 inches/sec."
 msgstr "10 inch/s"
 
 msgid "10 x 11"
-msgstr ""
+msgstr "10×11 inch"
 
 msgid "10 x 13"
-msgstr ""
+msgstr "10×13 inch"
 
 msgid "10 x 14"
-msgstr ""
+msgstr "10×14 inch"
 
 msgid "100"
 msgstr "100"
@@ -1943,7 +1983,7 @@ msgid "12 inches/sec."
 msgstr "12 inch/s"
 
 msgid "12 x 11"
-msgstr ""
+msgstr "12×11 inch"
 
 msgid "120"
 msgstr "120"
@@ -2002,6 +2042,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 inch/s"
 
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "2-Sided Printing"
 msgstr "Doppelseitig drucken"
 
@@ -2114,6 +2166,18 @@ msgid "3 inches/sec."
 msgstr "3 inch/s"
 
 msgid "3 x 5"
+msgstr "3×5"
+
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Portrait)"
 msgstr ""
 
 msgid "3.00x1.00\""
@@ -2147,7 +2211,7 @@ msgid "3.25x7.83\""
 msgstr "3,25×7,83 inch"
 
 msgid "3.5 x 5"
-msgstr ""
+msgstr "3,5×5 inch"
 
 msgid "3.5\" Disk"
 msgstr "3,5 inch Disk"
@@ -2182,6 +2246,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 inch/s"
 
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "4.00x1.00\""
 msgstr "4,00×1,00 inch"
 
@@ -2225,7 +2301,7 @@ msgid "5 inches/sec."
 msgstr "5 inch/s"
 
 msgid "5 x 7"
-msgstr ""
+msgstr "5×7"
 
 msgid "50"
 msgstr "50"
@@ -2273,7 +2349,7 @@ msgid "60dpi"
 msgstr "60 dpi"
 
 msgid "60x72dpi"
-msgstr ""
+msgstr "60×72 dpi"
 
 msgid "65"
 msgstr "65"
@@ -2285,7 +2361,7 @@ msgid "7 inches/sec."
 msgstr "7 inch/s"
 
 msgid "7 x 9"
-msgstr ""
+msgstr "7×9"
 
 msgid "70"
 msgstr "70"
@@ -2300,7 +2376,7 @@ msgid "8 inches/sec."
 msgstr "8 inch/s"
 
 msgid "8 x 10"
-msgstr ""
+msgstr "8×10 inch"
 
 msgid "8.00x1.00\""
 msgstr "8,00×1,00 inch"
@@ -2354,13 +2430,14 @@ msgid "95"
 msgstr "95"
 
 msgid "?Invalid help command unknown."
-msgstr ""
+msgstr "?Ungültiger Hilfebefehl unbekannt."
 
 msgid "A Samba password is required to export printer drivers"
-msgstr ""
+msgstr "Ein Samba-Passwort ist erforderlich um Druckertrieber zu exportieren"
 
 msgid "A Samba username is required to export printer drivers"
 msgstr ""
+"Ein Samba-Benutzername ist erforderlich um Druckertreiber zu exportieren"
 
 #, c-format
 msgid "A class named \"%s\" already exists."
@@ -2419,7 +2496,7 @@ msgid "A5"
 msgstr "DIN A5"
 
 msgid "A5 Long Edge"
-msgstr ""
+msgstr "A5 lange Kante"
 
 msgid "A5 Oversize"
 msgstr "A5 Übergrösse"
@@ -2458,19 +2535,19 @@ msgid "ARCH C"
 msgstr "ARCH C"
 
 msgid "ARCH C Long Edge"
-msgstr ""
+msgstr "ARCH C lange Kante"
 
 msgid "ARCH D"
 msgstr "ARCH D"
 
 msgid "ARCH D Long Edge"
-msgstr ""
+msgstr "ARCH D lange Kante"
 
 msgid "ARCH E"
 msgstr "ARCH E"
 
 msgid "ARCH E Long Edge"
-msgstr ""
+msgstr "ARCH E lange Kante"
 
 msgid "Accept Jobs"
 msgstr "Druckaufträge akzeptieren"
@@ -2478,6 +2555,9 @@ msgstr "Druckaufträge akzeptieren"
 msgid "Accepted"
 msgstr "Akzeptiert"
 
+msgid "Accordian Fold"
+msgstr ""
+
 msgid "Add Class"
 msgstr "Klasse hinzufügen"
 
@@ -2493,6 +2573,15 @@ msgstr "Adresse"
 msgid "Administration"
 msgstr "Verwaltung"
 
+msgid "Alternate"
+msgstr ""
+
+msgid "Alternate Roll"
+msgstr ""
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "Immer"
 
@@ -2502,14 +2591,31 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "Applicator"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr "Versuch den %s Druckerstatus auf einen ungültigen %d Wert zu setzen."
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "Attributgruppen sind nicht in der Reihenfolge (%x < %x)"
 
+msgid "Automatic"
+msgstr ""
+
 msgid "B0"
 msgstr "DIN B0"
 
@@ -2532,7 +2638,7 @@ msgid "B5"
 msgstr "DIN B5"
 
 msgid "B5 Oversize"
-msgstr ""
+msgstr "B5 Übergrösse"
 
 msgid "B6"
 msgstr "DIN B6"
@@ -2546,9 +2652,12 @@ msgstr "DIN B8"
 msgid "B9"
 msgstr "DIN B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
-msgstr ""
+msgstr "Fehlerhafter 'document-format' Wert \"%s\"."
 
 msgid "Bad NULL dests pointer"
 msgstr "Ungültiger NULL-Dests-Pointer"
@@ -2565,6 +2674,9 @@ msgstr "Ungültige Abhängigkeit"
 msgid "Bad PPD cache file."
 msgstr "Ungültige PPD Cache Datei."
 
+msgid "Bad PPD file."
+msgstr ""
+
 msgid "Bad Request"
 msgstr "Ungültige Anfrage"
 
@@ -2586,22 +2698,22 @@ msgstr "Ungültiger angepasster Parameter"
 
 #, c-format
 msgid "Bad device-uri \"%s\"."
-msgstr ""
+msgstr "Ungültige Geräte-URI\"%s\"."
 
 #, c-format
 msgid "Bad device-uri scheme \"%s\"."
-msgstr ""
+msgstr "Ungültiges Geräte-URI Schema \"%s\"."
 
 #, c-format
 msgid "Bad document-format \"%s\"."
-msgstr ""
+msgstr "Ungültiges Dokumentenformat \"%s\"."
 
 #, c-format
 msgid "Bad document-format-default \"%s\"."
-msgstr ""
+msgstr "Ungültiges voreingestelltes Dokumentenformat \"%s\"."
 
 msgid "Bad filename buffer"
-msgstr ""
+msgstr "Ungültiger Dateinamepuffer"
 
 msgid "Bad hostname/address in URI"
 msgstr "Ungültiger Hostname/Adresse in URI"
@@ -2618,59 +2730,59 @@ msgstr "Ungültiger Wert für Auftragspriorität."
 
 #, c-format
 msgid "Bad job-sheets value \"%s\"."
-msgstr ""
+msgstr "Ungültiger Wert für job-sheets \"%s\"."
 
 msgid "Bad job-sheets value type."
-msgstr ""
+msgstr "Ungültiger Werttyp für job-sheets."
 
 msgid "Bad job-state value."
-msgstr ""
+msgstr "Ungültiger Wert des Auftragsstatus."
 
 #, c-format
 msgid "Bad job-uri \"%s\"."
-msgstr ""
+msgstr "Ungültige Auftrags-URI\"%s\"."
 
 #, c-format
 msgid "Bad notify-pull-method \"%s\"."
-msgstr ""
+msgstr "Ungültige notify-pull-method \"%s\"."
 
 #, c-format
 msgid "Bad notify-recipient-uri \"%s\"."
-msgstr ""
+msgstr "Ungültige notify-recipient-uri \"%s\"."
 
 #, c-format
 msgid "Bad number-up value %d."
-msgstr "Ungültiger Number-Up-Wert „%d“."
+msgstr "Ungültiger number-up-Wert %d."
 
 #, c-format
 msgid "Bad option + choice on line %d."
-msgstr ""
+msgstr "Ungültige Option + Wahl in Zeile %d"
 
 #, c-format
 msgid "Bad page-ranges values %d-%d."
-msgstr "Ungültige Seitenbereichswerte %d%d."
+msgstr "Ungültige Seitenbereichswerte %d-%d."
 
 msgid "Bad port number in URI"
 msgstr "Ungültige Port-Nummer in URI"
 
 #, c-format
 msgid "Bad port-monitor \"%s\"."
-msgstr ""
+msgstr "Ungültiger port-monitor \"%s\"."
 
 #, c-format
 msgid "Bad printer-state value %d."
-msgstr ""
+msgstr "Ungültiger printer-port Wert %d."
 
 msgid "Bad printer-uri."
 msgstr "Ungültige Drucker-uri"
 
 #, c-format
 msgid "Bad request ID %d."
-msgstr ""
+msgstr "Ungültige Anfrage-ID %d."
 
 #, c-format
 msgid "Bad request version number %d.%d."
-msgstr ""
+msgstr "Ungültige Versionsnummernanfrage %d.%d."
 
 msgid "Bad resource in URI"
 msgstr "Ungültige Resource in URI"
@@ -2690,19 +2802,49 @@ msgstr "Ungültiger Zeichenkette"
 msgid "Bad/empty URI"
 msgstr "Ungültige/leere URI"
 
+msgid "Bale"
+msgstr ""
+
 msgid "Banners"
 msgstr "Banner"
 
+msgid "Bind"
+msgstr ""
+
+msgid "Bind (Landscape)"
+msgstr ""
+
+msgid "Bind (Portrait)"
+msgstr ""
+
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "Papier bündeln"
 
+msgid "Booklet Maker"
+msgstr ""
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
+msgstr "Boolesch erwartet für waitof Option \"%s\"."
+
+msgid "Bottom"
 msgstr ""
 
 msgid "Buffer overflow detected, aborting."
 msgstr "Pufferüberlauf festgestellt, Abbruch."
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMYK"
 
@@ -2718,11 +2860,23 @@ msgstr "RSS-Abo widerrufen"
 msgid "Canceling print job."
 msgstr "Auftrag wird abgebrochen."
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
 msgid "Cannot share a remote Kerberized printer."
+msgstr "Freigabe eines entfernten kerberisierten Druckers nicht möglich"
+
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
 msgstr ""
 
 msgid "Cassette"
-msgstr "Kasette"
+msgstr "Kassette"
+
+msgid "Center"
+msgstr ""
 
 msgid "Change Settings"
 msgstr "Einstellungen ändern"
@@ -2738,6 +2892,15 @@ msgid "Clean Print Heads"
 msgstr "Saubere Druckköpfe"
 
 msgid "Close-Job doesn't support the job-uri attribute."
+msgstr "Close-Job unterstützt keine job-uri Attribute."
+
+msgid "Coat"
+msgstr ""
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
 msgstr ""
 
 msgid "Color"
@@ -2746,6 +2909,9 @@ msgstr "Farbe"
 msgid "Color Mode"
 msgstr "Farbmodus"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -2770,14 +2936,32 @@ msgstr "Weiter"
 msgid "Continuous"
 msgstr "Kontinuierlich"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr "Steuerdatei erfolgreich gesendet."
 
 msgid "Copying print data."
 msgstr "Kopiere Druckdaten."
 
-msgid "Created"
-msgstr "Erstellt"
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
+msgid "Created"
+msgstr "Erstellt"
+
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
 
 msgid "Custom"
 msgstr "Eigene"
@@ -2791,9 +2975,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "Abschneiden"
 
+msgid "Cut Media"
+msgstr ""
+
 msgid "Cutter"
 msgstr "Abschneider"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "Dunkel"
 
@@ -2831,29 +3021,56 @@ msgstr "Direct Thermotransfermedia"
 
 #, c-format
 msgid "Directory \"%s\" contains a relative path."
-msgstr ""
+msgstr "Verzeichnis \"%s\" enthält einen relativen Pfad."
 
 #, c-format
 msgid "Directory \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr ""
+msgstr "Verzeichnis \"%s\" hat unsichere Rechte (0%o/uid=%d/gid=%d)."
 
 #, c-format
 msgid "Directory \"%s\" is a file."
-msgstr ""
+msgstr "Verzeichnis \"%s\" ist eine Datei."
 
 #, c-format
 msgid "Directory \"%s\" not available: %s"
-msgstr ""
+msgstr "Verzeichnis \"%s\" nicht vorhanden: %s"
 
 #, c-format
 msgid "Directory \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
-msgstr ""
+msgstr "Verzeichnisrechte \"%s\" OK (0%o/uid=%d/gid=%d)."
 
 msgid "Disabled"
 msgstr "Deaktiviert"
 
+msgid "Disc"
+msgstr ""
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
+msgstr "Dokument #%d existiert in Auftrag #%d nicht."
+
+msgid "Double Gate Fold"
+msgstr ""
+
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dry Film"
 msgstr ""
 
 msgid "Duplexer"
@@ -2871,12 +3088,18 @@ msgstr "EPL2 Etikettendrucker"
 msgid "Edit Configuration File"
 msgstr "Konfigurationsdatei bearbeiten"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr "Leere PPD Datei."
 
 msgid "Encryption is not supported."
 msgstr "Verschlüsselung ist nicht unterstüzt."
 
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Banner beenden"
@@ -2894,8 +3117,11 @@ msgstr ""
 "Authentifizierung verwenden, stellen Sie sicher, dass Sie ein gültiges "
 "Kerberos-Ticket haben."
 
-msgid "Envelope #10 "
-msgstr "US Umschlag 10"
+msgid "Envelope"
+msgstr ""
+
+msgid "Envelope #10"
+msgstr ""
 
 msgid "Envelope #11"
 msgstr "US Umschlag 11"
@@ -2984,7 +3210,7 @@ msgstr ""
 msgid "Envelope Monarch"
 msgstr ""
 
-msgid "Envelope PRC1 "
+msgid "Envelope PRC1"
 msgstr ""
 
 msgid "Envelope PRC1 Long Edge"
@@ -3063,7 +3289,7 @@ msgid "Error Policy"
 msgstr "Fehlerbehandlung"
 
 msgid "Error reading raster data."
-msgstr ""
+msgstr "Fehler beim Lesen der Rasterdaten."
 
 msgid "Error sending raster data."
 msgstr "Fehler beim Senden von Rasterdaten."
@@ -3116,6 +3342,9 @@ msgstr "Ausdrücke:"
 msgid "FAIL"
 msgstr ""
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr ""
 
@@ -3125,17 +3354,20 @@ msgstr ""
 msgid "Fanfold US"
 msgstr ""
 
+msgid "Fast Grayscale"
+msgstr ""
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
-msgstr ""
+msgstr "Datei \"%s\" enthält einen relativen Pfad."
 
 #, c-format
 msgid "File \"%s\" has insecure permissions (0%o/uid=%d/gid=%d)."
-msgstr ""
+msgstr "Datei \"%s\" hat unsichere Rechte (0%o/uid=%d/gid=%d)."
 
 #, c-format
 msgid "File \"%s\" is a directory."
-msgstr ""
+msgstr "Datei \"%s\" ist ein Verzeichnis."
 
 #, c-format
 msgid "File \"%s\" not available: %s"
@@ -3143,10 +3375,10 @@ msgstr "Datei \"%s\" nicht verfügbar: %s"
 
 #, c-format
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
-msgstr ""
+msgstr "Dateirechte \"%s\" OK (0%o/uid=%d/gid=%d)."
 
-msgid "File Folder "
-msgstr "Datei-Verzeichnis "
+msgid "File Folder"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -3154,8 +3386,32 @@ msgid ""
 "in \"%s/cups-files.conf\"."
 msgstr ""
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
+msgstr "Seite %d fertiggestellt."
+
+msgid "Finishing"
+msgstr ""
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
 msgstr ""
 
 msgid "Folio"
@@ -3164,6 +3420,12 @@ msgstr "Folio"
 msgid "Forbidden"
 msgstr "Verboten"
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr ""
+
 msgid "General"
 msgstr "Allgemein"
 
@@ -3173,10 +3435,40 @@ msgstr "Allgemein"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Get-Response-PDU hat unbestimmte Länge"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
 msgstr "Glanzpapier"
 
+msgid "Glossy Photo Paper"
+msgstr ""
+
 msgid "Got a printer-uri attribute but no job-id."
+msgstr "Drucker-URI Attribut empfangen aber keine Auftrags-ID."
+
+msgid "Gravure Cylinder"
 msgstr ""
 
 msgid "Grayscale"
@@ -3185,18 +3477,51 @@ msgstr "Graustufen"
 msgid "HP"
 msgstr "HP"
 
+msgid "Hagaki"
+msgstr ""
+
+msgid "Half Fold"
+msgstr ""
+
+msgid "Half Z Fold"
+msgstr ""
+
 msgid "Hanging Folder"
 msgstr "Hängeordner"
 
+msgid "Hash buffer too small."
+msgstr ""
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
 msgid "Help file not in index."
 msgstr "Hilfedatei nicht im Index."
 
-msgid "IPP 1setOf attribute with incompatible value tags."
+msgid "High"
 msgstr ""
 
-msgid "IPP attribute has no name."
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
 msgstr ""
 
+msgid "High Gloss Photo Paper"
+msgstr ""
+
+msgid "IPP 1setOf attribute with incompatible value tags."
+msgstr "IPP 1setOf Attribut mit inkompatiblen Werte-Markierung."
+
+msgid "IPP attribute has no name."
+msgstr "IPP Attribut hat keinen Namen."
+
 msgid "IPP attribute is not a member of the message."
 msgstr ""
 
@@ -3219,7 +3544,7 @@ msgid "IPP extension tag larger than 0x7FFFFFFF."
 msgstr ""
 
 msgid "IPP integer value not 4 bytes."
-msgstr ""
+msgstr "IPP Integer-Wert nicht 4 Bytes."
 
 msgid "IPP language length overflows value."
 msgstr ""
@@ -3278,6 +3603,18 @@ msgstr "Ungültiger Übersetzungsstring"
 msgid "Illegal whitespace character"
 msgstr "Ungültiges Leerzeichen"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "Installationsoptionen"
 
@@ -3311,6 +3648,9 @@ msgstr "Ungültige Argumente des Mediennamens."
 msgid "Invalid media size."
 msgstr "Ungültige Mediengrösse."
 
+msgid "Invalid ppd-name value."
+msgstr ""
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "Ungültiges Druckkommando \"%s\"."
@@ -3424,6 +3764,9 @@ msgstr "Auftragssubskiptionen können nicht erneuert werden."
 msgid "Jobs"
 msgstr "Druckaufträge"
 
+msgid "Jog"
+msgstr ""
+
 msgid "LPD/LPR Host or Printer"
 msgstr "LPD/LPR-Host oder -Drucker"
 
@@ -3433,6 +3776,15 @@ msgstr "Etikettendrucker"
 msgid "Label Top"
 msgstr "Etikett (oben)"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr ""
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "Sprache \"%s\" nicht unterstützt."
@@ -3440,18 +3792,39 @@ msgstr "Sprache \"%s\" nicht unterstützt."
 msgid "Large Address"
 msgstr "Adresse gross"
 
+msgid "Large Capacity"
+msgstr ""
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Serie PCL 4/5"
 
-msgid "Letter Oversize"
+msgid "Left"
+msgstr ""
+
+msgid "Left Gate Fold"
 msgstr ""
 
+msgid "Letter Fold"
+msgstr ""
+
+msgid "Letter Oversize"
+msgstr "Letter Übergrösse"
+
 msgid "Letter Oversize Long Edge"
 msgstr ""
 
+msgid "Letterhead"
+msgstr ""
+
 msgid "Light"
 msgstr "Leicht"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Zeile ist länger als die zulässige Länge von 255 Zeichen"
 
@@ -3461,15 +3834,39 @@ msgstr "Verfügbare Drucker anzeigen"
 msgid "Load paper."
 msgstr "Lade Papier."
 
+msgid "Local printer created."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Lange Kante (Hochformat)"
 
-msgid "Looking for printer..."
+msgid "Looking for printer."
+msgstr "Suche nach Drucker."
+
+msgid "Main"
+msgstr ""
+
+msgid "Main Roll"
+msgstr ""
+
+msgid "Manual"
 msgstr ""
 
 msgid "Manual Feed"
 msgstr "Manuelle Papierzufuhr"
 
+msgid "Matte Fabric"
+msgstr ""
+
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
 msgid "Media Size"
 msgstr "Mediengrösse"
 
@@ -3488,6 +3885,27 @@ msgstr "Medium"
 msgid "Memory allocation error"
 msgstr "Fehler bei der Speicherzuteilung"
 
+msgid "Metal"
+msgstr ""
+
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr ""
+
 msgid "Missing CloseGroup"
 msgstr "Fehlendes CloseGroup"
 
@@ -3508,7 +3926,7 @@ msgid "Missing form variable"
 msgstr "Fehlende form Variable"
 
 msgid "Missing last-document attribute in request."
-msgstr ""
+msgstr "Fehlendes Letzte-Sete Attribut in der Anfrage."
 
 msgid "Missing media or media-col."
 msgstr ""
@@ -3520,11 +3938,15 @@ msgid "Missing notify-subscription-ids attribute."
 msgstr ""
 
 msgid "Missing option keyword"
-msgstr ""
+msgstr "Fehlende Option Schlüsselwort"
 
 msgid "Missing requesting-user-name attribute."
 msgstr ""
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
 msgid "Missing required attributes."
 msgstr ""
 
@@ -3536,16 +3958,16 @@ msgstr "Fehlendes Schema in URI"
 
 #, c-format
 msgid "Missing value on line %d."
-msgstr ""
+msgstr "Fehlender Wert in Zeile %d."
 
 msgid "Missing value string"
 msgstr "Wertestring fehlt"
 
 msgid "Missing x-dimension in media-size."
-msgstr ""
+msgstr "Fehlende x-Dimension in Mediengrösse"
 
 msgid "Missing y-dimension in media-size."
-msgstr ""
+msgstr "Fehlende y-Dimension in Mediengrösse"
 
 #, c-format
 msgid ""
@@ -3564,6 +3986,9 @@ msgstr "Klasse verändern"
 msgid "Modify Printer"
 msgstr "Drucker verändern"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "Alle Druckaufträge verschieben"
 
@@ -3573,6 +3998,15 @@ msgstr "Druckauftrag verschieben"
 msgid "Moved Permanently"
 msgstr "Dauerhaft verschoben"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr ""
+
 msgid "NULL PPD file pointer"
 msgstr "NULL PPD File Pointer"
 
@@ -3585,12 +4019,21 @@ msgstr "Geschachtelte Klassen sind nicht erlaubt."
 msgid "Never"
 msgstr "Nie"
 
+msgid "New credentials are not valid for name."
+msgstr ""
+
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
 msgid "No"
 msgstr "Nein"
 
 msgid "No Content"
 msgstr "Kein Inhalt"
 
+msgid "No Finishing"
+msgstr ""
+
 msgid "No PPD name"
 msgstr "Kein PPD Name"
 
@@ -3616,6 +4059,9 @@ msgstr "Keine Attribute in der Anfrage."
 msgid "No authentication information provided."
 msgstr "Keine Authentifizierungsinformation bereitgestellt."
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "Kein Community-Name"
 
@@ -3654,7 +4100,7 @@ msgid "No printer-uri found"
 msgstr "Keine Drucker-uri gefunden"
 
 msgid "No printer-uri found for class"
-msgstr ""
+msgstr "Keine Drucker-URI gefunden für die Klasse"
 
 msgid "No printer-uri in request."
 msgstr ""
@@ -3671,6 +4117,9 @@ msgstr "Keine Anfrage gesendet."
 msgid "No request-id"
 msgstr "Keine Anfrage-ID"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr "Keine Subskriptions-Attribute in der Anfrage."
 
@@ -3732,6 +4181,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "Online-Hilfe"
 
+msgid "Only local users can create a local printer."
+msgstr ""
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "%s öffnen fehlgeschlagen: %s"
@@ -3745,6 +4197,9 @@ msgstr "OpenUI/JCLOpenUI ohne CloseUI/JCLCloseUI zuerst"
 msgid "Operation Policy"
 msgstr "Nutzungsrichtlinien"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr ""
@@ -3755,9 +4210,12 @@ msgstr "Installierte Optionen"
 msgid "Options:"
 msgstr "Optionen:"
 
-msgid "Out of date PPD cache file."
+msgid "Other"
 msgstr ""
 
+msgid "Out of date PPD cache file."
+msgstr "Veraltete PPD Cache-Datei."
+
 msgid "Out of memory."
 msgstr "Nicht genügend Hauptspeicher."
 
@@ -3783,19 +4241,19 @@ msgid "PRC16K"
 msgstr "PRC16K"
 
 msgid "PRC16K Long Edge"
-msgstr ""
+msgstr "PRC16K lange Kante"
 
 msgid "PRC32K"
 msgstr "PRC32K"
 
 msgid "PRC32K Long Edge"
-msgstr ""
+msgstr "PRC32K lange Kante"
 
 msgid "PRC32K Oversize"
-msgstr ""
+msgstr "PRCK32K Übergrösse"
 
 msgid "PRC32K Oversize Long Edge"
-msgstr ""
+msgstr "PRCK32K Übergrösse lange Kante"
 
 msgid "Packet does not contain a Get-Response-PDU"
 msgstr "Paket enthält kein Get-Response-PDU"
@@ -3803,6 +4261,9 @@ msgstr "Paket enthält kein Get-Response-PDU"
 msgid "Packet does not start with SEQUENCE"
 msgstr "Paket beginnt nicht mit SEQUENCE"
 
+msgid "Paper"
+msgstr ""
+
 msgid "Paper jam."
 msgstr "Papierstau."
 
@@ -3815,6 +4276,9 @@ msgstr "Papierfach ist leer."
 msgid "Paper tray is missing."
 msgstr "Papierfach ist nicht vorhanden."
 
+msgid "Parallel Fold"
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -3838,18 +4302,63 @@ msgstr "Drucker anhalten"
 msgid "Peel-Off"
 msgstr "Aufkleber"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "Foto"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "Foto-Etiketten"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr "Standardpapier"
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "Richtlinien "
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "Port-Monitor"
 
@@ -3859,7 +4368,7 @@ msgstr "PostScript-Drucker"
 msgid "Postcard"
 msgstr "Postkarte"
 
-msgid "Postcard Double "
+msgid "Postcard Double"
 msgstr ""
 
 msgid "Postcard Double Long Edge"
@@ -3868,7 +4377,19 @@ msgstr ""
 msgid "Postcard Long Edge"
 msgstr ""
 
+msgid "Poster Fold"
+msgstr ""
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
+msgstr "Vorbereitung zum Druck."
+
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
 msgstr ""
 
 msgid "Print Density"
@@ -3880,6 +4401,9 @@ msgstr "Druckauftrag:"
 msgid "Print Mode"
 msgstr "Druckmodus"
 
+msgid "Print Quality"
+msgstr ""
+
 msgid "Print Rate"
 msgstr "Druckrate"
 
@@ -3896,7 +4420,7 @@ msgid "Print and Cut"
 msgstr "Drucken und abschneiden"
 
 msgid "Print and Tear"
-msgstr "Drucken und abziehen"
+msgstr "Drucken und abreissen"
 
 msgid "Print file sent."
 msgstr "Druckdatei gesendet."
@@ -3910,6 +4434,10 @@ msgstr "Der Druckauftrag ist zu gross."
 msgid "Print job was not accepted."
 msgstr "Der Druckauftrag wurde nicht angenommen."
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "Drucker hinzugefügt"
 
@@ -3944,6 +4472,12 @@ msgstr "Drucker"
 msgid "Printing page %d, %u%% complete."
 msgstr "Drucke Seite %d, %u%% fertig."
 
+msgid "Punch"
+msgstr ""
+
+msgid "Punched Paper"
+msgstr ""
+
 msgid "Quarto"
 msgstr "US Quarto"
 
@@ -3953,6 +4487,9 @@ msgstr "Kontingentgrenze erreicht."
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "Rang    Besitz. Auftrag Datei(en)                       Gesamtgrösse"
 
+msgid "Rear"
+msgstr ""
+
 msgid "Reject Jobs"
 msgstr "Druckaufträge ablehnen"
 
@@ -3985,9 +4522,48 @@ msgstr "Antwort-Adresse"
 msgid "Rewind"
 msgstr "Zurückdrehen"
 
+msgid "Right"
+msgstr ""
+
+msgid "Right Gate Fold"
+msgstr ""
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr ""
+
+msgid "Roll 10"
+msgstr ""
+
+msgid "Roll 2"
+msgstr ""
+
+msgid "Roll 3"
+msgstr ""
+
+msgid "Roll 4"
+msgstr ""
+
+msgid "Roll 5"
+msgstr ""
+
+msgid "Roll 6"
+msgstr ""
+
+msgid "Roll 7"
+msgstr ""
+
+msgid "Roll 8"
+msgstr ""
+
+msgid "Roll 9"
+msgstr ""
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
-msgstr ""
+msgstr "Befehlsausführung: %s %s -N -A %s -c '%s'"
 
 msgid "SEQUENCE uses indefinite length"
 msgstr "SEQUENCE hat unbestimmte Länge"
@@ -3995,9 +4571,54 @@ msgstr "SEQUENCE hat unbestimmte Länge"
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS Verhandlungsfehler"
 
+msgid "Saddle Stitch"
+msgstr ""
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "Siehe auch"
 
+msgid "See remote printer."
+msgstr ""
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr "Sende Daten zum Drucker."
 
@@ -4016,29 +4637,68 @@ msgstr "Server ist angehalten"
 msgid "Server credentials not set."
 msgstr "Server-Zugangsdaten nicht gesetzt."
 
-msgid "Service Unavailable"
-msgstr "Dienst nicht verfügbar"
+msgid "Service Unavailable"
+msgstr "Dienst nicht verfügbar"
+
+msgid "Set Allowed Users"
+msgstr "Zugelassene Benutzer festlegen"
+
+msgid "Set As Server Default"
+msgstr "Als Voreinstellungen für Server festlegen"
+
+msgid "Set Class Options"
+msgstr "Klassenoptionen festlegen"
+
+msgid "Set Printer Options"
+msgstr "Druckeroptionen festlegen"
+
+msgid "Set Publishing"
+msgstr "Veröffentlichung festlegen"
+
+msgid "Shipping Address"
+msgstr "Lieferadresse"
+
+msgid "Short-Edge (Landscape)"
+msgstr "Kurze Kante (Querformat)"
+
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr ""
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
 
-msgid "Set Allowed Users"
-msgstr "Zugelassene Benutzer festlegen"
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
 
-msgid "Set As Server Default"
-msgstr "Als Voreinstellungen für Server festlegen"
+msgid "Single Staple (Landscape)"
+msgstr ""
 
-msgid "Set Class Options"
-msgstr "Klassenoptionen festlegen"
+msgid "Single Staple (Portrait)"
+msgstr ""
 
-msgid "Set Printer Options"
-msgstr "Druckeroptionen festlegen"
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
 
-msgid "Set Publishing"
-msgstr "Veröffentlichung festlegen"
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
 
-msgid "Shipping Address"
-msgstr "Lieferadresse"
+msgid "Single Wall Cardboard"
+msgstr ""
 
-msgid "Short-Edge (Landscape)"
-msgstr "Kurze Kante (Querformat)"
+msgid "Sleeve"
+msgstr ""
 
 msgid "Special Paper"
 msgstr "Spezialpapier"
@@ -4050,6 +4710,24 @@ msgstr "Auftragszwischenspeicherung %.0f%% abgeschlossen."
 msgid "Standard"
 msgstr "Standard"
 
+msgid "Staple"
+msgstr ""
+
+msgid "Staple Edge"
+msgstr ""
+
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "Startbanner"
@@ -4061,9 +4739,24 @@ msgstr "Beginne Seite %d."
 msgid "Statement"
 msgstr "US Statement"
 
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
+
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
 #, c-format
 msgid "Subscription #%d does not exist."
-msgstr ""
+msgstr "Abonnement #%d existiert nicht."
 
 msgid "Substitutions:"
 msgstr "Ersatz:"
@@ -4080,6 +4773,9 @@ msgstr "Super B/A3"
 msgid "Switching Protocols"
 msgstr "Protokoll wechseln"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "US Tabloid"
 
@@ -4100,29 +4796,33 @@ msgstr "Abriss-Justierposition"
 
 #, c-format
 msgid "The \"%s\" attribute is required for print jobs."
-msgstr "Das Attribut \"%s\" ist erforderlich für Druckaufträge."
+msgstr "Das Attribut »%s« ist erforderlich für Druckaufträge."
 
 #, c-format
 msgid "The %s attribute cannot be provided with job-ids."
-msgstr ""
+msgstr "Das %s Attribut kann nicht mit Auftrags-IDs angegeben werden."
 
 #, c-format
 msgid ""
 "The '%s' Job Status attribute cannot be supplied in a job creation request."
 msgstr ""
+"Das Attribut '%s' Auftragsstatus kann in einer Auftragsanfrage nicht "
+"angegeben werden."
 
 #, c-format
 msgid ""
 "The '%s' operation attribute cannot be supplied in a Create-Job request."
 msgstr ""
+"Das Vorgangsattribut '%s' kann nicht mit einer Anfrage zur "
+"Auftragserstellung angegeben werden."
 
 #, c-format
 msgid "The PPD file \"%s\" could not be found."
-msgstr "Die PPD-Datei „%s“ konnte nicht gefunden werden."
+msgstr "Die PPD-Datei »%s« konnte nicht gefunden werden."
 
 #, c-format
 msgid "The PPD file \"%s\" could not be opened: %s"
-msgstr "Die PPD-Datei „%s“ konnte nicht geöffnet werden: %s"
+msgstr "Die PPD-Datei »%s« konnte nicht geöffnet werden: %s"
 
 msgid "The PPD file could not be opened."
 msgstr "Die PPD Datei konnte nicht geöffnet werden."
@@ -4154,16 +4854,18 @@ msgstr ""
 
 #, c-format
 msgid "The notify-user-data value is too large (%d > 63 octets)."
-msgstr ""
+msgstr "Der WErt für notify-user-data ist zu gross (%d > 63 octets)."
 
 msgid "The optical photoconductor needs to be replaced."
-msgstr ""
+msgstr "Der optische Fotoleitertrommel muss ersetzt werden."
 
 msgid "The optical photoconductor will need to be replaced soon."
-msgstr ""
+msgstr "Der optische Fotoleitertrommel muss demnächst ersetzt werden."
 
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
+"Die Druckerkonfiguration ist nicht korrekt oder der Drucker existiert nicht "
+"mehr."
 
 msgid "The printer did not respond."
 msgstr "Der Drucker hat nicht geantwortet"
@@ -4234,7 +4936,7 @@ msgstr "Der Resttonerbehälter des Druckers ist voll"
 
 #, c-format
 msgid "The printer-uri \"%s\" contains invalid characters."
-msgstr "Die Drucker-URI „%s“ enthält ungültige Zeichen."
+msgstr "Die Drucker-URI »%s« enthält ungültige Zeichen."
 
 msgid "The printer-uri attribute is required."
 msgstr ""
@@ -4263,11 +4965,11 @@ msgid ""
 "enable it."
 msgstr ""
 "Die Web-Schnittstelle ist derzeit abgeschaltet. Das Einschalten kann mitdem "
-"Befehl \"cupsctl WebInterface=yes\" erfolgen."
+"Befehl »cupsctl WebInterface=yes« erfolgen."
 
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
-msgstr ""
+msgstr "Der which-jobs Wert »%s« ist nicht unterstützt."
 
 msgid "There are too many subscriptions."
 msgstr "Es gibt zu viele Subskriptionen."
@@ -4283,10 +4985,19 @@ msgstr "Zu viele aktive Druckaufträge."
 
 #, c-format
 msgid "Too many job-sheets values (%d > 2)."
-msgstr ""
+msgstr "Zu viele job-sheets Werte (%d > 2)."
 
 #, c-format
 msgid "Too many printer-state-reasons values (%d > %d)."
+msgstr "Zu viele printer-state-reasons Werte (%d > %d)."
+
+msgid "Top"
+msgstr ""
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
 msgstr ""
 
 msgid "Transparency"
@@ -4298,15 +5009,81 @@ msgstr "Fach"
 msgid "Tray 1"
 msgstr "Fach 1"
 
+msgid "Tray 10"
+msgstr ""
+
+msgid "Tray 11"
+msgstr ""
+
+msgid "Tray 12"
+msgstr ""
+
+msgid "Tray 13"
+msgstr ""
+
+msgid "Tray 14"
+msgstr ""
+
+msgid "Tray 15"
+msgstr ""
+
+msgid "Tray 16"
+msgstr ""
+
+msgid "Tray 17"
+msgstr ""
+
+msgid "Tray 18"
+msgstr ""
+
+msgid "Tray 19"
+msgstr ""
+
 msgid "Tray 2"
 msgstr "Fach 2"
 
+msgid "Tray 20"
+msgstr ""
+
 msgid "Tray 3"
 msgstr "Fach 3"
 
 msgid "Tray 4"
 msgstr "Fach 4"
 
+msgid "Tray 5"
+msgstr ""
+
+msgid "Tray 6"
+msgstr ""
+
+msgid "Tray 7"
+msgstr ""
+
+msgid "Tray 8"
+msgstr ""
+
+msgid "Tray 9"
+msgstr ""
+
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "URI zu lang"
 
@@ -4350,23 +5127,23 @@ msgid "Unable to add class"
 msgstr "Klasse konnte nicht hinzugefügt werden:"
 
 msgid "Unable to add document to print job."
-msgstr ""
+msgstr "Dem Druckauftrag kann kein Dokument hinzugefügt werden."
 
 #, c-format
 msgid "Unable to add job for destination \"%s\"."
-msgstr ""
+msgstr "Dem Ziel »%s« kann kein Auftrag hinzugefügt werden."
 
 msgid "Unable to add printer"
 msgstr "Drucker konnte nicht hinzugefügt werden:"
 
 msgid "Unable to allocate memory for file types."
-msgstr ""
+msgstr "Speicher für Dateitypen kann nicht belegt werden."
 
 msgid "Unable to allocate memory for page info"
-msgstr ""
+msgstr "Speicher für Seiteninformation kann nicht belegt werden"
 
 msgid "Unable to allocate memory for pages array"
-msgstr ""
+msgstr "Speicher für Seitenmatrix kann nicht belegt werden"
 
 msgid "Unable to cancel RSS subscription"
 msgstr "RSS-Abo konnte nicht widerrufen werden:"
@@ -4386,10 +5163,12 @@ msgstr "Servereinstellungen konnten nicht geändert werden :"
 #, c-format
 msgid "Unable to compile mimeMediaType regular expression: %s."
 msgstr ""
+"Der regulären Ausdruck %s für mimeMediaType kann nicht kompiliert werden."
 
 #, c-format
 msgid "Unable to compile naturalLanguage regular expression: %s."
 msgstr ""
+"Der natualLanguage regulärer Ausdruck kann nicht kompiliert werden: %s."
 
 msgid "Unable to configure printer options."
 msgstr "Druckeroptionen können nicht konfiguriert werden."
@@ -4399,6 +5178,8 @@ msgstr "Verbindungsaufbau zum Host fehlgeschlagen."
 
 msgid "Unable to contact printer, queuing on next printer in class."
 msgstr ""
+"Drucker kann nicht kontaktiert werden, stelle in die nächste Warteschlange "
+"der Klasse ein"
 
 #, c-format
 msgid "Unable to copy 64-bit CUPS printer driver files (%d)."
@@ -4414,28 +5195,31 @@ msgstr ""
 
 #, c-format
 msgid "Unable to copy PPD file - %s"
-msgstr ""
+msgstr "PPD Datei %s kann nicht kopiert werden"
 
 msgid "Unable to copy PPD file."
-msgstr ""
+msgstr "PPD Datei kann nicht kopiert werden"
 
 #, c-format
 msgid "Unable to copy Windows 2000 printer driver files (%d)."
 msgstr ""
+"Druckertrieberdateien für Windows 2000 können nicht kopiert werden (%d)."
 
 #, c-format
 msgid "Unable to copy Windows 9x printer driver files (%d)."
-msgstr ""
+msgstr "Druckertrieberdateien für Windows 9x können nicht kopiert werden (%d)."
 
-#, c-format
-msgid "Unable to copy interface script - %s"
+msgid "Unable to create credentials from array."
 msgstr ""
 
 msgid "Unable to create printer-uri"
+msgstr "Drucker-URI kann nicht erzeugt werden"
+
+msgid "Unable to create printer."
 msgstr ""
 
 msgid "Unable to create server credentials."
-msgstr ""
+msgstr "Die Server-Anmeldedaten können nicht erzeugt werden."
 
 msgid "Unable to create temporary file"
 msgstr "Temporäre Datei konntenicht erstellt werden :"
@@ -4450,49 +5234,56 @@ msgid "Unable to do maintenance command"
 msgstr "Wartungsbefehl konnte nicht ausgeführt werden :"
 
 msgid "Unable to edit cupsd.conf files larger than 1MB"
-msgstr ""
+msgstr "cupsd.conf Dateien grösser als 1MB können nicht bearbeitet werden"
 
 msgid ""
 "Unable to establish a secure connection to host (certificate chain invalid)."
-msgstr ""
+msgstr "Sichere Verbindung zu Host nicht möglich (Zertifikatskette ungültig)."
 
 msgid ""
 "Unable to establish a secure connection to host (certificate not yet valid)."
 msgstr ""
+"Sichere Verbindung zu Host nicht möglich (Zertifikatskette noch nicht "
+"gültig)."
 
 msgid "Unable to establish a secure connection to host (expired certificate)."
-msgstr ""
+msgstr "Sichere Verbindung zu Host nicht möglich (Zertifikats abgelaufen)."
 
 msgid "Unable to establish a secure connection to host (host name mismatch)."
-msgstr ""
+msgstr "Sichere Verbindung zu Host nicht möglich (Hostname passt nicht)."
 
 msgid ""
 "Unable to establish a secure connection to host (peer dropped connection "
 "before responding)."
 msgstr ""
+"Sichere Verbindung zu Host nicht möglich (Gegenstelle hat die Verbindung vor "
+"einer Antwort beendet)."
 
 msgid ""
 "Unable to establish a secure connection to host (self-signed certificate)."
 msgstr ""
+"Sichere Verbindung zu Host nicht möglich (Selbstsigniertes Zertifikat)."
 
 msgid ""
 "Unable to establish a secure connection to host (untrusted certificate)."
 msgstr ""
+"Sichere Verbindung zu Host nicht möglich (Nicht vertrauenswürdiges "
+"Zertifikat)."
 
 msgid "Unable to establish a secure connection to host."
-msgstr ""
+msgstr "Sichere Verbindung zu Host nicht möglich."
 
 msgid "Unable to find destination for job"
-msgstr ""
+msgstr "Das Ziel für den Auftrag kann nicht gefunden werden"
 
 msgid "Unable to find printer."
-msgstr ""
+msgstr "Der Drucker kann nicht gefunden werden"
 
 msgid "Unable to find server credentials."
 msgstr "Die Server-Zugangsdaten konnten nicht gefunden werden."
 
 msgid "Unable to get backend exit status."
-msgstr ""
+msgstr "Der Backend-Rückgabewert kann nicht ermittelt werden."
 
 msgid "Unable to get class list"
 msgstr "Klassenliste konnte nicht ermittelt werden:"
@@ -4524,14 +5315,14 @@ msgid "Unable to install Windows 9x printer driver files (%d)."
 msgstr ""
 
 msgid "Unable to load help index."
-msgstr ""
+msgstr "Hilfeindex kann nicht geladen werden."
 
 #, c-format
 msgid "Unable to locate printer \"%s\"."
-msgstr ""
+msgstr "Der Drucker »%s« kann nicht lokalisiert werden"
 
 msgid "Unable to locate printer."
-msgstr ""
+msgstr "Der Drucker kann nicht lokalisiet werden"
 
 msgid "Unable to modify class"
 msgstr "Klasse konnte nicht verändert werden:"
@@ -4556,7 +5347,7 @@ msgstr "Die Gerätedatei kann nicht geöffnet werden"
 
 #, c-format
 msgid "Unable to open document #%d in job #%d."
-msgstr ""
+msgstr "Das Dokument #%d in Auftrag #%d kann nicht geöffnet werden."
 
 msgid "Unable to open help file."
 msgstr "Die Hilfe-Datei kann nicht geöffnet werden"
@@ -4577,17 +5368,17 @@ msgid "Unable to rename job document file."
 msgstr ""
 
 msgid "Unable to resolve printer-uri."
-msgstr ""
+msgstr "Drucker-URI kann nicht aufgelöst werden."
 
 #, c-format
 msgid "Unable to run \"%s\": %s"
-msgstr ""
+msgstr "Ausführung von »%s« nicht möglich: %s"
 
 msgid "Unable to see in file"
 msgstr ""
 
 msgid "Unable to send command to printer driver"
-msgstr ""
+msgstr "Befehl kann nicht zum Drucker gesendet werden"
 
 msgid "Unable to send data to printer."
 msgstr "Kann Daten nicht zum Drucker senden."
@@ -4616,7 +5407,7 @@ msgstr "Kann Druckdaten nicht schreiben"
 
 #, c-format
 msgid "Unable to write uncompressed print data: %s"
-msgstr ""
+msgstr "Unkomprimierte Druckdaten %s können nicht geschrieben werden."
 
 msgid "Unauthorized"
 msgstr "Nicht berechtigt"
@@ -4629,89 +5420,92 @@ msgstr "Unbekannt"
 
 #, c-format
 msgid "Unknown choice \"%s\" for option \"%s\"."
-msgstr ""
+msgstr "Unbekannte Auswahl \"%s\" für Option »%sx."
 
 #, c-format
 msgid "Unknown encryption option value: \"%s\"."
-msgstr ""
+msgstr "Unbekannte Verschlüsselungsoption: »%s«."
 
 #, c-format
 msgid "Unknown file order: \"%s\"."
-msgstr ""
+msgstr "Unbekannte Dateireihenfolge: »%s«."
 
 #, c-format
 msgid "Unknown format character: \"%c\"."
+msgstr "Unbekanntes Formatzeichen: »%c«."
+
+msgid "Unknown hash algorithm."
 msgstr ""
 
 msgid "Unknown media size name."
-msgstr ""
+msgstr "Unbekannter Name der Mediengrösse."
 
 #, c-format
 msgid "Unknown option \"%s\" with value \"%s\"."
-msgstr ""
+msgstr "Unbekannte Option »%s« mit Wert »%s«."
 
 #, c-format
 msgid "Unknown option \"%s\"."
-msgstr "Unbekannte Option \"%s\""
+msgstr "Unbekannte Option »%s«"
 
 #, c-format
 msgid "Unknown print mode: \"%s\"."
-msgstr "Unbekannter Druckmodus: \"%s\"."
+msgstr "Unbekannter Druckmodus: »%s«."
 
 #, c-format
 msgid "Unknown printer-error-policy \"%s\"."
-msgstr "Unbekannte printer-error-policy „%s“."
+msgstr "Unbekannte printer-error-policy »%s«."
 
 #, c-format
 msgid "Unknown printer-op-policy \"%s\"."
-msgstr "Unbekannte printer-op-policy „%s“."
+msgstr "Unbekannte printer-op-policy »%s«."
 
 msgid "Unknown request method."
-msgstr ""
+msgstr "Unbekannte Anfragemethode."
 
 msgid "Unknown request version."
-msgstr ""
+msgstr "Unbekannte Anfrageversion"
 
 msgid "Unknown scheme in URI"
 msgstr ""
 
 msgid "Unknown service name."
-msgstr ""
+msgstr "Unbekannter Dienstname."
 
 #, c-format
 msgid "Unknown version option value: \"%s\"."
-msgstr "Unbekannter Versionsoption: \"%s\"."
+msgstr "Unbekannter Versionsoption: »%s«."
 
 #, c-format
 msgid "Unsupported 'compression' value \"%s\"."
-msgstr "Nicht unterstützter Kompressionswert \"%s\"."
+msgstr "Nicht unterstützter Kompressionswert »%s«."
 
 #, c-format
 msgid "Unsupported 'document-format' value \"%s\"."
-msgstr ""
+msgstr "Nicht unterstützter Wert des 'document-format' »%s«."
 
 msgid "Unsupported 'job-name' value."
 msgstr "Nicht unterstützter 'job-name' Wert."
 
 #, c-format
 msgid "Unsupported character set \"%s\"."
-msgstr ""
+msgstr "Nicht unterstützter Zeichensatz »%sx."
 
 #, c-format
 msgid "Unsupported compression \"%s\"."
-msgstr ""
+msgstr "Nicht unterstützte Kompression »%s«."
 
 #, c-format
 msgid "Unsupported document-format \"%s\"."
-msgstr ""
+msgstr "Nicht unterstütztes Dokumentenformat »%s«."
 
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
-msgstr ""
+msgstr "Nicht unterstütztes Dokumentenformat »%s/%s«."
 
 #, c-format
 msgid "Unsupported format \"%s\"."
-msgstr ""
+msgstr "Nicht unterstütztes Format »%s«."
 
 msgid "Unsupported margins."
 msgstr "Nicht unterstützte Ränder."
@@ -4732,7 +5526,7 @@ msgid "Unsupported page-border value %s, using page-border=none."
 msgstr ""
 
 msgid "Unsupported raster data."
-msgstr ""
+msgstr "Nicht unterstützte Rasterdaten."
 
 msgid "Unsupported value type"
 msgstr "Wertetyp nicht unterstützt"
@@ -4750,10 +5544,20 @@ msgid ""
 "                       [-P ppd-file] [-o name=value]\n"
 "                       [-u allow:user,user] [-u deny:user,user]"
 msgstr ""
+"Verwendung:\n"
+"\n"
+"    lpadmin [-h Server] -d Druckziel\n"
+"    lpadmin [-h Server] -x Druckziel\n"
+"    lpadmin [-h Server] -p Drucker [-c add-class] [-i Schnittstelle] [-m "
+"Modell]\n"
+"                       [-r remove-class] [-v Gerät] [-D Beschreibung]\n"
+"                       [-P ppd-Datei] [-o Name=Wert]\n"
+"                       [-u allow:Benutzer,Benutzer] [-u deny:Benutzer,"
+"Benutzer]"
 
 #, c-format
 msgid "Usage: %s job-id user title copies options [file]"
-msgstr ""
+msgstr "Verwendung: %s Auftrags-ID Benutzer Titel Kopien Optionen [Datei]"
 
 msgid "Usage: cupsaddsmb [options] printer1 ... printerN"
 msgstr ""
@@ -4762,24 +5566,19 @@ msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]"
 msgstr ""
 
 msgid "Usage: cupsd [options]"
-msgstr ""
+msgstr "Verwendung: cupsd [Optionen]"
 
 msgid "Usage: cupsfilter [ options ] [ -- ] filename"
-msgstr ""
+msgstr "Verwendung: cupsfilter [ Optionen ] [ -- ] Dateiname"
 
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
-msgstr ""
+msgstr "Verwendung: cupstestdsc [Optionen] Dateiname.ps [... Dateiname.ps]"
 
 msgid ""
 "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
 msgstr ""
-
-msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
+"Verwendung: cupstestppd [Optionen] Dateiname1.ppd[.gz] [... DateinameN.ppd[."
+"gz]]"
 
 msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
@@ -4792,7 +5591,7 @@ msgid "Usage: ipptool [options] URI filename [ ... filenameN ]"
 msgstr ""
 
 msgid "Usage: lpmove job/src dest"
-msgstr ""
+msgstr "Verwendung: lpmove Auftragsquelle Auftragsziel"
 
 msgid ""
 "Usage: lpoptions [-h server] [-E] -d printer\n"
@@ -4800,13 +5599,19 @@ msgid ""
 "       lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
 "       lpoptions [-h server] [-E] -x printer"
 msgstr ""
+"Verwendung: lpoptions [-h Server] [-E] -d Drucker\n"
+"            lpoptions [-h Server] [-E] [-p Drucker] -l\n"
+"            lpoptions [-h Server] [-E] -p Drucker -o option[=Wert] ...\n"
+"            lpoptions [-h Server] [-E] -x Drucker"
 
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr ""
+"Verwendung: lpq [-P Ziel] [-U Benutzername] [-h Hostname[:port]] [-l] "
+"[+Interval]"
 
 msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]"
-msgstr ""
+msgstr "Verwendung: ppdc [Optionen] Dateiname.drv [ ... DateinameN.drv ]"
 
 msgid "Usage: ppdhtml [options] filename.drv >filename.html"
 msgstr ""
@@ -4820,9 +5625,11 @@ msgstr ""
 msgid ""
 "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]"
 msgstr ""
+"Verwendung: ppdpo [Optionen] -o Dateiname.po Dateiname.drv [ ... DateinameN."
+"drv ]"
 
 msgid "Usage: snmp [host-or-ip-address]"
-msgstr ""
+msgstr "Verwendung: snmp [Host-oder-IP-Adresse]"
 
 msgid "Value uses indefinite length"
 msgstr "Wert hat unbestimmte Länge"
@@ -4830,6 +5637,9 @@ msgstr "Wert hat unbestimmte Länge"
 msgid "VarBind uses indefinite length"
 msgstr "VarBind hat unbestimmte Länge"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "Version hat unbestimmte Länge"
 
@@ -4845,9 +5655,18 @@ msgstr "Warte auf Abschluss."
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr "Warnung, keine Win2k Treiber installiert."
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr "Web-Schnittstelle ist abgeschaltet"
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "Ja"
 
@@ -4859,6 +5678,9 @@ msgstr ""
 "Auf diese Seite greifen Sie zu über die URL <A HREF=\"https://%s:%d%s"
 "\">https://%s:%d%s</A>."
 
+msgid "Z Fold"
+msgstr ""
+
 msgid "ZPL Label Printer"
 msgstr "ZPL Etikettendrucker"
 
@@ -4882,31 +5704,32 @@ msgstr "„cups-driverd“ konnte nicht ausgeführt werden."
 
 #, c-format
 msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s"
-msgstr ""
+msgstr "cupsaddsmb: Keine PPD Datei für Drucker »%s« - %s"
 
 msgid "cupsctl: Cannot set Listen or Port directly."
-msgstr ""
+msgstr "cupsctl: Kann nicht direkt auf dem Port hören."
 
 #, c-format
 msgid "cupsctl: Unable to connect to server: %s"
-msgstr ""
+msgstr "cupsctl: Kann nicht mit dem Server %s verbinden"
 
 #, c-format
 msgid "cupsctl: Unknown option \"%s\""
-msgstr ""
+msgstr "cupsctl: Unbekannte Option »%s«"
 
 #, c-format
 msgid "cupsctl: Unknown option \"-%c\""
-msgstr ""
+msgstr "cupsctl: Unbekannte Option \"-%c\""
 
 msgid "cupsd: Expected config filename after \"-c\" option."
-msgstr ""
+msgstr "cupsd: Konfigurations-Dateiname nach der »-c« Option erwartet."
 
 msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
-msgstr ""
+msgstr "cupsd: Dateiname cups-files.conf nach der »-s« Option erwartet."
 
 msgid "cupsd: On-demand support not compiled in, running in normal mode."
 msgstr ""
+"cupsd: Start auf Anforderung nicht einkompiliert, starte im normalen Modus."
 
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr ""
@@ -4927,32 +5750,32 @@ msgstr ""
 
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
-msgstr ""
+msgstr "cupsfilter: ungültige Dokumentennummer %d."
 
 #, c-format
 msgid "cupsfilter: Invalid job ID %d."
-msgstr ""
+msgstr "cupsfilter: ungültige Auftrags-ID %d."
 
 msgid "cupsfilter: Only one filename can be specified."
-msgstr ""
+msgstr "cupsfilter: Es kann nur ein Dateiname angegeben werden."
 
 #, c-format
 msgid "cupsfilter: Unable to get job file - %s"
-msgstr ""
+msgstr "cupsfilter: Auftragsdatei nicht verfügbar - %s"
 
 msgid "cupstestppd: The -q option is incompatible with the -v option."
-msgstr ""
+msgstr "cupstestppd: Die -q Option ist nicht vereinbar mit der -v Option."
 
 msgid "cupstestppd: The -v option is incompatible with the -q option."
-msgstr ""
+msgstr "cupstestppd: Die -v Option ist nicht vereinbar mit der -q Option."
 
 #, c-format
 msgid "device for %s/%s: %s"
-msgstr ""
+msgstr "Gerät für %s/%s: %s"
 
 #, c-format
 msgid "device for %s: %s"
-msgstr ""
+msgstr "Gerät für %s: %s"
 
 msgid "error-index uses indefinite length"
 msgstr "Fehlerindex hat unbestimmte Länge"
@@ -5083,65 +5906,63 @@ msgstr ""
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: Klassenname darf nur druckbare Zeichen enthalten."
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr "lpadmin: Nach der \"-P\" Option PPD erwartet."
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
+msgstr ""
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr ""
 "lpadmin: Nach der \"-u\" Option wird eine allow/deny:userlist erwartet."
 
 msgid "lpadmin: Expected class after \"-r\" option."
-msgstr ""
+msgstr "lpadmin: Klasse nach der \"-r\" Option erwartet."
 
 msgid "lpadmin: Expected class name after \"-c\" option."
-msgstr ""
+msgstr "lpadmin: Klasse nach der \"-c\" Option erwartet."
 
 msgid "lpadmin: Expected description after \"-D\" option."
-msgstr ""
+msgstr "lpadmin: BEschreibung nach der \"-D\" Option erwartet."
 
 msgid "lpadmin: Expected device URI after \"-v\" option."
-msgstr ""
+msgstr "lpadmin: Geräte-URI nach der \"-v\" Option erwartet."
 
 msgid "lpadmin: Expected file type(s) after \"-I\" option."
-msgstr ""
+msgstr "lpadmin: Dateitype nach der \"-I\" Option erwartet."
 
 msgid "lpadmin: Expected hostname after \"-h\" option."
-msgstr ""
-
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr ""
+msgstr "lpadmin: Hostname nach der \"-h\" Option erwartet."
 
 msgid "lpadmin: Expected location after \"-L\" option."
-msgstr ""
+msgstr "lpadmin: Ort nach der \"-L\" Option erwartet."
 
 msgid "lpadmin: Expected model after \"-m\" option."
-msgstr ""
+msgstr "lpadmin: Modellangabe nach der \"-m\" Option erwartet."
 
 msgid "lpadmin: Expected name after \"-R\" option."
-msgstr ""
+msgstr "lpadmin: Name nach der \"-R\" Option erwartet."
 
 msgid "lpadmin: Expected name=value after \"-o\" option."
-msgstr ""
+msgstr "lpadmin: Name=Wert nach der \"-o\" Option erwartet."
 
 msgid "lpadmin: Expected printer after \"-p\" option."
-msgstr ""
+msgstr "lpadmin: Drucker nach der \"-p\" Option erwartet."
 
 msgid "lpadmin: Expected printer name after \"-d\" option."
-msgstr ""
+msgstr "lpadmin: Druckername nach der \"-d\" Option erwartet."
 
 msgid "lpadmin: Expected printer or class after \"-x\" option."
-msgstr ""
+msgstr "lpadmin: Drucker oder Klasse nach der \"-x\" Option erwartet."
 
 msgid "lpadmin: No member names were seen."
-msgstr ""
+msgstr "lpadmin: Keine Mitgleidernamen erkennbar."
 
 #, c-format
 msgid "lpadmin: Printer %s is already a member of class %s."
-msgstr ""
+msgstr "lpadmin: Drucker %s ist bereits Mitglied der Klasse %s."
 
 #, c-format
 msgid "lpadmin: Printer %s is not a member of class %s."
-msgstr ""
+msgstr "lpadmin: Drucker %s ist kein Mitglied der Klasse %s."
 
 msgid "lpadmin: Printer name can only contain printable characters."
 msgstr "lpadmin: Druckername darf nur druckbare Zeichen enthalten."
@@ -5177,15 +5998,19 @@ msgid ""
 "lpadmin: Unable to remove a printer from the class:\n"
 "         You must specify a printer name first."
 msgstr ""
+"lpadmin: Entfernen des Drucker aus der Klasse nicht möglich:\n"
+"         Sie müssen zuerst einen Druckernamen angeben."
 
 msgid ""
 "lpadmin: Unable to set the printer options:\n"
 "         You must specify a printer name first."
 msgstr ""
+"lpadmin: Festlegen der Druckeroptionen nicht möglich:\n"
+"         Sie müssen zuerst einen Druckernamen angeben."
 
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"."
-msgstr ""
+msgstr "lpadmin: Unbekannte Erlaubnis/Ablehnungs-Option »%s«."
 
 #, c-format
 msgid "lpadmin: Unknown argument \"%s\"."
@@ -5193,7 +6018,7 @@ msgstr "lpadmin: unbekanntes Argument \"%s\"."
 
 #, c-format
 msgid "lpadmin: Unknown option \"%c\"."
-msgstr ""
+msgstr "lpadmin: Unbekannte Option »%c«."
 
 msgid "lpadmin: Warning - content type list ignored."
 msgstr ""
@@ -5223,46 +6048,30 @@ msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr ""
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr ""
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
-msgstr ""
+msgstr "lpmove: Verbindung zum Server »%s« nicht möglich"
 
 #, c-format
 msgid "lpmove: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr ""
+msgstr "lpmove: Unbekanntes Argument »%s«."
 
 msgid "lpoptions: No printers."
-msgstr ""
+msgstr "lpoptions: Keine Drucker."
 
 #, c-format
 msgid "lpoptions: Unable to add printer or instance: %s"
-msgstr ""
+msgstr "lpoptions: Hinzufügen von Drucker oder Instanz nicht möglich: %s"
 
 #, c-format
 msgid "lpoptions: Unable to get PPD file for %s: %s"
-msgstr ""
+msgstr "lpoptions: Keine PPD Datei für %s: %s verfügbar"
 
 #, c-format
 msgid "lpoptions: Unable to open PPD file for %s."
-msgstr ""
+msgstr "lpoptions: Keine PPD Datei für %s verfügbar."
 
 msgid "lpoptions: Unknown printer or class."
-msgstr ""
+msgstr "lpoptions: Unbekannter Drucker oder Klasse."
 
 #, c-format
 msgid ""
@@ -5272,13 +6081,13 @@ msgstr ""
 
 #, c-format
 msgid "members of class %s:"
-msgstr ""
+msgstr "Mitglieder der Klasse %s:"
 
 msgid "no entries"
-msgstr ""
+msgstr "Keine Einträge"
 
 msgid "no system default destination"
-msgstr ""
+msgstr "Keine systemvoreingestellten Ziele"
 
 msgid "notify-events not specified."
 msgstr ""
@@ -5308,7 +6117,7 @@ msgstr ""
 
 #, c-format
 msgid "ppdc: Bad font attribute: %s"
-msgstr ""
+msgstr "ppdc: Ungültiges Schriftattribut: %s"
 
 #, c-format
 msgid "ppdc: Bad resolution name \"%s\" on line %d of %s."
@@ -5658,7 +6467,7 @@ msgstr ""
 
 #, c-format
 msgid "ppdc: Writing %s."
-msgstr ""
+msgstr "ppdc: Schreibe: %s."
 
 #, c-format
 msgid "ppdc: Writing PPD files to directory \"%s\"."
@@ -5678,61 +6487,61 @@ msgstr ""
 
 #, c-format
 msgid "printer %s disabled since %s -"
-msgstr ""
+msgstr "Drucker %s ist deaktiviert seit %s"
 
 #, c-format
 msgid "printer %s is idle.  enabled since %s"
-msgstr ""
+msgstr "Drucker %s ist im Leerlauf. Aktiviert seit %s"
 
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
-msgstr ""
+msgstr "Drucker %s druckt jetzt %s-%d.  Aktiviert seit %s"
 
 #, c-format
 msgid "printer %s/%s disabled since %s -"
-msgstr ""
+msgstr "Drucker %s/%s deaktiviert seit %s"
 
 #, c-format
 msgid "printer %s/%s is idle.  enabled since %s"
-msgstr ""
+msgstr "Drucker %s/%s ist im Leerlauf. Aktiviert seit %s"
 
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
-msgstr ""
+msgstr "Drucker %s/%s druckt jetzt %s-%d.  Aktiviert seit %s"
 
 msgid "processing"
 msgstr "in Verarbeitung"
 
 #, c-format
 msgid "request id is %s-%d (%d file(s))"
-msgstr ""
+msgstr "Anfrage-ID ist%s-%d (%d Datei(en))"
 
 msgid "request-id uses indefinite length"
 msgstr "Anfrage-ID hat unbestimmte Länge"
 
 msgid "scheduler is not running"
-msgstr ""
+msgstr "Zeitplandienst läuft nicht"
 
 msgid "scheduler is running"
-msgstr ""
+msgstr "Zeitplandienst läuft"
 
 #, c-format
 msgid "stat of %s failed: %s"
 msgstr "Status von %s fehlgeschlagen: %s"
 
 msgid "status\t\tShow status of daemon and queue."
-msgstr ""
+msgstr "status\t\tStatus von Dienst und Warteschlange anzeigen."
 
 msgid "stopped"
 msgstr "angehalten"
 
 #, c-format
 msgid "system default destination: %s"
-msgstr ""
+msgstr "systemvoreingestelltes Ziel: %s"
 
 #, c-format
 msgid "system default destination: %s/%s"
-msgstr ""
+msgstr "systemvoreingestelltes Ziel: %s/%s"
 
 msgid "unknown"
 msgstr "Unbekannt"
@@ -5743,6 +6552,19 @@ msgstr "Ohne Titel"
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings hat unbestimmte Länge"
 
+#~ msgid "\tInterface: %s/interfaces/%s"
+#~ msgstr "\tSchnittstelle: %s/interfaces/%s"
+
+#~ msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+#~ msgstr "  --lf                    Zeilenenden mit LF (UNIX/Linux/OS X)"
+
+#~ msgid "  -a                      Browse for all services."
+#~ msgstr "  -a                      Browse für alle Dienste."
+
+#~ msgid "  -d domain               Browse/resolve in specified domain."
+#~ msgstr ""
+#~ "  -d domain               Browse/löse auf in der angegebenen Domäne."
+
 #~ msgid "720dpi"
 #~ msgstr "720 dpi"
 
@@ -5755,8 +6577,11 @@ msgstr "variable-bindings hat unbestimmte Länge"
 #~ msgid "Enter password:"
 #~ msgstr "Neues Passwort eingeben :"
 
-#~ msgid "Looking for printer."
-#~ msgstr "Suche nach Drucker."
+#~ msgid "Envelope #10 "
+#~ msgstr "US Umschlag 10"
+
+#~ msgid "File Folder "
+#~ msgstr "Datei-Verzeichnis "
 
 #~ msgid "New Stylus Color Series"
 #~ msgstr "Neue Stylus Color Serie"
@@ -5764,6 +6589,9 @@ msgstr "variable-bindings hat unbestimmte Länge"
 #~ msgid "New Stylus Photo Series"
 #~ msgstr "Neue Stylus Photo Serie"
 
+#~ msgid "Postcard Double "
+#~ msgstr "Doppelpostkarte"
+
 #~ msgid "Purge Jobs"
 #~ msgstr "Aufträge löschen"
 
@@ -5772,3 +6600,24 @@ msgstr "variable-bindings hat unbestimmte Länge"
 
 #~ msgid "Stylus Photo Series"
 #~ msgstr "Stylus Photo Serie"
+
+#~ msgid "Unable to copy interface script - %s"
+#~ msgstr "Schnittstellenskript kann nicht kopiert werden - %s."
+
+#~ msgid "lpadmin: Expected PPD after \"-P\" option."
+#~ msgstr "lpadmin: Nach der \"-P\" Option PPD erwartet."
+
+#~ msgid "lpadmin: Expected interface after \"-i\" option."
+#~ msgstr "lpadmin: Schnittstelle nach der \"-i\" Option erwartet."
+
+#~ msgid "lpinfo: Unknown argument \"%s\"."
+#~ msgstr "lpinfo: Unbekanntes Argument »%s«."
+
+#~ msgid "lpinfo: Unknown option \"%c\"."
+#~ msgstr "lpinfo: Unbekannte Option »%c«."
+
+#~ msgid "lpinfo: Unknown option \"%s\"."
+#~ msgstr "lpinfo: Unbekannte Option »%s«."
+
+#~ msgid "lpmove: Unknown option \"%c\"."
+#~ msgstr "lpinfo: Unbekannte Option »%c«."
index fcef34c..44ffaf2 100644 (file)
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: CUPS 1.6\n"
+"Project-Id-Version: CUPS 2.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
-"PO-Revision-Date: 2014-09-23 23:45+0100\n"
+"POT-Creation-Date: 2016-08-30 16:00-0400\n"
+"PO-Revision-Date: 2016-06-26 21:17+0100\n"
 "Last-Translator: Juan Pablo González Riopedre <jpgriopedre@yahoo.es>\n"
 "Language-Team: Spanish\n"
 "Language: Spanish\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Poedit 1.5.4\n"
 
 msgid "\t\t(all)"
 msgstr "\t\t(todos)"
@@ -85,10 +86,6 @@ msgid "\tInterface: %s.ppd"
 msgstr "\tInterfaz: %s.ppd"
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr "\tInterfaz: %s/interfaces/%s"
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tInterfaz: %s/ppd/%s.ppd"
 
@@ -261,7 +258,7 @@ msgid ""
 msgstr ""
 "        ADVERTENCIA    La clave de opción Duplex %s puede que no funcione "
 "como se espera y debería llamarse Duplex.\n"
-"                REF: Página 122, sección 5.17"
+"                REF: Página 122, sección 5.17."
 
 msgid "        WARN    File contains a mix of CR, LF, and CR LF line endings."
 msgstr ""
@@ -284,7 +281,7 @@ msgid ""
 "        WARN    Manufacturer required by PPD 4.3 spec.\n"
 "                REF: Pages 58-59, section 5.3."
 msgstr ""
-"        ADVERTENCIA    Se necesita Manufacturer por especificación de PPD "
+"        ADVERTENCIA    Se necesita fabricante por especificación de PPD "
 "4.3.\n"
 "                REF: Páginas 58-59, sección 5.3."
 
@@ -356,7 +353,7 @@ msgid ""
 "      %s  \"%s %s\" conflicts with \"%s %s\"\n"
 "                (constraint=\"%s %s %s %s\")."
 msgstr ""
-"      %s  \"%s %s\" está en conflictocon \"%s %s\"\n"
+"      %s  \"%s %s\" está en conflicto con \"%s %s\"\n"
 "                (restricción=\"%s %s %s %s\")."
 
 #, c-format
@@ -372,8 +369,8 @@ msgid ""
 "      %s  Bad %s choice %s.\n"
 "                REF: Page 122, section 5.17"
 msgstr ""
-"      %s  Preferencia %s incorrecta %s.\n"
-"                REF: Página 122, sección 5.17"
+"      %s  Incorrecto %s preferencia %s.\n"
+"                REF: Página 122, sección 5.17."
 
 #, c-format
 msgid "      %s  Bad UTF-8 \"%s\" translation string for option %s, choice %s."
@@ -488,8 +485,8 @@ msgid ""
 "      %s  REQUIRED %s does not define choice None.\n"
 "                REF: Page 122, section 5.17"
 msgstr ""
-"      %s  NECESARIA %s no define la opción None.\n"
-"                REF: Página 122, sección 5.17"
+"      %s  NECESARIO %s no define la preferencia None.\n"
+"                REF: Página 122, sección 5.17."
 
 #, c-format
 msgid "      %s  Size \"%s\" defined for %s but not for %s."
@@ -526,8 +523,8 @@ msgid ""
 "      **FAIL**  %s must be 1284DeviceID\n"
 "                REF: Page 72, section 5.5"
 msgstr ""
-"      **FALLO**  %s debe ser 1284DeviceID\n"
-"                REF: Página 72, sección 5.5"
+"      **FALLO**  %s debería ser 1284DeviceID.\n"
+"                REF: Página 72, sección 5.5."
 
 #, c-format
 msgid ""
@@ -628,8 +625,8 @@ msgid ""
 "      **FAIL**  Bad option %s choice %s\n"
 "                REF: Page 84, section 5.9"
 msgstr ""
-"      **FALLO**  Opción %s, preferencia %s incorrecta\n"
-"                REF: Página 84, sección 5.9"
+"      **FALLO**  Opción incorrecta %s preferencia %s\n"
+"                REF: Página 84, sección 5.9."
 
 #, c-format
 msgid "      **FAIL**  Default option code cannot be interpreted: %s"
@@ -681,35 +678,35 @@ msgid ""
 "      **FAIL**  REQUIRED Default%s\n"
 "                REF: Page 40, section 4.5."
 msgstr ""
-"      **FALLO**  SE NECESITA Default%s\n"
+"      **FALLO**  NECESARIO Default%s\n"
 "                REF: Página 40, sección 4.5."
 
 msgid ""
 "      **FAIL**  REQUIRED DefaultImageableArea\n"
 "                REF: Page 102, section 5.15."
 msgstr ""
-"      **FALLO**  SE NECESITA DefaultImageableArea\n"
+"      **FALLO**  NECESARIO DefaultImageableArea\n"
 "                REF: Página 102, sección 5.15."
 
 msgid ""
 "      **FAIL**  REQUIRED DefaultPaperDimension\n"
 "                REF: Page 103, section 5.15."
 msgstr ""
-"      **FALLO**  SE NECESITA DefaultPaperDimension\n"
+"      **FALLO**  NECESARIO DefaultPaperDimension\n"
 "                REF: Página 103, sección 5.15."
 
 msgid ""
 "      **FAIL**  REQUIRED FileVersion\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA FileVersion\n"
+"      **FALLO**  NECESARIO FileVersion\n"
 "                REF: Página 56, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED FormatVersion\n"
 "                REF: Page 56, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA FormatVersion\n"
+"      **FALLO**  NECESARIO FormatVersion\n"
 "                REF: Página 56, sección 5.3."
 
 #, c-format
@@ -718,7 +715,7 @@ msgid ""
 "                REF: Page 41, section 5.\n"
 "                REF: Page 102, section 5.15."
 msgstr ""
-"      **FALLO**  SE NECESITA ImageableArea para PageSize %s\n"
+"      **FALLO**  NECESARIO ImageableArea para PageSize %s\n"
 "                REF: Página 41, sección 5.\n"
 "                REF: Página 102, sección 5.15."
 
@@ -726,56 +723,56 @@ msgid ""
 "      **FAIL**  REQUIRED LanguageEncoding\n"
 "                REF: Pages 56-57, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA LanguageEncoding\n"
+"      **FALLO**  NECESARIO LanguageEncoding\n"
 "                REF: Páginas 56-57, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED LanguageVersion\n"
 "                REF: Pages 57-58, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA LanguageVersion\n"
+"      **FALLO**  NECESARIO LanguageVersion\n"
 "                REF: Páginas 57-58, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED Manufacturer\n"
 "                REF: Pages 58-59, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA Manufacturer\n"
+"      **FALLO**  NECESARIO Manufacturer\n"
 "                REF: Páginas 58-59, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED ModelName\n"
 "                REF: Pages 59-60, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA ModelName\n"
+"      **FALLO**  NECESARIO ModelName\n"
 "                REF: Páginas 59-60, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED NickName\n"
 "                REF: Page 60, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA NickName\n"
+"      **FALLO**  NECESARIO NickName\n"
 "                REF: Página 60, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED PCFileName\n"
 "                REF: Pages 61-62, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA PCFileName\n"
+"      **FALLO**  NECESARIO PCFileName\n"
 "                REF: Páginas 61-62, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED PSVersion\n"
 "                REF: Pages 62-64, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA PSVersion\n"
+"      **FALLO**  NECESARIO PSVersion\n"
 "                REF: Páginas 62-64, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED PageRegion\n"
 "                REF: Page 100, section 5.14."
 msgstr ""
-"      **FALLO**  SE NECESITA PageRegion\n"
+"      **FALLO**  NECESARIO PageRegion\n"
 "                REF: Página 100, sección 5.14."
 
 msgid ""
@@ -783,7 +780,7 @@ msgid ""
 "                REF: Page 41, section 5.\n"
 "                REF: Page 99, section 5.14."
 msgstr ""
-"      **FALLO**  SE NECESITA PageSize\n"
+"      **FALLO**  NECESARIO PageSize\n"
 "                REF: Página 41, sección 5.\n"
 "                REF: Página 99, sección 5.14."
 
@@ -791,7 +788,7 @@ msgid ""
 "      **FAIL**  REQUIRED PageSize\n"
 "                REF: Pages 99-100, section 5.14."
 msgstr ""
-"      **FALLO**  SE NECESITA PageSize\n"
+"      **FALLO**  NECESARIO PageSize\n"
 "                REF: Páginas 99-100, sección 5.14."
 
 #, c-format
@@ -800,7 +797,7 @@ msgid ""
 "                REF: Page 41, section 5.\n"
 "                REF: Page 103, section 5.15."
 msgstr ""
-"      **FALLO**  SE NECESITA PaperDimension para PageSize %s\n"
+"      **FALLO**  NECESARIO PaperDimension para PageSize %s\n"
 "                REF: Página 41, sección 5.\n"
 "                REF: Página 103, sección 5.15."
 
@@ -808,15 +805,15 @@ msgid ""
 "      **FAIL**  REQUIRED Product\n"
 "                REF: Page 62, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA Product\n"
+"      **FALLO**  NECESARIO Product\n"
 "                REF: Página 62, sección 5.3."
 
 msgid ""
 "      **FAIL**  REQUIRED ShortNickName\n"
 "                REF: Page 64-65, section 5.3."
 msgstr ""
-"      **FALLO**  SE NECESITA ShortNickName\n"
-"                REF: Página 64-65, sección 5.3."
+"      **FALLO**  NECESARIO ShortNickName\n"
+"                REF: Páginas 64-65, sección 5.3."
 
 #, c-format
 msgid "      **FAIL**  Unable to open PPD file - %s on line %d."
@@ -835,7 +832,7 @@ msgid ""
 "    Bad %%%%BoundingBox: on line %d.\n"
 "        REF: Page 39, %%%%BoundingBox:"
 msgstr ""
-"    %%%%BoundingBox: incorrecto en línea %d.\n"
+"    %%%%BoundingBox incorrecto: en línea %d.\n"
 "        REF: Página 39, %%%%BoundingBox:"
 
 #, c-format
@@ -843,7 +840,7 @@ msgid ""
 "    Bad %%%%Page: on line %d.\n"
 "        REF: Page 53, %%%%Page:"
 msgstr ""
-"    %%%%Page: incorrecto en línea %d.\n"
+"    %%%%Page incorrecto: en línea %d.\n"
 "        REF: Página 53, %%%%Page:"
 
 #, c-format
@@ -851,7 +848,7 @@ msgid ""
 "    Bad %%%%Pages: on line %d.\n"
 "        REF: Page 43, %%%%Pages:"
 msgstr ""
-"    %%%%Pages: incorrecto en línea %d.\n"
+"    %%%%Pages incorrecto: en línea %d.\n"
 "        REF: Página 43, %%%%Pages:"
 
 #, c-format
@@ -860,14 +857,14 @@ msgid ""
 "        REF: Page 25, Line Length"
 msgstr ""
 "    La línea %d es más larga de 255 caracteres (%d).\n"
-"        REF: Página 25, Longitud de Línea"
+"        REF: Página 25, Line Length"
 
 msgid ""
 "    Missing %!PS-Adobe-3.0 on first line.\n"
 "        REF: Page 17, 3.1 Conforming Documents"
 msgstr ""
 "    Falta %!PS-Adobe-3.0 en la primera línea.\n"
-"        REF: Página 17, 3.1 Conformidad de documentos"
+"        REF: Página 17, 3.1 Conforming Documents"
 
 #, c-format
 msgid "    Missing %%EndComments comment.        REF: Page 41, %%EndComments"
@@ -963,7 +960,7 @@ msgid ""
 "  --exec utility [argument ...] ;\n"
 "                          Execute program if true."
 msgstr ""
-"  --exec utilidad [argumento ...] ;\n"
+"  --exec utility [argument ...] ;\n"
 "                          Ejecutar programa si es cierto."
 
 msgid "  --false                 Always false."
@@ -980,8 +977,8 @@ msgstr ""
 "  --host regex            Hacer coincidir el nombre del equipo con la "
 "expresión regular."
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
-msgstr "  --lf                    Finalizar líneas con LF (UNIX/Linux/OS X)."
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
+msgstr "  --lf                    Finalizar líneas con LF (UNIX/Linux/macOS)."
 
 msgid "  --list-filters          List filters that will be used."
 msgstr "  --list-filters          Listar los filtros a usar."
@@ -998,7 +995,7 @@ msgstr ""
 "regular."
 
 msgid "  --not expression        Unary NOT of expression."
-msgstr "  [parcial]expresión            NOT unario de la expresión."
+msgstr "  --not expresión         NOT unario de la expresión."
 
 msgid "  --path regex            Match resource path to regular expression."
 msgstr ""
@@ -1035,8 +1032,7 @@ msgid "  --true                  Always true."
 msgstr "  --true                  Siempre cierto."
 
 msgid "  --txt key               True if the TXT record contains the key."
-msgstr ""
-"  --txt clave               Cierto si el registro TXT contiene la clave."
+msgstr "  --txt clave             Cierto si el registro TXT contiene la clave."
 
 msgid "  --txt-* regex           Match TXT record key to regular expression."
 msgstr ""
@@ -1068,7 +1064,7 @@ msgid "  -D                      Remove the input file when finished."
 msgstr "  -D                      Eliminar el archivo de entrada al terminar."
 
 msgid "  -D name=value           Set named variable to value."
-msgstr "  -D nombre=valor           Establece la variable nombre al valor."
+msgstr "  -D nombre=valor         Establece la variable nombre al valor."
 
 msgid "  -E                      Encrypt the connection."
 msgstr "  -E                      Cifra la conexión."
@@ -1083,7 +1079,7 @@ msgstr ""
 "consola."
 
 msgid "  -H samba-server         Use the named SAMBA server."
-msgstr "  -H servidor-samba         Usa el servidor SAMBA nombrado."
+msgstr "  -H servidor-samba       Usa el servidor SAMBA nombrado."
 
 msgid "  -I                      Ignore errors."
 msgstr "  -I                      Ignora errores."
@@ -1106,22 +1102,22 @@ msgstr ""
 "prueba a la salida estandar."
 
 msgid "  -P filename.ppd         Set PPD file."
-msgstr "  -P nombre_archivo.ppd         Establece archivo PPD."
+msgstr "  -P nombre_archivo.ppd   Establece archivo PPD."
 
 msgid "  -P number[-number]      Match port to number or range."
 msgstr ""
-"  -P número[-número]    Hacer coincidir el puerto con un número o intervalo "
-"de números."
+"  -P número[-número]      Hacer coincidir el puerto con un número o "
+"intervalo de números."
 
 msgid "  -R root-directory       Set alternate root."
-msgstr "  -R directorio-raíz       Establece directorio raíz alternativo."
+msgstr "  -R directorio-raíz      Establece directorio raíz alternativo."
 
 msgid "  -S                      Test with SSL encryption."
 msgstr "  -S                      Prueba con cifrado SSL."
 
 msgid "  -T seconds              Set the browse timeout in seconds."
 msgstr ""
-"  -T segundos              Establece el tiempo de espera de navegación en "
+"  -T segundos             Establece el tiempo de espera de navegación en "
 "segundos."
 
 msgid "  -T seconds              Set the receive/send timeout in seconds."
@@ -1130,7 +1126,7 @@ msgstr ""
 "en segundos."
 
 msgid "  -U username             Specify username."
-msgstr "  -U nombre_usuario             Especifica el nombre de usuario."
+msgstr "  -U nombre_usuario       Especifica el nombre de usuario."
 
 msgid "  -V version              Set default IPP version."
 msgstr "  -V versión              Establece la versión IPP predeterminada."
@@ -1146,9 +1142,6 @@ msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 "  -X                      Produce XML plist en vez de texto sin formato."
 
-msgid "  -a                      Browse for all services."
-msgstr "  -a                      Explorar todos los servicios."
-
 msgid "  -a                      Export all printers."
 msgstr "  -a                      Exporta todas las impresoras."
 
@@ -1156,7 +1149,7 @@ msgid "  -c                      Produce CSV output."
 msgstr "  -c                      Produce salida CSV."
 
 msgid "  -c catalog.po           Load the specified message catalog."
-msgstr "  -c catálogo.po           Carga el catálogo de mensajes especificado."
+msgstr "  -c catálogo.po          Carga el catálogo de mensajes especificado."
 
 msgid "  -c cups-files.conf      Set cups-files.conf file to use."
 msgstr "  -c cups-files.conf      Establece el archivo cups-files.conf a usar."
@@ -1164,22 +1157,19 @@ msgstr "  -c cups-files.conf      Establece el archivo cups-files.conf a usar."
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cupsd.conf           Establece el archivo cupsd.conf a usar."
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr ""
-"  -d dominio               Explora/resuelve en el dominio especificado."
-
 msgid "  -d name=value           Set named variable to value."
-msgstr "  -d nombre=valor           Establece la variable al valor."
+msgstr "  -d nombre=valor         Establece la variable al valor."
 
 msgid "  -d output-dir           Specify the output directory."
 msgstr "  -d dir-salida           Especifica el directorio de salida."
 
 msgid "  -d printer              Use the named printer."
-msgstr "  -d impresora              Usa la impresora especificada."
+msgstr "  -d impresora            Usa la impresora especificada."
 
 msgid "  -d regex                Match domain to regular expression."
 msgstr ""
-"  -d regex               Hacer coincidir el dominio con la expresión regular."
+"  -d regex                Hacer coincidir el dominio con la expresión "
+"regular."
 
 msgid "  -e                      Use every filter from the PPD file."
 msgstr "  -e                      Usa cada filtro desde el archivo PPD."
@@ -1188,8 +1178,7 @@ msgid "  -f                      Run in the foreground."
 msgstr "  -f                      Ejecuta en primer plano."
 
 msgid "  -f filename             Set default request filename."
-msgstr ""
-"  -f nombre_archivo             Establece nombre de archivo predeterminado."
+msgstr "  -f nombre_archivo       Establece nombre de archivo predeterminado."
 
 msgid "  -h                      Show this usage message."
 msgstr "  -h                      Muestra este mensaje de uso."
@@ -1200,7 +1189,7 @@ msgstr ""
 "expresión regular."
 
 msgid "  -h server[:port]        Specify server address."
-msgstr "  -h servidor[:puerto]        Especifica la dirección del servidor."
+msgstr "  -h servidor[:puerto]    Especifica la dirección del servidor."
 
 msgid "  -i mime/type            Set input MIME type (otherwise auto-typed)."
 msgstr ""
@@ -1210,18 +1199,18 @@ msgstr ""
 msgid ""
 "  -i seconds              Repeat the last file with the given time interval."
 msgstr ""
-"  -i segundos              Repite el último archivo con el intervalo de "
+"  -i segundos             Repite el último archivo con el intervalo de "
 "tiempo dado."
 
 msgid ""
 "  -j job-id[,N]           Filter file N from the specified job (default is "
 "file 1)."
 msgstr ""
-"  -j id-trabajo[,N]           Filtra el archivo N desde el trabajo "
-"especificado (predeterminado archivo 1)."
+"  -j id-trabajo[,N]       Filtra el archivo N desde el trabajo especificado "
+"(predeterminado archivo 1)."
 
 msgid "  -l                      List attributes."
-msgstr "  -l                    Lista atributos."
+msgstr "  -l                      Lista atributos."
 
 msgid "  -l                      Produce plain text output."
 msgstr "  -l                      Produce salida en texto plano."
@@ -1231,8 +1220,7 @@ msgstr "  -l                      Ejecuta cupsd según demanda."
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr ""
-"  -l idioma[,idioma,...]      Especifica los idiomas de salida (código "
-"regional)."
+"  -l idioma[,idioma,...]  Especifica los idiomas de salida (código regional)."
 
 msgid "  -m                      Use the ModelName value as the filename."
 msgstr ""
@@ -1250,38 +1238,32 @@ msgstr "  -n copias               Establece el número de copias."
 msgid ""
 "  -n count                Repeat the last file the given number of times."
 msgstr ""
-"  -n contador                Repite el último archivo el número de veces "
+"  -n contador             Repite el último archivo el número de veces "
 "especificado."
 
 msgid "  -n regex                Match service name to regular expression."
 msgstr ""
-"  -n regex            Hacer coincidir el nombre del servicio con la "
+"  -n regex                Hacer coincidir el nombre del servicio con la "
 "expresión regular."
 
 msgid ""
 "  -o filename.drv         Set driver information file (otherwise ppdi.drv)."
 msgstr ""
-"  -o nombre_archivo.drv         Establece el archivo de información del "
+"  -o nombre_archivo.drv   Establece el archivo de información del "
 "controlador (si no, ppdi.drv)."
 
 msgid "  -o filename.ppd[.gz]    Set output file (otherwise stdout)."
 msgstr ""
-"  -o nombre_archivo.ppd[.gz]    Establece el archivo de salida (si no, "
-"stdout)."
+"  -o nombre_archivo.ppd[.gz]  Establece el archivo de salida (si no, stdout)."
 
 msgid "  -o name=value           Set option(s)."
-msgstr "  -o nombre=valor           Establece opciones."
+msgstr "  -o nombre=valor         Establece opciones."
 
 msgid "  -p                      Print URI if true."
 msgstr "  -p                      Imprimir URI si es cierto."
 
 msgid "  -p filename.ppd         Set PPD file."
-msgstr "  -p nombre_archivo.ppd         Establece archivo PPD."
-
-msgid "  -p program              Run specified program for each service."
-msgstr ""
-"  -p program              Ejecuta el programa especificado para cada "
-"servicio."
+msgstr "  -p nombre_archivo.ppd   Establece archivo PPD."
 
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
@@ -1300,6 +1282,9 @@ msgstr "  -r                      Usa modo abierto 'relajado'."
 msgid "  -s                      Print service name if true."
 msgstr "  -s                      Imprimir nombre del servicio si es cierto."
 
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr "  -s cups-files.conf      Establece el archivo cups-files.conf a usar."
+
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      Produce un informe de la prueba."
 
@@ -1315,9 +1300,6 @@ msgstr "  -t clave                Cierto si el registro TXT contiene la clave."
 msgid "  -t title                Set title."
 msgstr "  -t título               Establece título."
 
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr "  -t tipo                 Explora/resuelve con el tipo especificado."
-
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      Borra el archivo PPD tras terminar."
 
@@ -1336,7 +1318,7 @@ msgid ""
 "                          Execute program if true."
 msgstr ""
 "  -x utilidad [argumento ...] ;\n"
-"                        Ejecutar programa si es cierto."
+"                          Ejecutar programa si es cierto."
 
 msgid "  -z                      Compress PPD files using GNU zip."
 msgstr "  -z                      Comprimir archivos PPD usando GNU zip."
@@ -1374,14 +1356,14 @@ msgid ""
 "                          Logical AND."
 msgstr ""
 "  expresión --and expresión\n"
-"                            AND lógico."
+"                          Y (AND) lógico."
 
 msgid ""
 "  expression --or expression\n"
 "                          Logical OR."
 msgstr ""
 "  expresión --or expresión\n"
-"                            OR lógico."
+"                          O (OR) lógico."
 
 msgid "  expression expression   Logical AND."
 msgstr "  expresión expresión     AND lógico."
@@ -1720,7 +1702,7 @@ msgstr "%s: %s ha fallado: %s"
 
 #, c-format
 msgid "%s: Bad printer URI \"%s\"."
-msgstr ""
+msgstr "%s: URI de impresora \"%s\" no válida."
 
 #, c-format
 msgid "%s: Bad version %s for \"-V\"."
@@ -1757,6 +1739,10 @@ msgstr ""
 "una ID de trabajo."
 
 #, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr "%s: Error - número de copias debe ser 1 o más."
+
+#, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr "%s: Error - se esperaba un juego de caracteres tras la opción \"-S\"."
 
@@ -1927,7 +1913,7 @@ msgstr "%s: Lo siento, no está implementado el cifrado."
 
 #, c-format
 msgid "%s: Unable to connect to \"%s:%d\": %s"
-msgstr ""
+msgstr "%s: No se ha podido conectar a \"%s:%d\": %s"
 
 #, c-format
 msgid "%s: Unable to connect to server."
@@ -1939,7 +1925,7 @@ msgstr "%s: No se ha podido contactar con el servidor."
 
 #, c-format
 msgid "%s: Unable to create PPD file: %s"
-msgstr ""
+msgstr "%s: No se ha podido crear el archivo PPD: %s"
 
 #, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
@@ -1963,7 +1949,11 @@ msgstr "%s: No se pudo leer base de datos MIME desde \"%s\" o \"%s\"."
 
 #, c-format
 msgid "%s: Unable to resolve \"%s\"."
-msgstr ""
+msgstr "%s: No se ha podido resolver \"%s\"."
+
+#, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr "%s: Argumento \"%s\" desconocido."
 
 #, c-format
 msgid "%s: Unknown destination \"%s\"."
@@ -2253,6 +2243,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 pulg./seg"
 
+msgid "2-Hole Punch (Landscape)"
+msgstr "Perforación de 2 agujeros (apaisado)"
+
+msgid "2-Hole Punch (Portrait)"
+msgstr "Perforación de 2 agujeros (retrato)"
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr "Perforación de 2 agujeros (apaisado invertido)"
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr "Perforación de 2 agujeros (retrato invertido)"
+
 msgid "2-Sided Printing"
 msgstr "Dúplex"
 
@@ -2367,6 +2369,18 @@ msgstr "3 pulg./seg"
 msgid "3 x 5"
 msgstr "3 x 5"
 
+msgid "3-Hole Punch (Landscape)"
+msgstr "Perforación de 3 agujeros (apaisado)"
+
+msgid "3-Hole Punch (Portrait)"
+msgstr "Perforación de 3 agujeros (retrato)"
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr "Perforación de 3 agujeros (apaisado invertido)"
+
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr "Perforación de 3 agujeros (retrato invertido)"
+
 msgid "3.00x1.00\""
 msgstr "3.00x1.00 pulg."
 
@@ -2433,6 +2447,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 pulg./seg"
 
+msgid "4-Hole Punch (Landscape)"
+msgstr "Perforación de 4 agujeros (apaisado)"
+
+msgid "4-Hole Punch (Portrait)"
+msgstr "Perforación de 4 agujeros (retrato)"
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr "Perforación de 4 agujeros (apaisado invertido)"
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr "Perforación de 4 agujeros (retrato invertido)"
+
 msgid "4.00x1.00\""
 msgstr "4.00x1.00 pulg."
 
@@ -2732,6 +2758,9 @@ msgstr "Aceptar trabajos"
 msgid "Accepted"
 msgstr "Aceptado"
 
+msgid "Accordian Fold"
+msgstr "Pliegue de acordeón"
+
 msgid "Add Class"
 msgstr "Añadir clase"
 
@@ -2747,6 +2776,15 @@ msgstr "Dirección"
 msgid "Administration"
 msgstr "Administración"
 
+msgid "Alternate"
+msgstr "Alternativo"
+
+msgid "Alternate Roll"
+msgstr "Rollo alternativo"
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "Siempre"
 
@@ -2756,6 +2794,12 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "Aplicador"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
@@ -2763,9 +2807,20 @@ msgstr ""
 "%d."
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr "El atributo \"%s\" está en el grupo equivocado."
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr "El atributo \"%s\" es el tipo de valor equivocado."
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "Los grupos de atributos están desordenados (%x < %x)."
 
+msgid "Automatic"
+msgstr "Automático"
+
 msgid "B0"
 msgstr "B0"
 
@@ -2802,6 +2857,9 @@ msgstr "B8"
 msgid "B9"
 msgstr "B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr "Valor 'document-format' \"%s\" incorrecto."
@@ -2821,6 +2879,9 @@ msgstr "OrderDependency incorrecto"
 msgid "Bad PPD cache file."
 msgstr "Archivo de caché PPD incorrecto."
 
+msgid "Bad PPD file."
+msgstr "Archivo PPD incorrecto."
+
 msgid "Bad Request"
 msgstr "Petición incorrecta"
 
@@ -2946,19 +3007,49 @@ msgstr "Cadena de valores incorrecta"
 msgid "Bad/empty URI"
 msgstr "URI incorrecta/vacía"
 
+msgid "Bale"
+msgstr "Fardo"
+
 msgid "Banners"
 msgstr "Rótulos"
 
+msgid "Bind"
+msgstr "Encuadernar"
+
+msgid "Bind (Landscape)"
+msgstr "Encuadernar (apaisado)"
+
+msgid "Bind (Portrait)"
+msgstr "Encuadernar (retrato)"
+
+msgid "Bind (Reverse Landscape)"
+msgstr "Encuadernar (apaisado invertido)"
+
+msgid "Bind (Reverse Portrait)"
+msgstr "Encuadernar (retrato invertido)"
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "Papel de cartas"
 
+msgid "Booklet Maker"
+msgstr "Fabricante de folleto"
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "Se esperaba un valor lógico para la opción waiteof \"%s\"."
 
+msgid "Bottom"
+msgstr "Inferior"
+
 msgid "Buffer overflow detected, aborting."
 msgstr "Se ha detectado un desbordamiento de buffer, cancelando."
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMYK"
 
@@ -2974,12 +3065,24 @@ msgstr "Cancelar subscripción RSS"
 msgid "Canceling print job."
 msgstr "Cancelando trabajo de impresión."
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr "No se ha podido cambiar printer-is-shared para colas remotas"
+
 msgid "Cannot share a remote Kerberized printer."
 msgstr "No se puede compartir una impresora remota Kerberizada."
 
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
+msgstr "Cartulina"
+
 msgid "Cassette"
 msgstr "Casete"
 
+msgid "Center"
+msgstr "Centro"
+
 msgid "Change Settings"
 msgstr "Cambiar configuración"
 
@@ -2996,20 +3099,31 @@ msgstr "Limpiar cabezales de impresión"
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job no admite el atributo job-uri."
 
+msgid "Coat"
+msgstr "Capa"
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
+msgstr ""
+
 msgid "Color"
 msgstr "Color"
 
 msgid "Color Mode"
 msgstr "Modo de color"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
 "exit    help    quit    status  ?"
 msgstr ""
-"Los comandos se pueden abreviar.  Los comandos son:\n"
-"\n"
-"exit    help    quit    status  ?"
+"Los comandos se pueden abreviar.  Los comandos son:exit    help    quit    "
+"status  ?"
 
 msgid "Community name uses indefinite length"
 msgstr "Nombre de comunidad usa una longitud indefinida"
@@ -3026,15 +3140,33 @@ msgstr "Continuar"
 msgid "Continuous"
 msgstr "Continuo"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr "Archivo de control enviado correctamente."
 
 msgid "Copying print data."
 msgstr "Copiando datos de impresión."
 
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr "Carátula"
+
 msgid "Created"
 msgstr "Creado"
 
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
+
 msgid "Custom"
 msgstr "A medida"
 
@@ -3047,9 +3179,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "Cortar"
 
+msgid "Cut Media"
+msgstr "Medio de corte"
+
 msgid "Cutter"
 msgstr "Cortadora"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "Oscuro"
 
@@ -3084,9 +3222,9 @@ msgstr ""
 "Dispositivo: uri = %s\n"
 "        clase = %s\n"
 "        info = %s\n"
-"        marca y modelo = %s\n"
-"        id dispositivo= %s\n"
-"        ubicación = %s"
+"        make-and-model = %s\n"
+"        device-id = %s\n"
+"        ubicación: %s"
 
 msgid "Direct Thermal Media"
 msgstr "Soporte térmico directo"
@@ -3114,10 +3252,37 @@ msgstr "Permisos del directorio \"%s\" OK (0%o/uid=%d/gid=%d)."
 msgid "Disabled"
 msgstr "Deshabilitado"
 
+msgid "Disc"
+msgstr "Disco"
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "El documento #%d no existe en el trabajo #%d."
 
+msgid "Double Gate Fold"
+msgstr "Página desplegable doble"
+
+msgid "Double Staple (Landscape)"
+msgstr "Grapado doble (apaisado)"
+
+msgid "Double Staple (Portrait)"
+msgstr "Grapado doble (retrato)"
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr "Grapado doble (apaisado invertido)"
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr "Grapado doble (retrato invertido)"
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr "Borrador"
+
+msgid "Dry Film"
+msgstr ""
+
 msgid "Duplexer"
 msgstr "Unidad de impresión dúplex"
 
@@ -3133,12 +3298,18 @@ msgstr "Impresora de etiquetas EPL2"
 msgid "Edit Configuration File"
 msgstr "Editar archivo de configuración"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr "Archivo PPD vacío."
 
 msgid "Encryption is not supported."
 msgstr "El cifrado no está implementado."
 
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Rótulo final"
@@ -3155,8 +3326,11 @@ msgstr ""
 "contraseña de root para poder acceder a esta página. Si está usando "
 "autentificación Kerberos, asegúrese de que tiene un ticket Kerberos válido."
 
-msgid "Envelope #10 "
-msgstr "Sobre #10 "
+msgid "Envelope"
+msgstr "Sobre"
+
+msgid "Envelope #10"
+msgstr "Sobre #10"
 
 msgid "Envelope #11"
 msgstr "Sobre #11"
@@ -3245,8 +3419,8 @@ msgstr "Sobre Kaku3 lado largo"
 msgid "Envelope Monarch"
 msgstr "Sobre Monarch"
 
-msgid "Envelope PRC1 "
-msgstr "Sobre PRC1 "
+msgid "Envelope PRC1"
+msgstr "Sobre PRC1"
 
 msgid "Envelope PRC1 Long Edge"
 msgstr "Sobre PRC1 lado largo"
@@ -3324,7 +3498,7 @@ msgid "Error Policy"
 msgstr "Directiva de error"
 
 msgid "Error reading raster data."
-msgstr ""
+msgstr "Error leyendo trama de datos (raster)."
 
 msgid "Error sending raster data."
 msgstr "Error enviando trama de datos (raster)."
@@ -3377,6 +3551,9 @@ msgstr "Expresiones:"
 msgid "FAIL"
 msgstr "FALLO"
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr "FanFold alemán"
 
@@ -3386,6 +3563,9 @@ msgstr "FanFold Legal alemán"
 msgid "Fanfold US"
 msgstr "FanFold de EE.UU"
 
+msgid "Fast Grayscale"
+msgstr "Escala de grises rápida"
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "El archivo \"%s\" contiene una ruta relativa."
@@ -3406,8 +3586,8 @@ msgstr "Archivo \"%s\" no disponible: %s"
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "Permisos del archivo \"%s\" OK (0%o/uid=%d/gid=%d)."
 
-msgid "File Folder "
-msgstr "Carpeta de archivo "
+msgid "File Folder"
+msgstr "Carpeta de archivo"
 
 #, c-format
 msgid ""
@@ -3417,16 +3597,46 @@ msgstr ""
 "Los URIs del dispositivo de archivo han sido deshabilitados. Para "
 "habilitarlos, vea la directiva FileDevice en \"%s/cups-files.conf\"."
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
 msgstr "Acabada la página %d."
 
+msgid "Finishing"
+msgstr "Terminando"
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
+msgstr "Plegado"
+
 msgid "Folio"
 msgstr "Folio"
 
 msgid "Forbidden"
 msgstr "Prohibido"
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr "Desplegable"
+
 msgid "General"
 msgstr "General"
 
@@ -3436,24 +3646,87 @@ msgstr "Genérico"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Get-Response-PDU usa una longitud indefinida"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
-msgstr "Papel satinado"
+msgstr "Papel brillante"
+
+msgid "Glossy Photo Paper"
+msgstr ""
 
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "Se ha obtenido el atributo printer-uri pero no el job-id."
 
+msgid "Gravure Cylinder"
+msgstr ""
+
 msgid "Grayscale"
 msgstr "Escale de grises"
 
 msgid "HP"
 msgstr "HP"
 
+msgid "Hagaki"
+msgstr "Hagaki"
+
+msgid "Half Fold"
+msgstr "Plegado por la mitad"
+
+msgid "Half Z Fold"
+msgstr "Medio plegado en Z"
+
 msgid "Hanging Folder"
 msgstr "Carpeta colgante"
 
+msgid "Hash buffer too small."
+msgstr "Memoria temporal hash demasiado pequeña."
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
 msgid "Help file not in index."
 msgstr "El archivo de ayuda no está en el índice."
 
+msgid "High"
+msgstr "Alta"
+
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+msgid "High Gloss Photo Paper"
+msgstr ""
+
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr "Atributo IPP 1setOf con etiquetas de valor incompatibles."
 
@@ -3524,7 +3797,7 @@ msgid "IPP value larger than 32767 bytes."
 msgstr "IPP valor mayor de 32767 bytes."
 
 msgid "ISOLatin1"
-msgstr "UTF-8"
+msgstr "ISOLatin1"
 
 msgid "Illegal control character"
 msgstr "Carácter de control ilegal"
@@ -3541,6 +3814,18 @@ msgstr "Cadena de traducción ilegal"
 msgid "Illegal whitespace character"
 msgstr "Carácter de espacio en blanco ilegal"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "Opciones instalables"
 
@@ -3574,6 +3859,9 @@ msgstr "Argumentos del nombre del papel no válidos."
 msgid "Invalid media size."
 msgstr "Tamaño de papel no válido."
 
+msgid "Invalid ppd-name value."
+msgstr "Valor ppd-name' no válido."
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "Comando de impresora \"%s\" no válido."
@@ -3686,6 +3974,9 @@ msgstr "Las suscripciones de trabajos no han podido ser renovadas."
 msgid "Jobs"
 msgstr "Trabajos"
 
+msgid "Jog"
+msgstr "Jog"
+
 msgid "LPD/LPR Host or Printer"
 msgstr "Equipo o impresora LPD/LPR"
 
@@ -3695,6 +3986,15 @@ msgstr "Impresora de etiquetas"
 msgid "Label Top"
 msgstr "Parte superior de la etiqueta"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr "Laminado"
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "No se admite el uso del idioma \"%s\"."
@@ -3702,18 +4002,39 @@ msgstr "No se admite el uso del idioma \"%s\"."
 msgid "Large Address"
 msgstr "Dirección grande"
 
+msgid "Large Capacity"
+msgstr "Capacidad grande"
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Series PCL 4/5"
 
+msgid "Left"
+msgstr "Izquierda"
+
+msgid "Left Gate Fold"
+msgstr "Desplegable izquierdo"
+
+msgid "Letter Fold"
+msgstr "Carta plegada"
+
 msgid "Letter Oversize"
 msgstr "Carta Extragrande"
 
 msgid "Letter Oversize Long Edge"
 msgstr "Carta Extragrande lado largo"
 
+msgid "Letterhead"
+msgstr "Membrete"
+
 msgid "Light"
 msgstr "Ligero"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Línea más larga que el máximo permitido (255 caracteres)"
 
@@ -3723,15 +4044,39 @@ msgstr "Listar impresoras disponibles"
 msgid "Load paper."
 msgstr "Cargar papel."
 
+msgid "Local printer created."
+msgstr "Impresora creada localmente."
+
 msgid "Long-Edge (Portrait)"
 msgstr "Lado largo (retrato)"
 
-msgid "Looking for printer..."
+msgid "Looking for printer."
 msgstr ""
 
+msgid "Main"
+msgstr "Principaln"
+
+msgid "Main Roll"
+msgstr "Rollo principal"
+
+msgid "Manual"
+msgstr "Manual"
+
 msgid "Manual Feed"
 msgstr "Alimentación manual"
 
+msgid "Matte Fabric"
+msgstr ""
+
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
 msgid "Media Size"
 msgstr "Tamaño de papel"
 
@@ -3750,6 +4095,27 @@ msgstr "Media"
 msgid "Memory allocation error"
 msgstr "Error de reserva de memoria"
 
+msgid "Metal"
+msgstr ""
+
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr "Medio"
+
 msgid "Missing CloseGroup"
 msgstr "Falta CloseGroup"
 
@@ -3787,6 +4153,10 @@ msgstr "Falta cadena de clave de opción"
 msgid "Missing requesting-user-name attribute."
 msgstr "Falta el atributo requesting-user-name."
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr "Falta atributo necesario \"%s\"."
+
 msgid "Missing required attributes."
 msgstr "Faltan atributos necesarios."
 
@@ -3830,6 +4200,9 @@ msgstr "Modificar clase"
 msgid "Modify Printer"
 msgstr "Modificar impresora"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "Mover todos los trabajos"
 
@@ -3839,6 +4212,15 @@ msgstr "Mover trabajo"
 msgid "Moved Permanently"
 msgstr "Movido permanentemente"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr "Multipropósito"
+
 msgid "NULL PPD file pointer"
 msgstr "Puntero de archivo PPD NULO"
 
@@ -3851,12 +4233,21 @@ msgstr "No se permiten clases anidadas."
 msgid "Never"
 msgstr "Nunca"
 
+msgid "New credentials are not valid for name."
+msgstr ""
+
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
 msgid "No"
 msgstr "No"
 
 msgid "No Content"
 msgstr "No hay contenido"
 
+msgid "No Finishing"
+msgstr "Sin terminar"
+
 msgid "No PPD name"
 msgstr "No hay nombre de PPD"
 
@@ -3882,6 +4273,9 @@ msgstr "No hay atributos en la solicitud."
 msgid "No authentication information provided."
 msgstr "No se ha proporcionado información de autentificación."
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "No hay nombre de comunidad"
 
@@ -3938,6 +4332,9 @@ msgstr "No se ha enviado solicitud."
 msgid "No request-id"
 msgstr "No hay request-id"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr "No hay atributos de subscripción en la solicitud."
 
@@ -3998,6 +4395,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "Ayuda en línea"
 
+msgid "Only local users can create a local printer."
+msgstr "Sólo usuarios locales pueden crear una impresora local."
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "La apertura de %s ha fallado: %s"
@@ -4011,6 +4411,9 @@ msgstr "OpenUI/JCLOpenUI sin un CloseUI/JCLCloseUI previo"
 msgid "Operation Policy"
 msgstr "Directiva de operación"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "La opción \"%s\" no puede incluirse via %%%%IncludeFeature."
@@ -4021,6 +4424,9 @@ msgstr "Opciones instaladas"
 msgid "Options:"
 msgstr "Opciones:"
 
+msgid "Other"
+msgstr "Otro"
+
 msgid "Out of date PPD cache file."
 msgstr "Archivo de caché PPD obsoleto."
 
@@ -4069,6 +4475,9 @@ msgstr "El paquete no contiene un Get-Response-PDU"
 msgid "Packet does not start with SEQUENCE"
 msgstr "El paquete no empieza por SEQUENCE"
 
+msgid "Paper"
+msgstr ""
+
 msgid "Paper jam."
 msgstr "Atasco de papel."
 
@@ -4081,6 +4490,9 @@ msgstr "La bandeja de papel está vacía."
 msgid "Paper tray is missing."
 msgstr "No se encuentra la bandeja de papel."
 
+msgid "Parallel Fold"
+msgstr "Pliegue paralelo"
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4104,18 +4516,63 @@ msgstr "Pausar impresora"
 msgid "Peel-Off"
 msgstr "Despegar"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "Foto"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "Foto pequeña"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr "Papel normal"
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "Reglas"
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "Monitor de puerto"
 
@@ -4125,8 +4582,8 @@ msgstr "Impresora PostScript"
 msgid "Postcard"
 msgstr "Postal"
 
-msgid "Postcard Double "
-msgstr "Postal doble "
+msgid "Postcard Double"
+msgstr "Postal doble"
 
 msgid "Postcard Double Long Edge"
 msgstr "Postal doble lado largo"
@@ -4134,9 +4591,21 @@ msgstr "Postal doble lado largo"
 msgid "Postcard Long Edge"
 msgstr "Postal lado largo"
 
+msgid "Poster Fold"
+msgstr "Póster plegado"
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
 msgstr "Preparando la impresión."
 
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
+msgstr ""
+
 msgid "Print Density"
 msgstr "Densidad de impresión"
 
@@ -4146,6 +4615,9 @@ msgstr "Imprimir trabajo:"
 msgid "Print Mode"
 msgstr "Modo de impresión"
 
+msgid "Print Quality"
+msgstr "Calidad de impresión"
+
 msgid "Print Rate"
 msgstr "Tasa de impresión"
 
@@ -4176,6 +4648,10 @@ msgstr "Trabajo de impresión demasiado grande."
 msgid "Print job was not accepted."
 msgstr "No se acepta el trabajo de impresión."
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr "Ya existe la impresora \"%s\"."
+
 msgid "Printer Added"
 msgstr "Impresora añadida"
 
@@ -4210,8 +4686,14 @@ msgstr "Impresoras"
 msgid "Printing page %d, %u%% complete."
 msgstr "Imprimiendo página %d, %u%% completado."
 
+msgid "Punch"
+msgstr "Perforadora"
+
+msgid "Punched Paper"
+msgstr ""
+
 msgid "Quarto"
-msgstr "Quarto"
+msgstr "Libro en cuarto"
 
 msgid "Quota limit reached."
 msgstr "Se ha alcanzado el límite de cuota."
@@ -4219,6 +4701,9 @@ msgstr "Se ha alcanzado el límite de cuota."
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "Rango  Propiet. Trabajo Archivo(s)                      Tamaño total"
 
+msgid "Rear"
+msgstr "Posterior"
+
 msgid "Reject Jobs"
 msgstr "Rechazar trabajos"
 
@@ -4251,6 +4736,45 @@ msgstr "Remite"
 msgid "Rewind"
 msgstr "Rebobinar"
 
+msgid "Right"
+msgstr "Derecho"
+
+msgid "Right Gate Fold"
+msgstr "Desplegable derecho"
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr "Rollo 1"
+
+msgid "Roll 10"
+msgstr "Rollo 10"
+
+msgid "Roll 2"
+msgstr "Rollo 2"
+
+msgid "Roll 3"
+msgstr "Rollo 3"
+
+msgid "Roll 4"
+msgstr "Rollo 4"
+
+msgid "Roll 5"
+msgstr "Rollo 5"
+
+msgid "Roll 6"
+msgstr "Rollo 6"
+
+msgid "Roll 7"
+msgstr "Rollo 7"
+
+msgid "Roll 8"
+msgstr "Rollo 8"
+
+msgid "Roll 9"
+msgstr "Rollo 9"
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "Ejecutando comando: %s %s -N -A %s -c '%s'"
@@ -4261,9 +4785,54 @@ msgstr "SEQUENCE usa una longitud indefinida"
 msgid "SSL/TLS Negotiation Error"
 msgstr "Error en negociación SSL/TLS"
 
+msgid "Saddle Stitch"
+msgstr "Encuadernador"
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "Ver otros"
 
+msgid "See remote printer."
+msgstr "Ver impresora remota."
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr "Enviando datos a la impresora."
 
@@ -4306,6 +4875,45 @@ msgstr "Dirección de envío"
 msgid "Short-Edge (Landscape)"
 msgstr "Lado corto (apaisado)"
 
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr "Lateral"
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr "Perforación simple (apaisado)"
+
+msgid "Single Punch (Portrait)"
+msgstr "Perforación única (retrato)"
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr "Perforación única (apaisado invertido)"
+
+msgid "Single Punch (Reverse Portrait)"
+msgstr "Perforación única (retrato invertido)"
+
+msgid "Single Staple (Landscape)"
+msgstr "Grapado simple (apaisado)"
+
+msgid "Single Staple (Portrait)"
+msgstr "Grapado simple (retrato)"
+
+msgid "Single Staple (Reverse Landscape)"
+msgstr "Grapado simple (apaisado invertido)"
+
+msgid "Single Staple (Reverse Portrait)"
+msgstr "Grapado simple (retrato invertido)"
+
+msgid "Single Wall Cardboard"
+msgstr ""
+
+msgid "Sleeve"
+msgstr ""
+
 msgid "Special Paper"
 msgstr "Papel especial"
 
@@ -4316,6 +4924,24 @@ msgstr "Guardando trabajo en cola, %.0f%% completado."
 msgid "Standard"
 msgstr "Estándar"
 
+msgid "Staple"
+msgstr "Grapa"
+
+msgid "Staple Edge"
+msgstr "Borde de grapas"
+
+msgid "Staple Edge (Landscape)"
+msgstr "Borde de grapas (apaisado)"
+
+msgid "Staple Edge (Portrait)"
+msgstr "Borde de grapas (retrato)"
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr "Borde de grapas (apaisado invertido)"
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr "Borde de grapas (retrato invertido)"
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "Rótulo inicial"
@@ -4327,6 +4953,21 @@ msgstr "Iniciando página %d."
 msgid "Statement"
 msgstr "Declaración"
 
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
+
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr "Subscripción #%d no existe."
@@ -4346,14 +4987,17 @@ msgstr "Super B/A3"
 msgid "Switching Protocols"
 msgstr "Protocolos de conexión"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "Tabloide"
 
 msgid "Tabloid Oversize"
-msgstr "Tabloide Extragrande"
+msgstr "Tabloide extragrande"
 
 msgid "Tabloid Oversize Long Edge"
-msgstr "Tabloide Extragrande lado largo"
+msgstr "Tabloide extragrande lado largo"
 
 msgid "Tear"
 msgstr "Pestaña"
@@ -4376,6 +5020,8 @@ msgstr "El atributo %s no puede ser usado con jobs-ids."
 msgid ""
 "The '%s' Job Status attribute cannot be supplied in a job creation request."
 msgstr ""
+"El atributo de estado de trabajo '%s' no puede ser suministrado en una "
+"solicitud de creación de trabajo."
 
 #, c-format
 msgid ""
@@ -4558,6 +5204,15 @@ msgstr "Demasiados valores de job-sheets (%d > 2)."
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "Demasiados valores printer-state-reasons (%d > %d)."
 
+msgid "Top"
+msgstr "Superior"
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
+msgstr ""
+
 msgid "Transparency"
 msgstr "Transparencia"
 
@@ -4567,15 +5222,81 @@ msgstr "Bandeja"
 msgid "Tray 1"
 msgstr "Bandeja 1"
 
+msgid "Tray 10"
+msgstr "Bandeja 10"
+
+msgid "Tray 11"
+msgstr "Bandeja 11"
+
+msgid "Tray 12"
+msgstr "Bandeja 12"
+
+msgid "Tray 13"
+msgstr "Bandeja 13"
+
+msgid "Tray 14"
+msgstr "Bandeja 14"
+
+msgid "Tray 15"
+msgstr "Bandeja 15"
+
+msgid "Tray 16"
+msgstr "Bandeja 16"
+
+msgid "Tray 17"
+msgstr "Bandeja 17"
+
+msgid "Tray 18"
+msgstr "Bandeja 18"
+
+msgid "Tray 19"
+msgstr "Bandeja 19"
+
 msgid "Tray 2"
 msgstr "Bandeja 2"
 
+msgid "Tray 20"
+msgstr "Bandeja 20"
+
 msgid "Tray 3"
 msgstr "Bandeja 3"
 
 msgid "Tray 4"
 msgstr "Bandeja 4"
 
+msgid "Tray 5"
+msgstr "Bandeja 5"
+
+msgid "Tray 6"
+msgstr "Bandeja 6"
+
+msgid "Tray 7"
+msgstr "Bandeja 7"
+
+msgid "Tray 8"
+msgstr "Bandeja 8"
+
+msgid "Tray 9"
+msgstr "Bandeja 9"
+
+msgid "Triple Staple (Landscape)"
+msgstr "Grapado triple (apaisado)"
+
+msgid "Triple Staple (Portrait)"
+msgstr "Grapado triple (retrato)"
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr "Grapado triple (apaisado invertido)"
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr "Grapado triple (retrato invertido)"
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "URI demasiado largo"
 
@@ -4708,13 +5429,15 @@ msgstr ""
 "No se han podido copiar los archivos del controlador de impresora de Windows "
 "9x (%d)."
 
-#, c-format
-msgid "Unable to copy interface script - %s"
-msgstr "No se ha podido copiar el script de interfaz - %s"
+msgid "Unable to create credentials from array."
+msgstr ""
 
 msgid "Unable to create printer-uri"
 msgstr "No se ha podido crear printer-uri"
 
+msgid "Unable to create printer."
+msgstr "No se ha podido crear la impresora."
+
 msgid "Unable to create server credentials."
 msgstr "No se han podido crear las credenciales del servidor."
 
@@ -4873,7 +5596,7 @@ msgid "Unable to read print data."
 msgstr "No se han podido leer los datos de impresión."
 
 msgid "Unable to rename job document file."
-msgstr ""
+msgstr "No se ha podido renombrar el archivo del documento de trabajo."
 
 msgid "Unable to resolve printer-uri."
 msgstr "No se ha podido resolver printer-uri."
@@ -4944,6 +5667,9 @@ msgstr "Orden de archivos \"%s\" desconocido."
 msgid "Unknown format character: \"%c\"."
 msgstr "Carácter de formato \"%c\" desconocido."
 
+msgid "Unknown hash algorithm."
+msgstr "Algoritmo de hash desconocido."
+
 msgid "Unknown media size name."
 msgstr "Nombre de tamaño de papel desconocido."
 
@@ -5061,9 +5787,9 @@ msgstr ""
 "    lpadmin [-h servidor] -d destino\n"
 "    lpadmin [-h servidor] -x destino\n"
 "    lpadmin [-h servidor] -p impresora [-c clase] [-i interfaz] [-m modelo]\n"
-"                         [-r clase] [-v dispositivo] [-D descripción]\n"
-"                         [-P archivo_ppd] [-o nombre=valor]\n"
-"                         [-u allow:usuario,usuario] [-u deny:usuario,usuario]"
+"                       [-r clase] [-v dispositivo] [-D descripción]\n"
+"                       [-P archivo-ppd] [-o nombre=valor]\n"
+"                       [-u allow:usuario,usuario] [-u deny:usuario,usuario]"
 
 #, c-format
 msgid "Usage: %s job-id user title copies options [file]"
@@ -5087,19 +5813,8 @@ msgstr "Uso: cupstestdsc [opciones] nombre_archivo.ps [... nombre_archivo.ps]"
 msgid ""
 "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]"
 msgstr ""
-"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN.ppd"
-"[.gz]]"
-
-msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-"Uso: ippdiscover [opciones] -a\n"
-"       ippdiscover [opciones] \"nombre servicio\"\n"
-"\n"
-"Opciones:"
+"Uso: cupstestppd [opciones] nombre_archivo1.ppd[.gz] [... nombre_archivoN."
+"ppd[.gz]]"
 
 msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
@@ -5125,9 +5840,9 @@ msgid ""
 "       lpoptions [-h server] [-E] -x printer"
 msgstr ""
 "Uso: lpoptions [-h servidor] [-E] -d impresora\n"
-"     lpoptions [-h servidor] [-E] [-p impresora] -l\n"
-"     lpoptions [-h servidor] [-E] -p impresora -o opción[=valor] ...\n"
-"     lpoptions [-h servidor] [-E] -x impresora"
+"       lpoptions [-h servidor] [-E] [-p impresora] -l\n"
+"       lpoptions [-h servidor] [-E] -p impresora -o opción[=valor] ...\n"
+"       lpoptions [-h servidor] [-E] -x impresora"
 
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
@@ -5163,6 +5878,9 @@ msgstr "Valor usa una longitud indefinida"
 msgid "VarBind uses indefinite length"
 msgstr "VarBind usa una longitud indefinida"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "Versión usa una longitud indefinida"
 
@@ -5180,9 +5898,18 @@ msgstr ""
 "Advertencia, no está instalado ningún controlador de impresora de Windows "
 "2000."
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr "La interfaz web está desactivada."
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "Si"
 
@@ -5194,6 +5921,9 @@ msgstr ""
 "Debe acceder a esta página usando el URL <A HREF=\"https://%s:%d%s\">https://"
 "%s:%d%s</A>."
 
+msgid "Z Fold"
+msgstr "Plegado en Z"
+
 msgid "ZPL Label Printer"
 msgstr "Impresora de etiquetas ZPL"
 
@@ -5424,8 +6154,9 @@ msgid "lpadmin: Class name can only contain printable characters."
 msgstr ""
 "lpadmin: El nombre de la clase sólo puede contener caracteres imprimibles."
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr "lpadmin: Se esperaba un PPD tras la opción \"-P\"."
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
+msgstr "lpadmin: Se esperaba un PPD tras la opción \"-%c\"."
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr "lpadmin: Se esperaba allow/deny:lista_usuarios tras la opción \"-u\"."
@@ -5448,9 +6179,6 @@ msgstr "lpadmin: Se esperaba(n) tipo(s) de archivo(s) tras la opción \"-l\"."
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr "lpadmin: Se esperaba un nombre de equipo tras la opción \"-h\"."
 
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr "lpadmin: Se esperaba una interfaz tras la opción \"-i\"."
-
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: Se esperaba una ubicación tras la opción \"-L\"."
 
@@ -5507,11 +6235,12 @@ msgid ""
 "         You must specify a printer name first."
 msgstr ""
 "lpadmin: No se ha podido borrar la opción:\n"
-"         Primero debe especificar un nombre de impresora."
+"         Debe especificar un nombre de impresora primero."
 
 #, c-format
 msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
 msgstr ""
+"lpadmin: No se ha podido abrir el archivo PPD: \"%s\": %s en la línea %d."
 
 #, c-format
 msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
@@ -5522,14 +6251,14 @@ msgid ""
 "         You must specify a printer name first."
 msgstr ""
 "lpadmin: No se ha podido quitar una impresora de la clase:\n"
-"         Primero debe especificar un nombre de impresora."
+"         Debe especificar un nombre de impresora primero."
 
 msgid ""
 "lpadmin: Unable to set the printer options:\n"
 "         You must specify a printer name first."
 msgstr ""
-"lpadmin: No se han podido establecer las opciones de impresora:\n"
-"         Primero debe especificar un nombre de impresora."
+"lpadmin: No se han podido establecer las opciones de la impresora:\n"
+"         Debe especificar un nombre de impresora primero."
 
 #, c-format
 msgid "lpadmin: Unknown allow/deny option \"%s\"."
@@ -5572,18 +6301,6 @@ msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr "lpinfo: Se esperaba un tiempo de espera tras \"--timeout\"."
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr "lpinfo: Argumento \"%s\" desconocido."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr "lpinfo: Opción \"%c\" desconocida."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr "lpinfo: Opción \"%s\" desconocida."
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: No se ha podido conectar al servidor: %s"
 
@@ -5591,10 +6308,6 @@ msgstr "lpmove: No se ha podido conectar al servidor: %s"
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: Argumento \"%s\" desconocido."
 
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr "lpmove: Opción \"%c\" desconocida."
-
 msgid "lpoptions: No printers."
 msgstr "lpoptions: No hay impresoras."
 
@@ -6063,7 +6776,7 @@ msgstr "la impresora %s está inactiva.  activada desde %s"
 
 #, c-format
 msgid "printer %s now printing %s-%d.  enabled since %s"
-msgstr "la impresora %s está imprimiendo %s-%d.  activada desde %s"
+msgstr "la impresora %s está ahora imprimiendo %s-%d.  activada desde %s"
 
 #, c-format
 msgid "printer %s/%s disabled since %s -"
@@ -6075,7 +6788,7 @@ msgstr "la impresora %s/%s está inactiva.  activada desde %s"
 
 #, c-format
 msgid "printer %s/%s now printing %s-%d.  enabled since %s"
-msgstr "la impresora %s/%s está imprimiendo %s-%d.  activada desde %s"
+msgstr "la impresora %s/%s está ahora imprimiendo %s-%d.  activada desde %s"
 
 msgid "processing"
 msgstr "en proceso"
@@ -6120,12 +6833,26 @@ msgstr "sin título"
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings usa una longitud indefinida"
 
-#~ msgid "Looking for printer."
-#~ msgstr "Buscando impresora."
+#~ msgid "CD/DVD/Bluray"
+#~ msgstr "CD/DVD/Bluray"
+
+#~ msgid "Glossy Photo"
+#~ msgstr "Foto brillante"
+
+#~ msgid "High-Gloss Photo"
+#~ msgstr "Foto de alto brillo"
+
+#~ msgid "Label"
+#~ msgstr "Etiqueta"
+
+#~ msgid "Looking for printer..."
+#~ msgstr "Buscando impresora..."
+
+#~ msgid "Matte Photo"
+#~ msgstr "Foto mate"
+
+#~ msgid "Satin Photo"
+#~ msgstr "Foto satinada"
 
-#~ msgid ""
-#~ "The '%s' Job Description attribute cannot be supplied in a job creation "
-#~ "request."
-#~ msgstr ""
-#~ "El atributo de descripción de trabajo '%s' no puede ser suministrado en "
-#~ "una solicitud de creación de trabajo."
+#~ msgid "Semi-Gloss Photo"
+#~ msgstr "Foto semi brillante"
index 385fe0e..40ac9eb 100644 (file)
@@ -29,7 +29,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
+"POT-Creation-Date: 2016-08-30 16:00-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"
@@ -98,10 +98,6 @@ msgid "\tInterface: %s.ppd"
 msgstr ""
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr ""
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr ""
 
@@ -835,7 +831,7 @@ msgstr ""
 msgid "  --host regex            Match hostname to regular expression."
 msgstr ""
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
 msgstr ""
 
 msgid "  --list-filters          List filters that will be used."
@@ -971,9 +967,6 @@ msgstr ""
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 
-msgid "  -a                      Browse for all services."
-msgstr ""
-
 msgid "  -a                      Export all printers."
 msgstr ""
 
@@ -989,9 +982,6 @@ msgstr ""
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr ""
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr ""
-
 msgid "  -d name=value           Set named variable to value."
 msgstr ""
 
@@ -1079,9 +1069,6 @@ msgstr ""
 msgid "  -p filename.ppd         Set PPD file."
 msgstr ""
 
-msgid "  -p program              Run specified program for each service."
-msgstr ""
-
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 
@@ -1097,6 +1084,9 @@ msgstr ""
 msgid "  -s                      Print service name if true."
 msgstr ""
 
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
 msgid "  -t                      Produce a test report."
 msgstr ""
 
@@ -1112,9 +1102,6 @@ msgstr ""
 msgid "  -t title                Set title."
 msgstr ""
 
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr ""
-
 msgid "  -u                      Remove the PPD file when finished."
 msgstr ""
 
@@ -1493,6 +1480,10 @@ msgid "%s: Error - cannot print from stdin if files or a job ID are provided."
 msgstr ""
 
 #, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr ""
+
+#, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr ""
 
@@ -1699,6 +1690,10 @@ msgid "%s: Unable to resolve \"%s\"."
 msgstr ""
 
 #, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr ""
 
@@ -1984,6 +1979,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 po/s"
 
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "2-Sided Printing"
 msgstr "Impression recto-verso"
 
@@ -2098,6 +2105,18 @@ msgstr "3 po/s"
 msgid "3 x 5"
 msgstr ""
 
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "3.00x1.00\""
 msgstr "3,00 x 1,00\""
 
@@ -2164,6 +2183,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 po/s"
 
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "4.00x1.00\""
 msgstr "4,00 x 1,00\""
 
@@ -2460,6 +2491,9 @@ msgstr "Accepter les tâches"
 msgid "Accepted"
 msgstr "Accepté"
 
+msgid "Accordian Fold"
+msgstr ""
+
 msgid "Add Class"
 msgstr "Ajouter une classe"
 
@@ -2475,6 +2509,15 @@ msgstr "Adresse"
 msgid "Administration"
 msgstr "Administration"
 
+msgid "Alternate"
+msgstr ""
+
+msgid "Alternate Roll"
+msgstr ""
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "Toujours"
 
@@ -2484,14 +2527,31 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "Applicator"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr ""
 
+msgid "Automatic"
+msgstr ""
+
 msgid "B0"
 msgstr "B0"
 
@@ -2528,6 +2588,9 @@ msgstr "B8"
 msgid "B9"
 msgstr "B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr ""
@@ -2547,6 +2610,9 @@ msgstr "OrderDependency erroné"
 msgid "Bad PPD cache file."
 msgstr ""
 
+msgid "Bad PPD file."
+msgstr ""
+
 msgid "Bad Request"
 msgstr ""
 
@@ -2672,19 +2738,49 @@ msgstr ""
 msgid "Bad/empty URI"
 msgstr ""
 
+msgid "Bale"
+msgstr ""
+
 msgid "Banners"
 msgstr "Bannières"
 
+msgid "Bind"
+msgstr ""
+
+msgid "Bind (Landscape)"
+msgstr ""
+
+msgid "Bind (Portrait)"
+msgstr ""
+
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "Papier pour titres"
 
+msgid "Booklet Maker"
+msgstr ""
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr ""
 
+msgid "Bottom"
+msgstr ""
+
 msgid "Buffer overflow detected, aborting."
 msgstr ""
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMJN"
 
@@ -2700,12 +2796,24 @@ msgstr "Annuler abonnement RSS"
 msgid "Canceling print job."
 msgstr ""
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
+msgstr ""
+
 msgid "Cassette"
 msgstr ""
 
+msgid "Center"
+msgstr ""
+
 msgid "Change Settings"
 msgstr "Modifier les paramètres"
 
@@ -2722,12 +2830,24 @@ msgstr "Nettoyer les têtes d’impression"
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr ""
 
+msgid "Coat"
+msgstr ""
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
+msgstr ""
+
 msgid "Color"
 msgstr "Couleur"
 
 msgid "Color Mode"
 msgstr "Mode de couleur"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -2749,15 +2869,33 @@ msgstr "Continuer"
 msgid "Continuous"
 msgstr "Continu"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr ""
 
 msgid "Copying print data."
 msgstr ""
 
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
 msgid "Created"
 msgstr "Créé"
 
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
+
 msgid "Custom"
 msgstr "Personnalisation"
 
@@ -2770,9 +2908,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "Couper"
 
+msgid "Cut Media"
+msgstr ""
+
 msgid "Cutter"
 msgstr "Cutter"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "Foncé"
 
@@ -2831,10 +2975,37 @@ msgstr ""
 msgid "Disabled"
 msgstr "Désactivé"
 
+msgid "Disc"
+msgstr ""
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr ""
 
+msgid "Double Gate Fold"
+msgstr ""
+
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dry Film"
+msgstr ""
+
 msgid "Duplexer"
 msgstr "Duplexeur"
 
@@ -2850,12 +3021,18 @@ msgstr "Imprimante pour étiquettes EPL2"
 msgid "Edit Configuration File"
 msgstr "Modifier le fichier de configuration"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr ""
 
 msgid "Encryption is not supported."
 msgstr ""
 
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Fin de la bannière"
@@ -2869,7 +3046,10 @@ msgid ""
 "valid Kerberos ticket."
 msgstr ""
 
-msgid "Envelope #10 "
+msgid "Envelope"
+msgstr ""
+
+msgid "Envelope #10"
 msgstr ""
 
 msgid "Envelope #11"
@@ -2959,7 +3139,7 @@ msgstr ""
 msgid "Envelope Monarch"
 msgstr ""
 
-msgid "Envelope PRC1 "
+msgid "Envelope PRC1"
 msgstr ""
 
 msgid "Envelope PRC1 Long Edge"
@@ -3091,6 +3271,9 @@ msgstr ""
 msgid "FAIL"
 msgstr ""
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr ""
 
@@ -3100,6 +3283,9 @@ msgstr ""
 msgid "Fanfold US"
 msgstr ""
 
+msgid "Fast Grayscale"
+msgstr ""
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr ""
@@ -3120,7 +3306,7 @@ msgstr ""
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr ""
 
-msgid "File Folder "
+msgid "File Folder"
 msgstr ""
 
 #, c-format
@@ -3129,16 +3315,46 @@ msgid ""
 "in \"%s/cups-files.conf\"."
 msgstr ""
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
 msgstr ""
 
+msgid "Finishing"
+msgstr ""
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
+msgstr ""
+
 msgid "Folio"
 msgstr "Folio"
 
 msgid "Forbidden"
 msgstr ""
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr ""
+
 msgid "General"
 msgstr ""
 
@@ -3148,24 +3364,87 @@ msgstr "Générique"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Get-Response-PDU s’avère être de longueur indéfinie"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
 msgstr "Papier brillant"
 
+msgid "Glossy Photo Paper"
+msgstr ""
+
 msgid "Got a printer-uri attribute but no job-id."
 msgstr ""
 
+msgid "Gravure Cylinder"
+msgstr ""
+
 msgid "Grayscale"
 msgstr "Niveaux de gris"
 
 msgid "HP"
 msgstr "HP"
 
+msgid "Hagaki"
+msgstr ""
+
+msgid "Half Fold"
+msgstr ""
+
+msgid "Half Z Fold"
+msgstr ""
+
 msgid "Hanging Folder"
 msgstr "Dossier suspendu"
 
+msgid "Hash buffer too small."
+msgstr ""
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
 msgid "Help file not in index."
 msgstr ""
 
+msgid "High"
+msgstr ""
+
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+msgid "High Gloss Photo Paper"
+msgstr ""
+
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr ""
 
@@ -3253,6 +3532,18 @@ msgstr "Traduction interdite"
 msgid "Illegal whitespace character"
 msgstr "Caractère « espace blanc » interdit"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "Options installables"
 
@@ -3286,6 +3577,9 @@ msgstr ""
 msgid "Invalid media size."
 msgstr ""
 
+msgid "Invalid ppd-name value."
+msgstr ""
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr ""
@@ -3398,6 +3692,9 @@ msgstr ""
 msgid "Jobs"
 msgstr "Tâches"
 
+msgid "Jog"
+msgstr ""
+
 msgid "LPD/LPR Host or Printer"
 msgstr "Hôte ou imprimante LPD/LPR"
 
@@ -3407,6 +3704,15 @@ msgstr "Imprimante pour étiquettes"
 msgid "Label Top"
 msgstr "Étiquette supérieure"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr ""
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr ""
@@ -3414,18 +3720,39 @@ msgstr ""
 msgid "Large Address"
 msgstr "Adresse étendue"
 
+msgid "Large Capacity"
+msgstr ""
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet série PCL 4/5"
 
+msgid "Left"
+msgstr ""
+
+msgid "Left Gate Fold"
+msgstr ""
+
+msgid "Letter Fold"
+msgstr ""
+
 msgid "Letter Oversize"
 msgstr ""
 
 msgid "Letter Oversize Long Edge"
 msgstr ""
 
+msgid "Letterhead"
+msgstr ""
+
 msgid "Light"
 msgstr "Clair"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Ligne dépassant la longueur maximale autorisée (255 caractères)"
 
@@ -3435,26 +3762,50 @@ msgstr ""
 msgid "Load paper."
 msgstr ""
 
+msgid "Local printer created."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Bord le plus long (Portrait)"
 
-msgid "Looking for printer..."
+msgid "Looking for printer."
 msgstr ""
 
-msgid "Manual Feed"
+msgid "Main"
 msgstr ""
 
-msgid "Media Size"
-msgstr "Taille du papier"
+msgid "Main Roll"
+msgstr ""
 
-msgid "Media Source"
-msgstr "Source du papier"
+msgid "Manual"
+msgstr ""
 
-msgid "Media Tracking"
-msgstr "Crénage du papier"
+msgid "Manual Feed"
+msgstr ""
 
-msgid "Media Type"
-msgstr "Type de papier"
+msgid "Matte Fabric"
+msgstr ""
+
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
+msgid "Media Size"
+msgstr "Taille du papier"
+
+msgid "Media Source"
+msgstr "Source du papier"
+
+msgid "Media Tracking"
+msgstr "Crénage du papier"
+
+msgid "Media Type"
+msgstr "Type de papier"
 
 msgid "Medium"
 msgstr "Moyen"
@@ -3462,6 +3813,27 @@ msgstr "Moyen"
 msgid "Memory allocation error"
 msgstr "Erreur d’allocation de mémoire"
 
+msgid "Metal"
+msgstr ""
+
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr ""
+
 msgid "Missing CloseGroup"
 msgstr ""
 
@@ -3499,6 +3871,10 @@ msgstr ""
 msgid "Missing requesting-user-name attribute."
 msgstr ""
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
 msgid "Missing required attributes."
 msgstr ""
 
@@ -3538,6 +3914,9 @@ msgstr "Modifier la classe"
 msgid "Modify Printer"
 msgstr "Modifier l’imprimante"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "Transférer toutes les tâches"
 
@@ -3547,6 +3926,15 @@ msgstr "Transférer la tâche"
 msgid "Moved Permanently"
 msgstr "Transférées de façon permanente"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr ""
+
 msgid "NULL PPD file pointer"
 msgstr "Pointeur de fichier PPD NULL."
 
@@ -3559,12 +3947,21 @@ msgstr ""
 msgid "Never"
 msgstr "Jamais"
 
+msgid "New credentials are not valid for name."
+msgstr ""
+
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
 msgid "No"
 msgstr "Non"
 
 msgid "No Content"
 msgstr "Aucun contenu"
 
+msgid "No Finishing"
+msgstr ""
+
 msgid "No PPD name"
 msgstr ""
 
@@ -3590,6 +3987,9 @@ msgstr ""
 msgid "No authentication information provided."
 msgstr ""
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "Aucun nom de communauté"
 
@@ -3644,6 +4044,9 @@ msgstr ""
 msgid "No request-id"
 msgstr "Paramètre request-id absent"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr ""
 
@@ -3703,6 +4106,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "Aide en ligne"
 
+msgid "Only local users can create a local printer."
+msgstr ""
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "L’ouverture de %s a échoué : %s"
@@ -3716,6 +4122,9 @@ msgstr "OpenUI/JCLOpenUI sans CloseUI/JCLCloseUI préalable"
 msgid "Operation Policy"
 msgstr "Règles de fonctionnement"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr ""
@@ -3726,6 +4135,9 @@ msgstr "Options installées"
 msgid "Options:"
 msgstr "Options"
 
+msgid "Other"
+msgstr ""
+
 msgid "Out of date PPD cache file."
 msgstr ""
 
@@ -3774,6 +4186,9 @@ msgstr "Le paquet ne contient aucun paramètre Get-Response-PDU"
 msgid "Packet does not start with SEQUENCE"
 msgstr "Le paquet ne commence pas par SEQUENCE"
 
+msgid "Paper"
+msgstr ""
+
 msgid "Paper jam."
 msgstr ""
 
@@ -3786,6 +4201,9 @@ msgstr ""
 msgid "Paper tray is missing."
 msgstr ""
 
+msgid "Parallel Fold"
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -3809,18 +4227,63 @@ msgstr "Suspendre l’imprimante"
 msgid "Peel-Off"
 msgstr "Décoller"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "Photo"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "Étiquettes photo"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr ""
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "Règles"
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "Moniteur de port"
 
@@ -3830,7 +4293,7 @@ msgstr "Imprimante PostScript"
 msgid "Postcard"
 msgstr "Carte postale"
 
-msgid "Postcard Double "
+msgid "Postcard Double"
 msgstr ""
 
 msgid "Postcard Double Long Edge"
@@ -3839,9 +4302,21 @@ msgstr ""
 msgid "Postcard Long Edge"
 msgstr ""
 
+msgid "Poster Fold"
+msgstr ""
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
 msgstr ""
 
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
+msgstr ""
+
 msgid "Print Density"
 msgstr "Densité d’impression"
 
@@ -3851,6 +4326,9 @@ msgstr "Tâche d’impression :"
 msgid "Print Mode"
 msgstr "Mode d’impression"
 
+msgid "Print Quality"
+msgstr ""
+
 msgid "Print Rate"
 msgstr "aux d’impression"
 
@@ -3881,6 +4359,10 @@ msgstr ""
 msgid "Print job was not accepted."
 msgstr ""
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "ajoutée"
 
@@ -3915,6 +4397,12 @@ msgstr ""
 msgid "Printing page %d, %u%% complete."
 msgstr ""
 
+msgid "Punch"
+msgstr ""
+
+msgid "Punched Paper"
+msgstr ""
+
 msgid "Quarto"
 msgstr "Quarto"
 
@@ -3924,6 +4412,9 @@ msgstr ""
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 
+msgid "Rear"
+msgstr ""
+
 msgid "Reject Jobs"
 msgstr "Refuser les tâches"
 
@@ -3956,6 +4447,45 @@ msgstr "Renvoyer l’adresse"
 msgid "Rewind"
 msgstr "Rembobiner"
 
+msgid "Right"
+msgstr ""
+
+msgid "Right Gate Fold"
+msgstr ""
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr ""
+
+msgid "Roll 10"
+msgstr ""
+
+msgid "Roll 2"
+msgstr ""
+
+msgid "Roll 3"
+msgstr ""
+
+msgid "Roll 4"
+msgstr ""
+
+msgid "Roll 5"
+msgstr ""
+
+msgid "Roll 6"
+msgstr ""
+
+msgid "Roll 7"
+msgstr ""
+
+msgid "Roll 8"
+msgstr ""
+
+msgid "Roll 9"
+msgstr ""
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr ""
@@ -3966,9 +4496,54 @@ msgstr "SEQUENCE s’avère être de longueur indéfinie"
 msgid "SSL/TLS Negotiation Error"
 msgstr ""
 
+msgid "Saddle Stitch"
+msgstr ""
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "Autres"
 
+msgid "See remote printer."
+msgstr ""
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr ""
 
@@ -4011,6 +4586,45 @@ msgstr "Adresse de livraison"
 msgid "Short-Edge (Landscape)"
 msgstr "Bord le plus court (paysage)"
 
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr ""
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Staple (Landscape)"
+msgstr ""
+
+msgid "Single Staple (Portrait)"
+msgstr ""
+
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Wall Cardboard"
+msgstr ""
+
+msgid "Sleeve"
+msgstr ""
+
 msgid "Special Paper"
 msgstr "Papier spécial"
 
@@ -4021,6 +4635,24 @@ msgstr ""
 msgid "Standard"
 msgstr "Standard"
 
+msgid "Staple"
+msgstr ""
+
+msgid "Staple Edge"
+msgstr ""
+
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "Début de la bannière"
@@ -4032,6 +4664,21 @@ msgstr ""
 msgid "Statement"
 msgstr "Déclaration"
 
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
+
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr ""
@@ -4051,6 +4698,9 @@ msgstr "Super B/A3"
 msgid "Switching Protocols"
 msgstr "Permuter les protocoles"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "Tabloïd"
 
@@ -4258,6 +4908,15 @@ msgstr ""
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr ""
 
+msgid "Top"
+msgstr ""
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
+msgstr ""
+
 msgid "Transparency"
 msgstr "Transparence"
 
@@ -4267,15 +4926,81 @@ msgstr "Bac"
 msgid "Tray 1"
 msgstr "Bac 1"
 
+msgid "Tray 10"
+msgstr ""
+
+msgid "Tray 11"
+msgstr ""
+
+msgid "Tray 12"
+msgstr ""
+
+msgid "Tray 13"
+msgstr ""
+
+msgid "Tray 14"
+msgstr ""
+
+msgid "Tray 15"
+msgstr ""
+
+msgid "Tray 16"
+msgstr ""
+
+msgid "Tray 17"
+msgstr ""
+
+msgid "Tray 18"
+msgstr ""
+
+msgid "Tray 19"
+msgstr ""
+
 msgid "Tray 2"
 msgstr "Bac 2"
 
+msgid "Tray 20"
+msgstr ""
+
 msgid "Tray 3"
 msgstr "Bac 3"
 
 msgid "Tray 4"
 msgstr "Bac 4"
 
+msgid "Tray 5"
+msgstr ""
+
+msgid "Tray 6"
+msgstr ""
+
+msgid "Tray 7"
+msgstr ""
+
+msgid "Tray 8"
+msgstr ""
+
+msgid "Tray 9"
+msgstr ""
+
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "URI trop long"
 
@@ -4396,13 +5121,15 @@ msgstr ""
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 
-#, c-format
-msgid "Unable to copy interface script - %s"
+msgid "Unable to create credentials from array."
 msgstr ""
 
 msgid "Unable to create printer-uri"
 msgstr ""
 
+msgid "Unable to create printer."
+msgstr ""
+
 msgid "Unable to create server credentials."
 msgstr ""
 
@@ -4612,6 +5339,9 @@ msgstr ""
 msgid "Unknown format character: \"%c\"."
 msgstr ""
 
+msgid "Unknown hash algorithm."
+msgstr ""
+
 msgid "Unknown media size name."
 msgstr ""
 
@@ -4744,13 +5474,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-
-msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
 "       ippfind --help\n"
@@ -4799,6 +5522,9 @@ msgstr "La valeur s’avère être de longueur indéfinie"
 msgid "VarBind uses indefinite length"
 msgstr "VarBind s’avère être de longueur indéfinie"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "La version s’avère être de longueur indéfinie"
 
@@ -4814,9 +5540,18 @@ msgstr ""
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr ""
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr ""
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "Oui"
 
@@ -4828,6 +5563,9 @@ msgstr ""
 "Vous devez accéder à cette page par l’URL <A HREF=\"https://%s:%d%s"
 "\">https://%s:%d%s</A>."
 
+msgid "Z Fold"
+msgstr ""
+
 msgid "ZPL Label Printer"
 msgstr "Imprimante pour étiquettes ZPL"
 
@@ -5052,7 +5790,8 @@ msgstr ""
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr ""
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
 msgstr ""
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
@@ -5076,9 +5815,6 @@ msgstr ""
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr ""
 
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr ""
-
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr ""
 
@@ -5189,18 +5925,6 @@ msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr ""
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr ""
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr ""
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr ""
 
@@ -5208,10 +5932,6 @@ msgstr ""
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr ""
 
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr ""
-
 msgid "lpoptions: No printers."
 msgstr ""
 
index 1a2ae3f..5f055b1 100644 (file)
@@ -29,7 +29,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 1.6\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
+"POT-Creation-Date: 2016-08-30 16:00-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"
@@ -98,10 +98,6 @@ msgid "\tInterface: %s.ppd"
 msgstr "\tInterfaccia: %s.ppd"
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr "\tInterfaccia: %s/interfacce/%s"
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tInterfaccia: %s/ppd/%s.ppd"
 
@@ -985,8 +981,8 @@ msgstr ""
 "  --host regex            Corrispondenza dell'hostname con l'espressione "
 "regolare."
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
-msgstr "  --lf                    Termina le righe con LF (UNIX/Linux/OS X)."
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
+msgstr ""
 
 msgid "  --list-filters          List filters that will be used."
 msgstr ""
@@ -1144,9 +1140,6 @@ msgid "  -X                      Produce XML plist instead of plain text."
 msgstr ""
 "  -X                      Produce una plist XML invece di un testo normale."
 
-msgid "  -a                      Browse for all services."
-msgstr "  -a                      Mostra tutti i servizi."
-
 msgid "  -a                      Export all printers."
 msgstr "  -a                      Esporta tutte le stampanti."
 
@@ -1163,9 +1156,6 @@ msgstr ""
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cupsd.conf           Imposta il file cupsd.conf da utilizzare."
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr "  -d domain               Mostra/risolve il dominio specificato."
-
 msgid "  -d name=value           Set named variable to value."
 msgstr "  -d name=value           Imposta la variabile specificata al valore."
 
@@ -1269,10 +1259,6 @@ msgstr "  -p                      Stampa l'URI se vero."
 msgid "  -p filename.ppd         Set PPD file."
 msgstr "  -p filename.ppd         Imposta il file PPD."
 
-msgid "  -p program              Run specified program for each service."
-msgstr ""
-"  -p program              Avvia il programma specificato per ogni servizio."
-
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 "  -q                      Riporta silenziosamente la corrispondenza tramite "
@@ -1290,6 +1276,9 @@ msgstr "  -r                      Utilizza la modalità di apertura 'relaxed'."
 msgid "  -s                      Print service name if true."
 msgstr "  -s                      Stampa il nome del servizio se è vero."
 
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      Produce un rapporto di prova."
 
@@ -1305,9 +1294,6 @@ msgstr "  -t key                  Vero se il record di TXT contiene la chiave."
 msgid "  -t title                Set title."
 msgstr "  -t title                Imposta il titolo."
 
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr "  -t type                 Mostra/risolve con il tipo specificato."
-
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      Rimuove il file PPD una volta terminato."
 
@@ -1751,6 +1737,10 @@ msgstr ""
 "un ID del processo."
 
 #, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr ""
+
+#, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr "%s: errore - è previsto un set di caratteri dopo l'opzione \"-S\"."
 
@@ -1963,6 +1953,10 @@ msgid "%s: Unable to resolve \"%s\"."
 msgstr ""
 
 #, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr "%s: destinazione sconosciuta \"%s\"."
 
@@ -2250,6 +2244,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 inches/sec."
 
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "2-Sided Printing"
 msgstr "2-Sided Printing"
 
@@ -2364,6 +2370,18 @@ msgstr "3 inches/sec."
 msgid "3 x 5"
 msgstr "3 x 5"
 
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "3.00x1.00\""
 msgstr "3.00x1.00\""
 
@@ -2430,6 +2448,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 inches/sec."
 
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "4.00x1.00\""
 msgstr "4.00x1.00\""
 
@@ -2728,6 +2758,9 @@ msgstr "Accetta le stampe"
 msgid "Accepted"
 msgstr "Accettato"
 
+msgid "Accordian Fold"
+msgstr ""
+
 msgid "Add Class"
 msgstr "Aggiungi una classe"
 
@@ -2743,6 +2776,15 @@ msgstr "Indirizzo"
 msgid "Administration"
 msgstr "Amministrazione"
 
+msgid "Alternate"
+msgstr ""
+
+msgid "Alternate Roll"
+msgstr ""
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "Sempre"
 
@@ -2752,14 +2794,31 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "Applicatore"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr "Tentativo di impostare %s printer-state al valore non valido %d."
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "I gruppi degli attributi sono fuori uso (%x < %x)."
 
+msgid "Automatic"
+msgstr ""
+
 msgid "B0"
 msgstr "B0"
 
@@ -2796,6 +2855,9 @@ msgstr "B8"
 msgid "B9"
 msgstr "B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr "Il valore di 'document-format' non è valido \"%s\"."
@@ -2815,6 +2877,9 @@ msgstr "OrderDependency non è valido"
 msgid "Bad PPD cache file."
 msgstr "Il file della cache del PPD non è valido."
 
+msgid "Bad PPD file."
+msgstr ""
+
 msgid "Bad Request"
 msgstr "La richiesta non è valida"
 
@@ -2940,19 +3005,49 @@ msgstr "La stringa ha un valore che non è valido"
 msgid "Bad/empty URI"
 msgstr ""
 
+msgid "Bale"
+msgstr ""
+
 msgid "Banners"
 msgstr "Banner"
 
+msgid "Bind"
+msgstr ""
+
+msgid "Bind (Landscape)"
+msgstr ""
+
+msgid "Bind (Portrait)"
+msgstr ""
+
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "Carta per scrivere"
 
+msgid "Booklet Maker"
+msgstr ""
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "È previsto un valore booleano per l'opzione waiteof \"%s\"."
 
+msgid "Bottom"
+msgstr ""
+
 msgid "Buffer overflow detected, aborting."
 msgstr "È stato individuato un buffer overflow, operazione annullata."
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMYK"
 
@@ -2968,12 +3063,24 @@ msgstr "Eliminare l'abbonamento RSS"
 msgid "Canceling print job."
 msgstr "Eliminazione del processo di stampa in corso."
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
 msgid "Cannot share a remote Kerberized printer."
 msgstr "Non è possibile condividere una stampante remota kerberizzata."
 
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
+msgstr ""
+
 msgid "Cassette"
 msgstr "Caricatore"
 
+msgid "Center"
+msgstr ""
+
 msgid "Change Settings"
 msgstr "Modifica le impostazioni"
 
@@ -2990,12 +3097,24 @@ msgstr "Pulisci le testine della stampante"
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job non supporta l'attributo job-uri."
 
+msgid "Coat"
+msgstr ""
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
+msgstr ""
+
 msgid "Color"
 msgstr "Colore"
 
 msgid "Color Mode"
 msgstr "Modalità colore"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -3020,15 +3139,33 @@ msgstr "Continua"
 msgid "Continuous"
 msgstr "Continuo"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr "Il file del controllo è stato inviato con successo."
 
 msgid "Copying print data."
 msgstr "Copia dei dati di stampa in corso."
 
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
 msgid "Created"
 msgstr "Creato"
 
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
+
 msgid "Custom"
 msgstr "Personalizzato"
 
@@ -3041,9 +3178,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "Taglia"
 
+msgid "Cut Media"
+msgstr ""
+
 msgid "Cutter"
 msgstr "Taglierino"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "Scuro"
 
@@ -3109,10 +3252,37 @@ msgstr "Directory \"%s\" permessi OK (0%o/uid=%d/gid=%d)."
 msgid "Disabled"
 msgstr "Disabilitato"
 
+msgid "Disc"
+msgstr ""
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "Il documento #%d non esiste nel processo #%d."
 
+msgid "Double Gate Fold"
+msgstr ""
+
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dry Film"
+msgstr ""
+
 msgid "Duplexer"
 msgstr "Duplexer"
 
@@ -3128,12 +3298,18 @@ msgstr "EPL2 Label Printer"
 msgid "Edit Configuration File"
 msgstr "Edita il file di configurazione"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr "Il file PPD è vuoto."
 
 msgid "Encryption is not supported."
 msgstr ""
 
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Termine del banner"
@@ -3150,8 +3326,11 @@ msgstr ""
 "per accedere a questa pagina. Se si utilizza l'autenticazione Kerberos, "
 "assicurarsi di disporre di un ticket di Kerberos valido."
 
-msgid "Envelope #10 "
-msgstr "Envelope #10"
+msgid "Envelope"
+msgstr ""
+
+msgid "Envelope #10"
+msgstr ""
 
 msgid "Envelope #11"
 msgstr "Envelope #11"
@@ -3240,8 +3419,8 @@ msgstr "Envelope Kaku3 Long Edge"
 msgid "Envelope Monarch"
 msgstr "Envelope Monarch"
 
-msgid "Envelope PRC1 "
-msgstr "Envelope PRC1 "
+msgid "Envelope PRC1"
+msgstr ""
 
 msgid "Envelope PRC1 Long Edge"
 msgstr "Envelope PRC1 Long Edge"
@@ -3372,6 +3551,9 @@ msgstr "Espressioni:"
 msgid "FAIL"
 msgstr "OPERAZIONE NON RIUSCITA CORRETTAMENTE"
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr "FanFold German"
 
@@ -3381,6 +3563,9 @@ msgstr "FanFold Legal German"
 msgid "Fanfold US"
 msgstr "FanFold US"
 
+msgid "Fast Grayscale"
+msgstr ""
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "Il file \"%s\" contiene un path relativo."
@@ -3401,8 +3586,8 @@ msgstr "Il file \"%s\" non è disponibile: %s"
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "File \"%s\" permessi OK (0%o/uid=%d/gid=%d)."
 
-msgid "File Folder "
-msgstr "Directory del file"
+msgid "File Folder"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -3412,16 +3597,46 @@ msgstr ""
 "I file del dispositivo URI sono stati disabilitati. Per abilitare, vedere la "
 "direttiva FileDevice in \"%s/cups-files.conf\"."
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
 msgstr "Finito pagina %d."
 
+msgid "Finishing"
+msgstr ""
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
+msgstr ""
+
 msgid "Folio"
 msgstr "Foglio"
 
 msgid "Forbidden"
 msgstr "Vietato"
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr ""
+
 msgid "General"
 msgstr "Generale"
 
@@ -3431,24 +3646,87 @@ msgstr "Generico"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Get-Response-PDU utilizza una lunghezza indefinita"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
 msgstr "Carta lucida"
 
+msgid "Glossy Photo Paper"
+msgstr ""
+
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "Esiste un attributo printer-uri ma nessun job-id."
 
+msgid "Gravure Cylinder"
+msgstr ""
+
 msgid "Grayscale"
 msgstr "Scala di grigi"
 
 msgid "HP"
 msgstr "HP"
 
+msgid "Hagaki"
+msgstr ""
+
+msgid "Half Fold"
+msgstr ""
+
+msgid "Half Z Fold"
+msgstr ""
+
 msgid "Hanging Folder"
 msgstr "Directory appesa"
 
+msgid "Hash buffer too small."
+msgstr ""
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
 msgid "Help file not in index."
 msgstr "Il file di aiuto non è nell'indice."
 
+msgid "High"
+msgstr ""
+
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+msgid "High Gloss Photo Paper"
+msgstr ""
+
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr "L'attributo IPP 1setOf con tag di valore incompatibile."
 
@@ -3536,6 +3814,18 @@ msgstr "La stringa della traduzione è illegale"
 msgid "Illegal whitespace character"
 msgstr "Il carattere spazio è illegale"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "Opzioni installabili"
 
@@ -3569,6 +3859,9 @@ msgstr "Gli argomenti del nome del supporto non sono validi."
 msgid "Invalid media size."
 msgstr "La dimensione del supporto non è valida."
 
+msgid "Invalid ppd-name value."
+msgstr ""
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "Il comando della stampante non è valido \"%s\"."
@@ -3681,6 +3974,9 @@ msgstr "Le sottoscrizioni del processo non possono essere rinnovate."
 msgid "Jobs"
 msgstr "Stampe"
 
+msgid "Jog"
+msgstr ""
+
 msgid "LPD/LPR Host or Printer"
 msgstr "LPD/LPR Host o stampante"
 
@@ -3690,6 +3986,15 @@ msgstr "Label Printer"
 msgid "Label Top"
 msgstr "Label Top"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr ""
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "La lingua \"%s\" non è supportata."
@@ -3697,18 +4002,39 @@ msgstr "La lingua \"%s\" non è supportata."
 msgid "Large Address"
 msgstr "Large Address"
 
+msgid "Large Capacity"
+msgstr ""
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Series PCL 4/5"
 
+msgid "Left"
+msgstr ""
+
+msgid "Left Gate Fold"
+msgstr ""
+
+msgid "Letter Fold"
+msgstr ""
+
 msgid "Letter Oversize"
 msgstr "Letter Oversize"
 
 msgid "Letter Oversize Long Edge"
 msgstr "Letter Oversize Long Edge"
 
+msgid "Letterhead"
+msgstr ""
+
 msgid "Light"
 msgstr "Luce"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Linea più lunga di quella massima consentita (255 caratteri)"
 
@@ -3718,15 +4044,39 @@ msgstr "Elenco delle stampanti disponibili"
 msgid "Load paper."
 msgstr ""
 
+msgid "Local printer created."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Long-Edge (Portrait)"
 
-msgid "Looking for printer..."
+msgid "Looking for printer."
+msgstr "Cerca una stampante."
+
+msgid "Main"
+msgstr ""
+
+msgid "Main Roll"
+msgstr ""
+
+msgid "Manual"
 msgstr ""
 
 msgid "Manual Feed"
 msgstr "Alimentazione manuale"
 
+msgid "Matte Fabric"
+msgstr ""
+
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
 msgid "Media Size"
 msgstr "Dimensione del supporto"
 
@@ -3745,6 +4095,27 @@ msgstr "Supporto"
 msgid "Memory allocation error"
 msgstr "Errore di allocazione della memoria"
 
+msgid "Metal"
+msgstr ""
+
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr ""
+
 msgid "Missing CloseGroup"
 msgstr "Manca CloseGroup"
 
@@ -3782,6 +4153,10 @@ msgstr "Manca la parola chiave dell'opzione"
 msgid "Missing requesting-user-name attribute."
 msgstr "Manca l'attributo di requesting-user-name."
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
 msgid "Missing required attributes."
 msgstr "Mancano gli attributi richiesti."
 
@@ -3825,6 +4200,9 @@ msgstr "Modifica la classe"
 msgid "Modify Printer"
 msgstr "Modifica la stampante"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "Sposta tutti le stampe"
 
@@ -3834,6 +4212,15 @@ msgstr "Sposta il processo"
 msgid "Moved Permanently"
 msgstr "Spostato in modo permanente"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr ""
+
 msgid "NULL PPD file pointer"
 msgstr "Puntatore del file PPD NULL"
 
@@ -3846,12 +4233,21 @@ msgstr "Le classi nidificate non sono consentite."
 msgid "Never"
 msgstr "Mai"
 
+msgid "New credentials are not valid for name."
+msgstr ""
+
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
 msgid "No"
 msgstr "No"
 
 msgid "No Content"
 msgstr "Nessun contenuto"
 
+msgid "No Finishing"
+msgstr ""
+
 msgid "No PPD name"
 msgstr "Nessun nome del PPD"
 
@@ -3877,6 +4273,9 @@ msgstr "Nessun attributo nella richiesta."
 msgid "No authentication information provided."
 msgstr "Nessuna informazione di autenticazione fornita."
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "Nessun nome della comunità"
 
@@ -3933,6 +4332,9 @@ msgstr ""
 msgid "No request-id"
 msgstr "Nessun request-id"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr "Nessun attributo della sottoscrizione nella richiesta."
 
@@ -3994,6 +4396,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "Guida in linea"
 
+msgid "Only local users can create a local printer."
+msgstr ""
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "L'apertura di %s non è andata a buon fine: %s"
@@ -4007,6 +4412,9 @@ msgstr "OpenUI/JCLOpenUI senza prima un CloseUI/JCLCloseUI"
 msgid "Operation Policy"
 msgstr "Policy dell'operazione"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "L'opzione \"%s\" non può essere inclusa tramite %%%%IncludeFeature."
@@ -4017,6 +4425,9 @@ msgstr "Opzioni installate"
 msgid "Options:"
 msgstr "Opzioni:"
 
+msgid "Other"
+msgstr ""
+
 msgid "Out of date PPD cache file."
 msgstr "Il file della cache del PPD non è aggiornato."
 
@@ -4065,6 +4476,9 @@ msgstr "Il pacchetto non contiene un Get-Response-PDU"
 msgid "Packet does not start with SEQUENCE"
 msgstr "Il pacchetto non inizia con SEQUENZA"
 
+msgid "Paper"
+msgstr ""
+
 msgid "Paper jam."
 msgstr ""
 
@@ -4077,6 +4491,9 @@ msgstr ""
 msgid "Paper tray is missing."
 msgstr ""
 
+msgid "Parallel Fold"
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4100,18 +4517,63 @@ msgstr "Metti in pausa la stampante"
 msgid "Peel-Off"
 msgstr "Peel-Off"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "Foto"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "Etichette delle foto"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr "Carta comune"
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "Policy"
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "Controllo della porta"
 
@@ -4121,8 +4583,8 @@ msgstr "Stampante PostScript"
 msgid "Postcard"
 msgstr "Postcard"
 
-msgid "Postcard Double "
-msgstr "Cartolina doppia "
+msgid "Postcard Double"
+msgstr ""
 
 msgid "Postcard Double Long Edge"
 msgstr "Postcard Double Long Edge"
@@ -4130,9 +4592,21 @@ msgstr "Postcard Double Long Edge"
 msgid "Postcard Long Edge"
 msgstr "Postcard Long Edge"
 
+msgid "Poster Fold"
+msgstr ""
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
 msgstr "Preparazione per la stampa."
 
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
+msgstr ""
+
 msgid "Print Density"
 msgstr "Densità di stampa"
 
@@ -4142,6 +4616,9 @@ msgstr "Processo di stampa:"
 msgid "Print Mode"
 msgstr "Modalità di stampa"
 
+msgid "Print Quality"
+msgstr ""
+
 msgid "Print Rate"
 msgstr "Velocità di stampa"
 
@@ -4172,6 +4649,10 @@ msgstr "Il processo di stampa è troppo grande."
 msgid "Print job was not accepted."
 msgstr "Il processo di stampa non è stato accettato."
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "La stampante è stata aggiunta"
 
@@ -4206,6 +4687,12 @@ msgstr "Stampanti"
 msgid "Printing page %d, %u%% complete."
 msgstr ""
 
+msgid "Punch"
+msgstr ""
+
+msgid "Punched Paper"
+msgstr ""
+
 msgid "Quarto"
 msgstr "Quarto"
 
@@ -4215,6 +4702,9 @@ msgstr "Il limite della quota è stato raggiunto."
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "Rank    Owner   Job     File(s)                         Total Size"
 
+msgid "Rear"
+msgstr ""
+
 msgid "Reject Jobs"
 msgstr "Stampe rifiutate"
 
@@ -4247,6 +4737,45 @@ msgstr "Ritorna l'indirizzo"
 msgid "Rewind"
 msgstr "Ricarica"
 
+msgid "Right"
+msgstr ""
+
+msgid "Right Gate Fold"
+msgstr ""
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr ""
+
+msgid "Roll 10"
+msgstr ""
+
+msgid "Roll 2"
+msgstr ""
+
+msgid "Roll 3"
+msgstr ""
+
+msgid "Roll 4"
+msgstr ""
+
+msgid "Roll 5"
+msgstr ""
+
+msgid "Roll 6"
+msgstr ""
+
+msgid "Roll 7"
+msgstr ""
+
+msgid "Roll 8"
+msgstr ""
+
+msgid "Roll 9"
+msgstr ""
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "Avvio in corso del comando: %s %s -N -A %s -c '%s'"
@@ -4257,9 +4786,54 @@ msgstr "SEQUENZA utilizza una lunghezza indefinita"
 msgid "SSL/TLS Negotiation Error"
 msgstr "Errore di negoziazione SSL/TLS"
 
+msgid "Saddle Stitch"
+msgstr ""
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "Vedi altro"
 
+msgid "See remote printer."
+msgstr ""
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr "Invio dei dati alla stampante."
 
@@ -4302,6 +4876,45 @@ msgstr "Indirizzo di spedizione"
 msgid "Short-Edge (Landscape)"
 msgstr "Short-Edge (Landscape)"
 
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr ""
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Staple (Landscape)"
+msgstr ""
+
+msgid "Single Staple (Portrait)"
+msgstr ""
+
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Wall Cardboard"
+msgstr ""
+
+msgid "Sleeve"
+msgstr ""
+
 msgid "Special Paper"
 msgstr "Carta speciale"
 
@@ -4312,6 +4925,24 @@ msgstr "Processo di spooling, %.0f%% completato."
 msgid "Standard"
 msgstr "Standard"
 
+msgid "Staple"
+msgstr ""
+
+msgid "Staple Edge"
+msgstr ""
+
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "Inizio del banner"
@@ -4323,6 +4954,21 @@ msgstr "Pagina iniziale %d."
 msgid "Statement"
 msgstr "Rapporto"
 
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
+
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr "La sottoscrizione #%d non esiste."
@@ -4342,6 +4988,9 @@ msgstr "Super B/A3"
 msgid "Switching Protocols"
 msgstr "Protocolli di commutazione"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "Tabloid"
 
@@ -4557,6 +5206,15 @@ msgstr "Troppi valori di job-sheets (%d > 2)."
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "Troppi valori di printer-state-reasons (%d > %d)."
 
+msgid "Top"
+msgstr ""
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
+msgstr ""
+
 msgid "Transparency"
 msgstr "Trasparenza"
 
@@ -4566,15 +5224,81 @@ msgstr "Vassoio"
 msgid "Tray 1"
 msgstr "Vassoio 1"
 
+msgid "Tray 10"
+msgstr ""
+
+msgid "Tray 11"
+msgstr ""
+
+msgid "Tray 12"
+msgstr ""
+
+msgid "Tray 13"
+msgstr ""
+
+msgid "Tray 14"
+msgstr ""
+
+msgid "Tray 15"
+msgstr ""
+
+msgid "Tray 16"
+msgstr ""
+
+msgid "Tray 17"
+msgstr ""
+
+msgid "Tray 18"
+msgstr ""
+
+msgid "Tray 19"
+msgstr ""
+
 msgid "Tray 2"
 msgstr "Vassoio 2"
 
+msgid "Tray 20"
+msgstr ""
+
 msgid "Tray 3"
 msgstr "Vassoio 3"
 
 msgid "Tray 4"
 msgstr "Vassoio 4"
 
+msgid "Tray 5"
+msgstr ""
+
+msgid "Tray 6"
+msgstr ""
+
+msgid "Tray 7"
+msgstr ""
+
+msgid "Tray 8"
+msgstr ""
+
+msgid "Tray 9"
+msgstr ""
+
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "L'URI è troppo lungo"
 
@@ -4699,13 +5423,15 @@ msgstr "Non è possibile copiare i driver di Windows 2000 della stampante (%d)."
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr "Non è possibile copiare i driver di Windows 9x della stampante (%d)."
 
-#, c-format
-msgid "Unable to copy interface script - %s"
-msgstr "Non è possibile copiare lo script dell'interfaccia - %s"
+msgid "Unable to create credentials from array."
+msgstr ""
 
 msgid "Unable to create printer-uri"
 msgstr "Non è possibile creare il printer-uri"
 
+msgid "Unable to create printer."
+msgstr ""
+
 msgid "Unable to create server credentials."
 msgstr ""
 
@@ -4931,6 +5657,9 @@ msgstr "ordine del file sconosciuto: \"%s\"."
 msgid "Unknown format character: \"%c\"."
 msgstr "Formato del carattere sconosciuto: \"%c\"."
 
+msgid "Unknown hash algorithm."
+msgstr ""
+
 msgid "Unknown media size name."
 msgstr "Nome del formato del supporto sconosciuto."
 
@@ -5074,17 +5803,6 @@ msgid ""
 msgstr "Uso: cupstestppd [opzioni] file1.ppd[.gz] [... fileN.ppd[.gz]]"
 
 msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-"Uso: ippdiscover [opzioni] -a\n"
-"     ippdiscover [opzioni] \"nome del servizio\"\n"
-"\n"
-"Opzioni:"
-
-msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
 "       ippfind --help\n"
@@ -5142,6 +5860,9 @@ msgstr "Il valore utilizza una lunghezza indefinita"
 msgid "VarBind uses indefinite length"
 msgstr "VarBind utilizza una lunghezza indefinita"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "Version utilizza una lunghezza indefinita"
 
@@ -5158,9 +5879,18 @@ msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr ""
 "Attenzione, nessun driver di Windows 2000 della stampante è stato installato."
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr "L'interfaccia web è stata disabilitata"
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "Sì"
 
@@ -5172,6 +5902,9 @@ msgstr ""
 "Bisogna accedere a questa pagina, usando l'URL <A HREF=\"https://%s:%d%s"
 "\">https://%s:%d%s</A>."
 
+msgid "Z Fold"
+msgstr ""
+
 msgid "ZPL Label Printer"
 msgstr "ZPL Label Printer"
 
@@ -5396,8 +6129,9 @@ msgstr "manca l'attributo di job-printer-uri."
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: il nome della classe può contenere solo caratteri stampabili."
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr "lpadmin: è previsto PPD dopo l'opzione \"-P\"."
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
+msgstr ""
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr "lpadmin: è previsto allow/deny:listautente dopo l'opzione \"-u\"."
@@ -5420,9 +6154,6 @@ msgstr "lpadmin: è previsto il tipo del(i) file dopo l'opzione \"-I\"."
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr "lpadmin: è previsto l'hostname dopo l'opzione \"-h\"."
 
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr "lpadmin: è prevista l'interfaccia dopo l'opzione \"-i\"."
-
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: è prevista la posizione dopo l'opzione \"-L\"."
 
@@ -5543,18 +6274,6 @@ msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr "lpinfo: è previsto un timeout dopo \"--timeout\"."
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr "lpinfo: argomento sconosciuto \"%s\"."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr "lpinfo: opzione sconosciuta \"%c\"."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr "lpinfo: opzione sconosciuta \"%s\"."
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: non è possibile connettersi al server: %s"
 
@@ -5562,10 +6281,6 @@ msgstr "lpmove: non è possibile connettersi al server: %s"
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: argomento sconosciuto \"%s\"."
 
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr "lpmove: opzione sconosciuta \"%c\"."
-
 msgid "lpoptions: No printers."
 msgstr "lpoptions: nessuna stampante."
 
@@ -6090,9 +6805,30 @@ msgstr "senza titolo"
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings utilizza una lunghezza indefinita"
 
+#~ msgid "\tInterface: %s/interfaces/%s"
+#~ msgstr "\tInterfaccia: %s/interfacce/%s"
+
+#~ msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+#~ msgstr ""
+#~ "  --lf                    Termina le righe con LF (UNIX/Linux/OS X)."
+
+#~ msgid "  -a                      Browse for all services."
+#~ msgstr "  -a                      Mostra tutti i servizi."
+
+#~ msgid "  -d domain               Browse/resolve in specified domain."
+#~ msgstr "  -d domain               Mostra/risolve il dominio specificato."
+
 #~ msgid "  -l                      Run cupsd from launchd(8)."
 #~ msgstr "  -l                      Avvia cupsd da launchd(8)."
 
+#~ msgid "  -p program              Run specified program for each service."
+#~ msgstr ""
+#~ "  -p program              Avvia il programma specificato per ogni "
+#~ "servizio."
+
+#~ msgid "  -t type                 Browse/resolve with specified type."
+#~ msgstr "  -t type                 Mostra/risolve con il tipo specificato."
+
 #~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
 #~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f byte"
 
@@ -6111,8 +6847,14 @@ msgstr "variable-bindings utilizza una lunghezza indefinita"
 #~ msgid "Enter password:"
 #~ msgstr "Digitare la password:"
 
-#~ msgid "Looking for printer."
-#~ msgstr "Cerca una stampante."
+#~ msgid "Envelope #10 "
+#~ msgstr "Envelope #10"
+
+#~ msgid "Envelope PRC1 "
+#~ msgstr "Envelope PRC1 "
+
+#~ msgid "File Folder "
+#~ msgstr "Directory del file"
 
 #~ msgid "New Stylus Color Series"
 #~ msgstr "Nuova Stylus Color Series"
@@ -6135,6 +6877,9 @@ msgstr "variable-bindings utilizza una lunghezza indefinita"
 #~ "L'output della stampante %s/%s è stato inviato alla stampante remota %s "
 #~ "su %s"
 
+#~ msgid "Postcard Double "
+#~ msgstr "Cartolina doppia "
+
 #~ msgid "Printing page %d, %d%% complete."
 #~ msgstr "Stampa della pagina %d, %d%% completato."
 
@@ -6189,12 +6934,26 @@ msgstr "variable-bindings utilizza una lunghezza indefinita"
 #~ msgid "There is a paper jam."
 #~ msgstr "Vi è un inceppamento della carta."
 
+#~ msgid "Unable to copy interface script - %s"
+#~ msgstr "Non è possibile copiare lo script dell'interfaccia - %s"
+
 #~ msgid "Unable to resolve printer URI."
 #~ msgstr "Non è possibile risolvere l'URI della stampante."
 
 #~ msgid "Usage: cupsfilter [ options ] filename"
 #~ msgstr "Uso: cupsfilter [ opzioni ] file"
 
+#~ msgid ""
+#~ "Usage: ippdiscover [options] -a\n"
+#~ "       ippdiscover [options] \"service name\"\n"
+#~ "\n"
+#~ "Options:"
+#~ msgstr ""
+#~ "Uso: ippdiscover [opzioni] -a\n"
+#~ "     ippdiscover [opzioni] \"nome del servizio\"\n"
+#~ "\n"
+#~ "Opzioni:"
+
 #~ msgid "Usage: lppasswd [-g groupname]"
 #~ msgstr "Uso: lppasswd [-g groupname]"
 
@@ -6221,6 +6980,24 @@ msgstr "variable-bindings utilizza una lunghezza indefinita"
 #~ msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
 #~ msgstr "ipptool: \"-i\" e \"-n\" sono incompatibili con -X\"."
 
+#~ msgid "lpadmin: Expected PPD after \"-P\" option."
+#~ msgstr "lpadmin: è previsto PPD dopo l'opzione \"-P\"."
+
+#~ msgid "lpadmin: Expected interface after \"-i\" option."
+#~ msgstr "lpadmin: è prevista l'interfaccia dopo l'opzione \"-i\"."
+
+#~ msgid "lpinfo: Unknown argument \"%s\"."
+#~ msgstr "lpinfo: argomento sconosciuto \"%s\"."
+
+#~ msgid "lpinfo: Unknown option \"%c\"."
+#~ msgstr "lpinfo: opzione sconosciuta \"%c\"."
+
+#~ msgid "lpinfo: Unknown option \"%s\"."
+#~ msgstr "lpinfo: opzione sconosciuta \"%s\"."
+
+#~ msgid "lpmove: Unknown option \"%c\"."
+#~ msgstr "lpmove: opzione sconosciuta \"%c\"."
+
 #~ msgid "lppasswd: Only root can add or delete passwords."
 #~ msgstr "lppasswd: solo root può aggiungere o eliminare le password."
 
index 39bd735..1ae7aed 100644 (file)
@@ -28,7 +28,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 2.0\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
+"POT-Creation-Date: 2016-08-30 16:00-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"
@@ -97,10 +97,6 @@ msgid "\tInterface: %s.ppd"
 msgstr "\tインターフェイス: %s.ppd"
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr "\tインターフェイス: %s/interfaces/%s"
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tインターフェイス: %s/ppd/%s.ppd"
 
@@ -981,8 +977,8 @@ msgstr "  --help                  このヘルプを表示する。"
 msgid "  --host regex            Match hostname to regular expression."
 msgstr "  --host <正規表現>       ホスト名が正規表現にマッチするか。"
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
-msgstr "  --lf                    行末を LF とする (UNIX/Linux/OS X)。"
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
+msgstr ""
 
 msgid "  --list-filters          List filters that will be used."
 msgstr "  --list-filters          使用されるフィルターのリストを表示する。"
@@ -1133,9 +1129,6 @@ msgstr ""
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr "  -X                      プレーンテキストの代わりに XML を用いる。"
 
-msgid "  -a                      Browse for all services."
-msgstr "  -a                      すべてのサービスをブラウズする。"
-
 msgid "  -a                      Export all printers."
 msgstr "  -a                      すべてのプリンターをエクスポートする。"
 
@@ -1151,9 +1144,6 @@ msgstr "  -c cups-files.conf      cups-files.conf を利用するよう設定す
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cupsd.conf           使用する cupsd.conf ファイルを指定する。"
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr "  -d <ドメイン名>         指定されたドメインでブラウズ/名前解決する。"
-
 msgid "  -d name=value           Set named variable to value."
 msgstr ""
 "  -d name=value           name で指定された変数に値 value をセットする。"
@@ -1253,11 +1243,6 @@ msgstr "  -p                      結果が真なら URI を表示する。"
 msgid "  -p filename.ppd         Set PPD file."
 msgstr "  -p filename.ppd         PPD ファイルを指定する。"
 
-msgid "  -p program              Run specified program for each service."
-msgstr ""
-"  -p <プログラム名>       指定されたプログラムをそれぞれのサービスに対し実行"
-"する。"
-
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 "  -q                      マッチ結果を終了コードで報告し、出力をしない。"
@@ -1274,6 +1259,9 @@ msgstr "  -r                      寛容モードを用いる。"
 msgid "  -s                      Print service name if true."
 msgstr "  -s                      結果が真ならサービス名を表示する。"
 
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      テストリポートを出力する。"
 
@@ -1289,9 +1277,6 @@ msgstr "  -t <キー名>             TXT レコードがキー名を含んでい
 msgid "  -t title                Set title."
 msgstr "  -t title                タイトルを指定する。"
 
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr "  -t タイプ               指定されたタイプでブラウズ/名前解決する。"
-
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      終了したときに PPD ファイルを削除する。"
 
@@ -1714,6 +1699,10 @@ msgstr ""
 "きません。 "
 
 #, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr ""
+
+#, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr "%s: エラー - \"-S\" オプションのあとには文字セットが必要です。"
 
@@ -1923,6 +1912,10 @@ msgid "%s: Unable to resolve \"%s\"."
 msgstr ""
 
 #, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr "%s: \"%s\" は未知の宛先です。"
 
@@ -2210,6 +2203,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 インチ/秒"
 
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "2-Sided Printing"
 msgstr "両面印刷"
 
@@ -2324,6 +2329,18 @@ msgstr "3 インチ/秒"
 msgid "3 x 5"
 msgstr "3 x 5"
 
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "3.00x1.00\""
 msgstr "3.00x1.00 インチ"
 
@@ -2390,6 +2407,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 インチ/秒"
 
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "4.00x1.00\""
 msgstr "4.00x1.00 インチ"
 
@@ -2688,6 +2717,9 @@ msgstr "ジョブの受け付け"
 msgid "Accepted"
 msgstr "受け付けました"
 
+msgid "Accordian Fold"
+msgstr ""
+
 msgid "Add Class"
 msgstr "クラスの追加"
 
@@ -2703,6 +2735,15 @@ msgstr "アドレス"
 msgid "Administration"
 msgstr "管理"
 
+msgid "Alternate"
+msgstr ""
+
+msgid "Alternate Roll"
+msgstr ""
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "常に有効"
 
@@ -2712,14 +2753,31 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "アプリケーター"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr "%s printer-state に 不正な値 %d を設定しようとしています。"
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "属性グループは範囲外です (%x < %x)。"
 
+msgid "Automatic"
+msgstr ""
+
 msgid "B0"
 msgstr "B0"
 
@@ -2756,6 +2814,9 @@ msgstr "B8"
 msgid "B9"
 msgstr "B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr "誤った 'document-format' の値です \"%s\"。"
@@ -2775,6 +2836,9 @@ msgstr "不正な OrderDependency"
 msgid "Bad PPD cache file."
 msgstr "不正な PPD キャッシュファイルです。"
 
+msgid "Bad PPD file."
+msgstr ""
+
 msgid "Bad Request"
 msgstr "不正なリクエスト"
 
@@ -2900,19 +2964,49 @@ msgstr "値文字列がありません"
 msgid "Bad/empty URI"
 msgstr "URI が不正か空"
 
+msgid "Bale"
+msgstr ""
+
 msgid "Banners"
 msgstr "バナー"
 
+msgid "Bind"
+msgstr ""
+
+msgid "Bind (Landscape)"
+msgstr ""
+
+msgid "Bind (Portrait)"
+msgstr ""
+
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "ボンド紙"
 
+msgid "Booklet Maker"
+msgstr ""
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "論理値は、waiteof オプション \"%s\" であるべきです"
 
+msgid "Bottom"
+msgstr ""
+
 msgid "Buffer overflow detected, aborting."
 msgstr "オーバーフローが検出され、中断しました。"
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMYK"
 
@@ -2928,12 +3022,24 @@ msgstr "RSS 購読をキャンセル"
 msgid "Canceling print job."
 msgstr "プリントジョブをキャンセルしています。"
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
 msgid "Cannot share a remote Kerberized printer."
 msgstr "リモートの Kerberos 認証のプリンターを共有できません。"
 
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
+msgstr ""
+
 msgid "Cassette"
 msgstr "カセット"
 
+msgid "Center"
+msgstr ""
+
 msgid "Change Settings"
 msgstr "設定の変更"
 
@@ -2950,12 +3056,24 @@ msgstr "プリントヘッドクリーニング"
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job は job-uri 属性をサポートしていません。"
 
+msgid "Coat"
+msgstr ""
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
+msgstr ""
+
 msgid "Color"
 msgstr "カラー"
 
 msgid "Color Mode"
 msgstr "カラーモード"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -2980,15 +3098,33 @@ msgstr "継続"
 msgid "Continuous"
 msgstr "連続"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr "コントロールファイルが正常に送信されました。"
 
 msgid "Copying print data."
 msgstr "印刷データをコピーしています。"
 
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
 msgid "Created"
 msgstr "ジョブ作成"
 
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
+
 msgid "Custom"
 msgstr "カスタム"
 
@@ -3001,9 +3137,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "カット"
 
+msgid "Cut Media"
+msgstr ""
+
 msgid "Cutter"
 msgstr "カッター"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "濃い"
 
@@ -3071,10 +3213,37 @@ msgstr ""
 msgid "Disabled"
 msgstr "無効"
 
+msgid "Disc"
+msgstr ""
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "ドキュメント #%d がジョブ #%d に見つかりません。"
 
+msgid "Double Gate Fold"
+msgstr ""
+
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dry Film"
+msgstr ""
+
 msgid "Duplexer"
 msgstr "両面オプション"
 
@@ -3090,12 +3259,18 @@ msgstr "EPL2 ラベルプリンター"
 msgid "Edit Configuration File"
 msgstr "設定ファイルの編集"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr "PPD ファイルが空です。"
 
 msgid "Encryption is not supported."
 msgstr "暗号化はサポートされていません。"
 
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "終了バナー"
@@ -3112,8 +3287,11 @@ msgstr ""
 "root のユーザー名とパスワードを入力してください。Kerberos 認証を使用している"
 "場合、有効な Kerberos チケットがあることを確認してください。"
 
-msgid "Envelope #10 "
-msgstr "封筒 #10"
+msgid "Envelope"
+msgstr ""
+
+msgid "Envelope #10"
+msgstr ""
 
 msgid "Envelope #11"
 msgstr "封筒 #11"
@@ -3202,8 +3380,8 @@ msgstr "封筒 角3 長辺送り"
 msgid "Envelope Monarch"
 msgstr "封筒 Monarch"
 
-msgid "Envelope PRC1 "
-msgstr "封筒 PRC1"
+msgid "Envelope PRC1"
+msgstr ""
 
 msgid "Envelope PRC1 Long Edge"
 msgstr "封筒 PRC1 長辺送り"
@@ -3334,6 +3512,9 @@ msgstr "式:"
 msgid "FAIL"
 msgstr "失敗"
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr "FanFold German"
 
@@ -3343,6 +3524,9 @@ msgstr "FanFold Legal German"
 msgid "Fanfold US"
 msgstr "Fanfold US"
 
+msgid "Fast Grayscale"
+msgstr ""
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "ファイル \"%s\" は相対パスを含んでいます。"
@@ -3365,8 +3549,8 @@ msgstr "ファイル \"%s\" は利用できません: %s"
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "ファイル \"%s\" のパーミッションは問題ありません (0%o/uid=%d/gid=%d)。"
 
-msgid "File Folder "
-msgstr "ファイルフォルダー"
+msgid "File Folder"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -3376,16 +3560,46 @@ msgstr ""
 "ファイルデバイス URI は無効になっています。有効にするには、\"%s/cups-files."
 "conf\" の FileDevice ディレクティブを参照してください。"
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
 msgstr "ページ %d を終了。"
 
+msgid "Finishing"
+msgstr ""
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
+msgstr ""
+
 msgid "Folio"
 msgstr "フォリオ"
 
 msgid "Forbidden"
 msgstr "Forbidden"
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr ""
+
 msgid "General"
 msgstr "一般"
 
@@ -3395,24 +3609,87 @@ msgstr "汎用"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Get-Response-PDU は不確定の長さを使用しています"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
 msgstr "光沢紙"
 
+msgid "Glossy Photo Paper"
+msgstr ""
+
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "printer-uri 属性を取得しましたが、job-id を取得できませんでした。"
 
+msgid "Gravure Cylinder"
+msgstr ""
+
 msgid "Grayscale"
 msgstr "グレースケール"
 
 msgid "HP"
 msgstr "HP"
 
+msgid "Hagaki"
+msgstr ""
+
+msgid "Half Fold"
+msgstr ""
+
+msgid "Half Z Fold"
+msgstr ""
+
 msgid "Hanging Folder"
 msgstr "Hanging Folder"
 
+msgid "Hash buffer too small."
+msgstr ""
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
 msgid "Help file not in index."
 msgstr "ヘルプファイルが索引に含まれていません。"
 
+msgid "High"
+msgstr ""
+
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+msgid "High Gloss Photo Paper"
+msgstr ""
+
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr "IPP の 1setOf 属性が value タグと互換性がありません。"
 
@@ -3500,6 +3777,18 @@ msgstr "不正な翻訳文字列"
 msgid "Illegal whitespace character"
 msgstr "不正な空白文字"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "インストール可能オプション"
 
@@ -3533,6 +3822,9 @@ msgstr "無効なメディア名引数です。"
 msgid "Invalid media size."
 msgstr "無効なメディアサイズです。"
 
+msgid "Invalid ppd-name value."
+msgstr ""
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "無効なプリンターコマンドです。 \"%s\""
@@ -3645,6 +3937,9 @@ msgstr "ジョブサブスクリプションを更新できません。"
 msgid "Jobs"
 msgstr "ジョブ"
 
+msgid "Jog"
+msgstr ""
+
 msgid "LPD/LPR Host or Printer"
 msgstr "LPD/LPR ホストまたはプリンター"
 
@@ -3654,6 +3949,15 @@ msgstr "ラベルプリンター"
 msgid "Label Top"
 msgstr "ラベルトップ"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr ""
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "言語 \"%s\" はサポートされていません。"
@@ -3661,18 +3965,39 @@ msgstr "言語 \"%s\" はサポートされていません。"
 msgid "Large Address"
 msgstr "ラージアドレス"
 
+msgid "Large Capacity"
+msgstr ""
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Series PCL 4/5"
 
+msgid "Left"
+msgstr ""
+
+msgid "Left Gate Fold"
+msgstr ""
+
+msgid "Letter Fold"
+msgstr ""
+
 msgid "Letter Oversize"
 msgstr "US レター (特大)"
 
 msgid "Letter Oversize Long Edge"
 msgstr "US レター (特大) 長辺送り"
 
+msgid "Letterhead"
+msgstr ""
+
 msgid "Light"
 msgstr "薄い"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "1 行が最大値 (255 文字) を超えています"
 
@@ -3682,15 +4007,39 @@ msgstr "使用可能なプリンター一覧"
 msgid "Load paper."
 msgstr "用紙を補給してください。"
 
+msgid "Local printer created."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "長辺給紙 (縦向き)"
 
-msgid "Looking for printer..."
+msgid "Looking for printer."
+msgstr "プリンターを探しています。"
+
+msgid "Main"
+msgstr ""
+
+msgid "Main Roll"
+msgstr ""
+
+msgid "Manual"
 msgstr ""
 
 msgid "Manual Feed"
 msgstr "手差し"
 
+msgid "Matte Fabric"
+msgstr ""
+
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
 msgid "Media Size"
 msgstr "用紙サイズ"
 
@@ -3709,6 +4058,27 @@ msgstr "紙質"
 msgid "Memory allocation error"
 msgstr "メモリー割り当てエラー"
 
+msgid "Metal"
+msgstr ""
+
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr ""
+
 msgid "Missing CloseGroup"
 msgstr "CloseGroup がありません"
 
@@ -3746,6 +4116,10 @@ msgstr "オプションキーワードがありません"
 msgid "Missing requesting-user-name attribute."
 msgstr "requesting-user-name 属性が設定されていません。"
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
 msgid "Missing required attributes."
 msgstr "必須の属性が設定されていません。"
 
@@ -3789,6 +4163,9 @@ msgstr "クラスの変更"
 msgid "Modify Printer"
 msgstr "プリンターの変更"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "すべてのジョブの移動"
 
@@ -3798,6 +4175,15 @@ msgstr "ジョブの移動"
 msgid "Moved Permanently"
 msgstr "別の場所へ移動しました"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr ""
+
 msgid "NULL PPD file pointer"
 msgstr "PPD ファイルポインターが NULL です"
 
@@ -3810,12 +4196,21 @@ msgstr "入れ子になったクラスは許可されていません。"
 msgid "Never"
 msgstr "Never"
 
+msgid "New credentials are not valid for name."
+msgstr ""
+
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
 msgid "No"
 msgstr "いいえ"
 
 msgid "No Content"
 msgstr "中身がありません"
 
+msgid "No Finishing"
+msgstr ""
+
 msgid "No PPD name"
 msgstr "PPD の名前がありません"
 
@@ -3841,6 +4236,9 @@ msgstr "リクエストに属性がありません。"
 msgid "No authentication information provided."
 msgstr "認証情報が提供されていません。"
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "コミュニティ名がありません"
 
@@ -3895,6 +4293,9 @@ msgstr "リクエストが送られませんでした。"
 msgid "No request-id"
 msgstr "リクエストID がありません"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr "リクエストにサブスクリプション属性がありません。"
 
@@ -3956,6 +4357,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "オンラインヘルプ"
 
+msgid "Only local users can create a local printer."
+msgstr ""
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "%s のオープンに失敗しました: %s"
@@ -3969,6 +4373,9 @@ msgstr "OpenUI/JCLOpenUI の前にまず CloseUI/JCLCloseUI が必要です"
 msgid "Operation Policy"
 msgstr "操作ポリシー"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "オプション \"%s\" は %%%%IncludeFeature 経由で含めることはできません。"
@@ -3979,6 +4386,9 @@ msgstr "インストールされたオプション"
 msgid "Options:"
 msgstr "オプション:"
 
+msgid "Other"
+msgstr ""
+
 msgid "Out of date PPD cache file."
 msgstr "PPD キャッシュファイルが古すぎます。"
 
@@ -4027,6 +4437,9 @@ msgstr "パケットが Get-Response-PDU を含んでいません"
 msgid "Packet does not start with SEQUENCE"
 msgstr "パケットが SEQUENCE から始まりません"
 
+msgid "Paper"
+msgstr ""
+
 msgid "Paper jam."
 msgstr "用紙詰まりです。"
 
@@ -4039,6 +4452,9 @@ msgstr "給紙トレイが空です。"
 msgid "Paper tray is missing."
 msgstr "給紙トレイがありません。"
 
+msgid "Parallel Fold"
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4062,18 +4478,63 @@ msgstr "プリンターの休止"
 msgid "Peel-Off"
 msgstr "Peel-Off"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "写真"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "写真ラベル"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr "普通紙"
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "ポリシー"
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "ポートモニター"
 
@@ -4083,8 +4544,8 @@ msgstr "PostScript プリンター"
 msgid "Postcard"
 msgstr "ハガキ"
 
-msgid "Postcard Double "
-msgstr "往復ハガキ"
+msgid "Postcard Double"
+msgstr ""
 
 msgid "Postcard Double Long Edge"
 msgstr "往復ハガキ 長辺送り"
@@ -4092,9 +4553,21 @@ msgstr "往復ハガキ 長辺送り"
 msgid "Postcard Long Edge"
 msgstr "ハガキ 長辺送り"
 
+msgid "Poster Fold"
+msgstr ""
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
 msgstr "印刷準備中です。"
 
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
+msgstr ""
+
 msgid "Print Density"
 msgstr "印刷密度"
 
@@ -4104,6 +4577,9 @@ msgstr "ジョブの印刷:"
 msgid "Print Mode"
 msgstr "印刷モード"
 
+msgid "Print Quality"
+msgstr ""
+
 msgid "Print Rate"
 msgstr "印刷レート"
 
@@ -4134,6 +4610,10 @@ msgstr "印刷ジョブが大きすぎます。"
 msgid "Print job was not accepted."
 msgstr "印刷ジョブが受け付けられませんでした。"
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "追加されたプリンター"
 
@@ -4168,6 +4648,12 @@ msgstr "プリンター"
 msgid "Printing page %d, %u%% complete."
 msgstr "ページ %d, %u%% の印刷が完了しました。"
 
+msgid "Punch"
+msgstr ""
+
+msgid "Punched Paper"
+msgstr ""
+
 msgid "Quarto"
 msgstr "Quarto"
 
@@ -4177,6 +4663,9 @@ msgstr "クォータの制限に達しました。"
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "ランク  所有者  ジョブ  ファイル                        合計サイズ"
 
+msgid "Rear"
+msgstr ""
+
 msgid "Reject Jobs"
 msgstr "ジョブの拒否"
 
@@ -4209,6 +4698,45 @@ msgstr "返信用ラベル"
 msgid "Rewind"
 msgstr "巻き取り"
 
+msgid "Right"
+msgstr ""
+
+msgid "Right Gate Fold"
+msgstr ""
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr ""
+
+msgid "Roll 10"
+msgstr ""
+
+msgid "Roll 2"
+msgstr ""
+
+msgid "Roll 3"
+msgstr ""
+
+msgid "Roll 4"
+msgstr ""
+
+msgid "Roll 5"
+msgstr ""
+
+msgid "Roll 6"
+msgstr ""
+
+msgid "Roll 7"
+msgstr ""
+
+msgid "Roll 8"
+msgstr ""
+
+msgid "Roll 9"
+msgstr ""
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "コマンドを実行中: %s %s -N -A %s -c '%s'"
@@ -4219,9 +4747,54 @@ msgstr "SEQUENCE は不定長を使用しています"
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS のネゴシエーションエラー"
 
+msgid "Saddle Stitch"
+msgstr ""
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "残りを見てください"
 
+msgid "See remote printer."
+msgstr ""
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr "データをプリンターに送信しています。"
 
@@ -4264,6 +4837,45 @@ msgstr "発送先ラベル"
 msgid "Short-Edge (Landscape)"
 msgstr "短辺 (横原稿)"
 
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr ""
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Staple (Landscape)"
+msgstr ""
+
+msgid "Single Staple (Portrait)"
+msgstr ""
+
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Wall Cardboard"
+msgstr ""
+
+msgid "Sleeve"
+msgstr ""
+
 msgid "Special Paper"
 msgstr "特殊紙"
 
@@ -4274,6 +4886,24 @@ msgstr "ジョブをスプール中、%.0f%% 完了しました。"
 msgid "Standard"
 msgstr "標準"
 
+msgid "Staple"
+msgstr ""
+
+msgid "Staple Edge"
+msgstr ""
+
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "開始バナー"
@@ -4285,6 +4915,21 @@ msgstr "ページ %d を開始しています。"
 msgid "Statement"
 msgstr "記述"
 
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
+
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr "サブスクリプション番号 %d は存在しません。"
@@ -4304,6 +4949,9 @@ msgstr "スーパー B/A3"
 msgid "Switching Protocols"
 msgstr "プロトコルの変更"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "タブロイド"
 
@@ -4513,6 +5161,15 @@ msgstr "job-sheets 値が多すぎます (%d > 2)。"
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "printer-state-reasons 値が多すぎます (%d > %d)。"
 
+msgid "Top"
+msgstr ""
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
+msgstr ""
+
 msgid "Transparency"
 msgstr "OHP シート"
 
@@ -4522,15 +5179,81 @@ msgstr "トレイ"
 msgid "Tray 1"
 msgstr "トレイ 1"
 
+msgid "Tray 10"
+msgstr ""
+
+msgid "Tray 11"
+msgstr ""
+
+msgid "Tray 12"
+msgstr ""
+
+msgid "Tray 13"
+msgstr ""
+
+msgid "Tray 14"
+msgstr ""
+
+msgid "Tray 15"
+msgstr ""
+
+msgid "Tray 16"
+msgstr ""
+
+msgid "Tray 17"
+msgstr ""
+
+msgid "Tray 18"
+msgstr ""
+
+msgid "Tray 19"
+msgstr ""
+
 msgid "Tray 2"
 msgstr "トレイ 2"
 
+msgid "Tray 20"
+msgstr ""
+
 msgid "Tray 3"
 msgstr "トレイ 3"
 
 msgid "Tray 4"
 msgstr "トレイ 4"
 
+msgid "Tray 5"
+msgstr ""
+
+msgid "Tray 6"
+msgstr ""
+
+msgid "Tray 7"
+msgstr ""
+
+msgid "Tray 8"
+msgstr ""
+
+msgid "Tray 9"
+msgstr ""
+
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "URI が長すぎます"
 
@@ -4653,13 +5376,15 @@ msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 "複数の Windows 9x プリンタードライバーファイルをコピーできません (%d)。"
 
-#, c-format
-msgid "Unable to copy interface script - %s"
-msgstr "インターフェイススクリプトをコピーできません - %s"
+msgid "Unable to create credentials from array."
+msgstr ""
 
 msgid "Unable to create printer-uri"
 msgstr "printer-uri を作成できません"
 
+msgid "Unable to create printer."
+msgstr ""
+
 msgid "Unable to create server credentials."
 msgstr "サーバー証明書を作成できません。"
 
@@ -4873,6 +5598,9 @@ msgstr "\"%s\" は未知のファイルオーダーです。"
 msgid "Unknown format character: \"%c\"."
 msgstr "\"%c\" は未知の書式文字です。"
 
+msgid "Unknown hash algorithm."
+msgstr ""
+
 msgid "Unknown media size name."
 msgstr "未知のメディアサイズ名称です。"
 
@@ -5020,17 +5748,6 @@ msgstr ""
 "gz]]"
 
 msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-"使い方: ippdiscover [オプション] -a\n"
-"        ippdiscover [オプション] \"サービス名\"\n"
-"\n"
-"オプション:"
-
-msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
 "       ippfind --help\n"
@@ -5090,6 +5807,9 @@ msgstr "値は不定長です"
 msgid "VarBind uses indefinite length"
 msgstr "VarBind は不定長です"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "Version は不定長です"
 
@@ -5105,9 +5825,18 @@ msgstr "プリンターが終了するのを待っています。"
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr "警告、Windows 2000 プリンタードライバーがインストールされていません。"
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr "Web インターフェイスが無効になっています"
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "はい"
 
@@ -5119,6 +5848,9 @@ msgstr ""
 "このページには URL <A HREF=\"https://%s:%d%s\">https://%s:%d%s</A> を使ってア"
 "クセスする必要があります。"
 
+msgid "Z Fold"
+msgstr ""
+
 msgid "ZPL Label Printer"
 msgstr "ZPL ラベルプリンター"
 
@@ -5347,8 +6079,9 @@ msgstr "job-printer-uri 属性がありません。"
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: クラス名は表示可能文字のみで構成されなければなりません。"
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr "lpadmin: \"-P\" オプションのあとには PPD が必要です。"
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
+msgstr ""
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr ""
@@ -5372,9 +6105,6 @@ msgstr "lpadmin: \"-I\" オプションのあとにはファイル形式が必
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr "lpadmin: \"-h\" オプションのあとにはホスト名が必要です。"
 
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr "lpadmin: \"-i\" オプションのあとにはインターフェイス名が必要です。"
-
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: \"-L\" オプションのあとには場所が必要です。"
 
@@ -5503,18 +6233,6 @@ msgstr ""
 "lpinfo: \"--timeout\" のあとには、タイムアウト値を指定する必要があります。"
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr "lpinfo: 未知の引数 \"%s\"。"
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr "lpinfo: 未知のオプション \"%c\"。"
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr "lpinfo: 未知のオプション \"%s\"。"
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: サーバーに接続できません: %s"
 
@@ -5522,10 +6240,6 @@ msgstr "lpmove: サーバーに接続できません: %s"
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: 未知の引数 \"%s\"。"
 
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr "lpmove: 未知のオプション \"%c\"。"
-
 msgid "lpoptions: No printers."
 msgstr "lpoptions: プリンターがありません。"
 
@@ -6075,9 +6789,30 @@ msgstr "タイトルなし"
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings の長さが不定"
 
+#~ msgid "\tInterface: %s/interfaces/%s"
+#~ msgstr "\tインターフェイス: %s/interfaces/%s"
+
+#~ msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+#~ msgstr "  --lf                    行末を LF とする (UNIX/Linux/OS X)。"
+
+#~ msgid "  -a                      Browse for all services."
+#~ msgstr "  -a                      すべてのサービスをブラウズする。"
+
+#~ msgid "  -d domain               Browse/resolve in specified domain."
+#~ msgstr ""
+#~ "  -d <ドメイン名>         指定されたドメインでブラウズ/名前解決する。"
+
 #~ msgid "  -l                      Run cupsd from launchd(8)."
 #~ msgstr "  -l                      launchd(8) から cupsd を実行する。"
 
+#~ msgid "  -p program              Run specified program for each service."
+#~ msgstr ""
+#~ "  -p <プログラム名>       指定されたプログラムをそれぞれのサービスに対し実"
+#~ "行する。"
+
+#~ msgid "  -t type                 Browse/resolve with specified type."
+#~ msgstr "  -t タイプ               指定されたタイプでブラウズ/名前解決する。"
+
 #~ msgid ""
 #~ "\"%s\": Bad uriScheme value \"%s\" - bad length %d (RFC 2911 4.1.6 節)."
 #~ msgstr ""
@@ -6105,8 +6840,14 @@ msgstr "variable-bindings の長さが不定"
 #~ msgid "Enter password:"
 #~ msgstr "パスワードを入力:"
 
-#~ msgid "Looking for printer."
-#~ msgstr "プリンターを探しています。"
+#~ msgid "Envelope #10 "
+#~ msgstr "封筒 #10"
+
+#~ msgid "Envelope PRC1 "
+#~ msgstr "封筒 PRC1"
+
+#~ msgid "File Folder "
+#~ msgstr "ファイルフォルダー"
 
 #~ msgid "New Stylus Color Series"
 #~ msgstr "New Stylus Color シリーズ"
@@ -6127,6 +6868,9 @@ msgstr "variable-bindings の長さが不定"
 #~ msgstr ""
 #~ "プリンター %s/%s の出力は、リモートプリンター %s (%s 上) に送られます"
 
+#~ msgid "Postcard Double "
+#~ msgstr "往復ハガキ"
+
 #~ msgid "Print file accepted - job ID %d."
 #~ msgstr "プリントファイルを受け付けました - ジョブ ID %d。"
 
@@ -6194,6 +6938,9 @@ msgstr "variable-bindings の長さが不定"
 #~ msgid "There is a paper jam."
 #~ msgstr "用紙づまりが発生しています。"
 
+#~ msgid "Unable to copy interface script - %s"
+#~ msgstr "インターフェイススクリプトをコピーできません - %s"
+
 #~ msgid "Unable to create compressed print file"
 #~ msgstr "圧縮プリントファイルを作成できません"
 
@@ -6209,6 +6956,17 @@ msgstr "variable-bindings の長さが不定"
 #~ msgid "Usage: cupsfilter [ options ] filename"
 #~ msgstr "使い方: cupsfilter [オプション] ファイル名"
 
+#~ msgid ""
+#~ "Usage: ippdiscover [options] -a\n"
+#~ "       ippdiscover [options] \"service name\"\n"
+#~ "\n"
+#~ "Options:"
+#~ msgstr ""
+#~ "使い方: ippdiscover [オプション] -a\n"
+#~ "        ippdiscover [オプション] \"サービス名\"\n"
+#~ "\n"
+#~ "オプション:"
+
 #~ msgid "Usage: lppasswd [-g groupname]"
 #~ msgstr "使い方: lppasswd [-g グループ名]"
 
@@ -6245,6 +7003,24 @@ msgstr "variable-bindings の長さが不定"
 #~ msgid "ipptool: Missing version for \"-V\"."
 #~ msgstr "ipptool: \"-V\" にバージョンの指定がありません。"
 
+#~ msgid "lpadmin: Expected PPD after \"-P\" option."
+#~ msgstr "lpadmin: \"-P\" オプションのあとには PPD が必要です。"
+
+#~ msgid "lpadmin: Expected interface after \"-i\" option."
+#~ msgstr "lpadmin: \"-i\" オプションのあとにはインターフェイス名が必要です。"
+
+#~ msgid "lpinfo: Unknown argument \"%s\"."
+#~ msgstr "lpinfo: 未知の引数 \"%s\"。"
+
+#~ msgid "lpinfo: Unknown option \"%c\"."
+#~ msgstr "lpinfo: 未知のオプション \"%c\"。"
+
+#~ msgid "lpinfo: Unknown option \"%s\"."
+#~ msgstr "lpinfo: 未知のオプション \"%s\"。"
+
+#~ msgid "lpmove: Unknown option \"%c\"."
+#~ msgstr "lpmove: 未知のオプション \"%c\"。"
+
 #~ msgid "lppasswd: Only root can add or delete passwords."
 #~ msgstr "lppasswd: root だけがパスワードの追加と削除を行えます。"
 
index 7b070c1..bfd3030 100644 (file)
@@ -1,30 +1,54 @@
 #
 # "$Id$"
 #
-#   Brazilian Portuguese message catalog for CUPS.
+# Brazilian Portuguese message catalog for CUPS.
 #
-#   Copyright 2007-2014 by Apple Inc.
-#   Copyright 2005-2007 by Easy Software Products.
+# Copyright 2007-2014 by Apple Inc.
+# Copyright 2005-2007 by Easy Software Products.
 #
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
+#
+#
+# Notes for Translators:
+#
+# The "checkpo" program located in the "locale" source directory can be used
+# to verify that your translations do not introduce formatting errors or other
+# problems.  Run with:
+#
+#    cd locale
+#    ./checkpo cups_LL.po
+#
+# where "LL" is your locale.
+#
+#
+# CUPS Glossary/Terminologies en->pt_BR
+#
+# character set = conjunto de caracteres
+# find = encontrar
+# get = obter
+# locate = localizar
+# not supported = Sem suporte a
+# open = abrir
+# status = estado
+# unable = não foi possível
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: CUPS 1.7.4\n"
+"Project-Id-Version: CUPS 2.1.2\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2014-05-09 13:32-0700\n"
-"PO-Revision-Date: 2014-07-22 00:19-0300\n"
-"Last-Translator: Rafael Ferreira <rafael.f.f1@gmail.com>\n"
+"POT-Creation-Date: 2016-08-30 16:00-0400\n"
+"PO-Revision-Date: 2016-01-31 16:45-0200\n"
+"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>\n"
 "Language-Team: Brazilian Portuguese <traducao-cups-pt-br@googlegroups.com>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 1.6.5\n"
+"X-Generator: Poedit 1.8.6\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
 msgid "\t\t(all)"
@@ -87,10 +111,6 @@ msgid "\tInterface: %s.ppd"
 msgstr "\tInterface: %s.ppd"
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr "\tInterface: %s/interfaces/%s"
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tInterface: %s/ppd/%s.ppd"
 
@@ -961,6 +981,9 @@ msgstr ""
 msgid "  --false                 Always false."
 msgstr "  --false                 Sempre falso."
 
+msgid "  --help                  Show help."
+msgstr "  --help                  Mostra ajuda."
+
 msgid "  --help                  Show this help."
 msgstr "  --help                  Mostra esta ajuda."
 
@@ -968,8 +991,11 @@ msgid "  --host regex            Match hostname to regular expression."
 msgstr ""
 "  --host regex            Corresponde o nome da máquina à expressão regular."
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
-msgstr "  --lf                    Fim de linhas com LF (UNIX/Linux/OS X)."
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
+msgstr ""
+
+msgid "  --list-filters          List filters that will be used."
+msgstr "  --list-filters          Lista filtros que serão usados."
 
 msgid "  --local                 True if service is local."
 msgstr "  --local                 Verdadeiro se o serviço for local."
@@ -1000,12 +1026,19 @@ msgstr "  --print-name            Exibe o nome do serviço se verdadeiro."
 
 msgid "  --quiet                 Quietly report match via exit code."
 msgstr ""
-"  --quiet                 Relata silenciosamente correspondências via "
-"código                              de saída."
+"  --quiet                 Relata silenciosamente correspondências via\n"
+"                           código de saída."
 
 msgid "  --remote                True if service is remote."
 msgstr "  --remote                Verdeiro se o serviço for remoto."
 
+msgid ""
+"  --stop-after-include-error\n"
+"                          Stop tests after a failed INCLUDE."
+msgstr ""
+"  --stop-after-include-error\n"
+"                          Interrompe testes após um INCLUIDE falhar."
+
 msgid "  --true                  Always true."
 msgstr "  --true                  Sempre verdadeiro."
 
@@ -1024,6 +1057,9 @@ msgstr "  --uri regex             Corresponde a URI à expressão regular."
 msgid "  --version               Show program version."
 msgstr "  --version               Mostra a versão do programa."
 
+msgid "  --version               Show version."
+msgstr "  --version               Mostra a versão."
+
 msgid "  -4                      Connect using IPv4."
 msgstr "  -4                      Conecta usando IPv4."
 
@@ -1052,7 +1088,7 @@ msgstr ""
 
 msgid "  -H samba-server         Use the named SAMBA server."
 msgstr ""
-"  -H servidor-samba       Usa o servidor SAMBA chamado  \"servidor-samba\"."
+"  -H servidor-samba       Usa o servidor SAMBA chamado \"servidor-samba\"."
 
 msgid "  -I                      Ignore errors."
 msgstr "  -I                      Ignora erros."
@@ -1068,6 +1104,14 @@ msgstr "  -I {filename,filters,none,profiles}"
 msgid "  -L                      Send requests using content-length."
 msgstr "  -L                      Envia requisições usando limite de conteúdo."
 
+msgid ""
+"  -P filename.plist       Produce XML plist to a file and test report to "
+"standard output."
+msgstr ""
+"  -P arquivo.plist        Produz a plist XML para um arquivo e testa "
+"relatar\n"
+"                            para a saída padrão."
+
 msgid "  -P filename.ppd         Set PPD file."
 msgstr "  -P arquivo.ppd          Define arquivo PPD."
 
@@ -1082,12 +1126,12 @@ msgstr "  -S                      Testa com criptografia SSL."
 
 msgid "  -T seconds              Set the browse timeout in seconds."
 msgstr ""
-"  -T segundos             Define o tempo limite de navegação em segundos."
+"  -T segundos             Define o tempo limite do navegador em segundos."
 
 msgid "  -T seconds              Set the receive/send timeout in seconds."
 msgstr ""
-"  -T segundos             Define o limite de tempo de recebimento/envio "
-"em                                segundos."
+"  -T segundos             Define o limite de tempo de recebimento/envio em\n"
+"                            segundos."
 
 msgid "  -U username             Specify username."
 msgstr "  -U usuário              Especifica nome do usuário."
@@ -1105,12 +1149,12 @@ msgstr ""
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr "  -X                      Produz plist XML ao invés de texto normal."
 
-msgid "  -a                      Browse for all services."
-msgstr "  -a                      Navega por todos os serviços."
-
 msgid "  -a                      Export all printers."
 msgstr "  -a                      Exporta todas as impressoras."
 
+msgid "  -c                      Produce CSV output."
+msgstr "  -c                      Produz saída em CSV."
+
 msgid "  -c catalog.po           Load the specified message catalog."
 msgstr ""
 "  -c catálogo.po          Carrega o catálogo de mensagens especificado."
@@ -1122,9 +1166,6 @@ msgstr ""
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cupsd.conf           Define o arquivo cupsd.conf a ser usado."
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr "  -d domínio              Navega/resolve no domínio especificado."
-
 msgid "  -d name=value           Set named variable to value."
 msgstr "  -d nome=valor           Define a variável \"nome\" com \"valor\"."
 
@@ -1178,8 +1219,11 @@ msgstr ""
 msgid "  -l                      List attributes."
 msgstr "  -l                      Lista os atributos."
 
-msgid "  -l                      Run cupsd from launchd(8)."
-msgstr "  -l                      Executa cupsd a partir do launchd(8)."
+msgid "  -l                      Produce plain text output."
+msgstr "  -l                      Produz saída em texto plano."
+
+msgid "  -l                      Run cupsd on demand."
+msgstr "  -l                      Executa o cupsd sob demanda."
 
 msgid "  -l lang[,lang,...]      Specify the output language(s) (locale)."
 msgstr "  -l idioma[,idioma,...]  Especifica o(s) idioma(s) de saída (locale)."
@@ -1225,10 +1269,6 @@ msgstr "  -p                      Exibe a URI se verdadeiro."
 msgid "  -p filename.ppd         Set PPD file."
 msgstr "  -p arquivo.ppd          Define arquivo PPD."
 
-msgid "  -p program              Run specified program for each service."
-msgstr ""
-"  -p programa             Executa o programa especificado para cada serviço."
-
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 "  -q                      Relata silenciosamente correspondências via "
@@ -1246,6 +1286,9 @@ msgstr "  -r                      Usa modo aberto \"relaxado\"."
 msgid "  -s                      Print service name if true."
 msgstr "  -s                      Exibe o nome do serviço se verdadeiro."
 
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      Produz um relatório de teste."
 
@@ -1262,9 +1305,6 @@ msgstr ""
 msgid "  -t title                Set title."
 msgstr "  -t título               Define um título."
 
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr "  -t tipo                 Navega/resolve com o tipo especificado."
-
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      Remove o arquivo PPD ao final."
 
@@ -1575,14 +1615,38 @@ msgstr ""
 "2911 seção 4.1.6)."
 
 #, c-format
-msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
-msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
-
-#, c-format
 msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 msgstr "%-7s %-7.7s %-7d %-31.31s %.0f bytes"
 
 #, c-format
+msgid "%d x %d mm"
+msgstr "%d x %d mm"
+
+#, c-format
+msgid "%g x %g"
+msgstr "%g x %g"
+
+#, c-format
+msgid "%s (%s)"
+msgstr "%s (%s)"
+
+#, c-format
+msgid "%s (%s, %s)"
+msgstr "%s (%s, %s)"
+
+#, c-format
+msgid "%s (Borderless)"
+msgstr "%s (Sem borda)"
+
+#, c-format
+msgid "%s (Borderless, %s)"
+msgstr "%s (Sem borda, %s)"
+
+#, c-format
+msgid "%s (Borderless, %s, %s)"
+msgstr "%s (Sem borda, %s, %s)"
+
+#, c-format
 msgid "%s accepting requests since %s"
 msgstr "%s está aceitando requisições desde %s"
 
@@ -1616,7 +1680,7 @@ msgstr "%s não está aceitando requisições desde %s -"
 
 #, c-format
 msgid "%s not supported."
-msgstr "%s não é suportada."
+msgstr "não há suporte a %s."
 
 #, c-format
 msgid "%s/%s accepting requests since %s"
@@ -1640,6 +1704,10 @@ msgid "%s: %s failed: %s"
 msgstr "%s: %s falhou: %s"
 
 #, c-format
+msgid "%s: Bad printer URI \"%s\"."
+msgstr "%s: URI de impressora inválida \"%s\"."
+
+#, c-format
 msgid "%s: Bad version %s for \"-V\"."
 msgstr "%s: Versão inválida %s para \"-V\"."
 
@@ -1674,6 +1742,10 @@ msgstr ""
 "trabalho forem fornecidos."
 
 #, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr ""
+
+#, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr "%s: Erro - esperava uma codificação de caracteres após a opção \"-S\"."
 
@@ -1814,6 +1886,10 @@ msgid "%s: Invalid filter string \"%s\"."
 msgstr "%s: String de filtro inválida \"%s\"."
 
 #, c-format
+msgid "%s: Missing filename for \"-P\"."
+msgstr "%s: Faltando nome de arquivo para \"-P\"."
+
+#, c-format
 msgid "%s: Missing timeout for \"-T\"."
 msgstr "%s: Faltando tempo de espera para \"-T\"."
 
@@ -1838,6 +1914,10 @@ msgid "%s: Sorry, no encryption support."
 msgstr "%s: Desculpa, não há suporte a criptografia."
 
 #, c-format
+msgid "%s: Unable to connect to \"%s:%d\": %s"
+msgstr "%s: Não foi possível conectar a \"%s:%d\": %s"
+
+#, c-format
 msgid "%s: Unable to connect to server."
 msgstr "%s: Não foi possível conectar ao servidor."
 
@@ -1846,10 +1926,18 @@ msgid "%s: Unable to contact server."
 msgstr "%s: Não foi possível contactar o servidor."
 
 #, c-format
+msgid "%s: Unable to create PPD file: %s"
+msgstr "%s: Não foi possível criar o arquivo PDD: %s"
+
+#, c-format
 msgid "%s: Unable to determine MIME type of \"%s\"."
 msgstr "%s: Não foi possível determinar o tipo MIME de \"%s\"."
 
 #, c-format
+msgid "%s: Unable to open \"%s\": %s"
+msgstr "%s: Não foi possível abrir \"%s\": %s"
+
+#, c-format
 msgid "%s: Unable to open %s: %s"
 msgstr "%s: Não foi possível abrir %s: %s"
 
@@ -1862,6 +1950,14 @@ msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"."
 msgstr "%s: Não foi possível ler o banco de dados MIME de \"%s\" ou \"%s\"."
 
 #, c-format
+msgid "%s: Unable to resolve \"%s\"."
+msgstr "%s: Não foi possível resolver \"%s\"."
+
+#, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr "%s: Destino desconhecido \"%s\"."
 
@@ -1890,8 +1986,8 @@ msgid ""
 "%s: Warning - \"%c\" format modifier not supported - output may not be "
 "correct."
 msgstr ""
-"%s: Aviso - modificador de formato \"%c\" não é suportado - a saída pode não "
-"ficar correta."
+"%s: Aviso - não há suporte ao modificador de formato \"%c\" - a saída pode "
+"não ficar correta."
 
 #, c-format
 msgid "%s: Warning - character set option ignored."
@@ -2149,6 +2245,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 pol/s"
 
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "2-Sided Printing"
 msgstr "Frente e Verso"
 
@@ -2263,6 +2371,18 @@ msgstr "3 pol/s"
 msgid "3 x 5"
 msgstr "3 x 5"
 
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "3.00x1.00\""
 msgstr "3.00x1.00\""
 
@@ -2329,6 +2449,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 pol/s"
 
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "4.00x1.00\""
 msgstr "4.00x1.00\""
 
@@ -2437,9 +2569,6 @@ msgstr "7 x 9"
 msgid "70"
 msgstr "70"
 
-msgid "720dpi"
-msgstr "720dpi"
-
 msgid "75"
 msgstr "75"
 
@@ -2629,6 +2758,9 @@ msgstr "Aceitando trabalhos"
 msgid "Accepted"
 msgstr "Aceitou"
 
+msgid "Accordian Fold"
+msgstr ""
+
 msgid "Add Class"
 msgstr "Adicionar classe"
 
@@ -2644,6 +2776,15 @@ msgstr "Endereço"
 msgid "Administration"
 msgstr "Administração"
 
+msgid "Alternate"
+msgstr ""
+
+msgid "Alternate Roll"
+msgstr ""
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "Sempre"
 
@@ -2653,15 +2794,32 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "Aplicador"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr ""
 "Tentativa de definir o estado da impressora %s para o valor inválido %d."
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "Grupos de atributos estão fora de ordem (%x < %x)."
 
+msgid "Automatic"
+msgstr ""
+
 msgid "B0"
 msgstr "B0"
 
@@ -2698,6 +2856,9 @@ msgstr "B8"
 msgid "B9"
 msgstr "B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr "Valor de \"document-format\" inválido \"%s\"."
@@ -2717,6 +2878,9 @@ msgstr "OrderDependency inválido"
 msgid "Bad PPD cache file."
 msgstr "Arquivo de cache de PPD inválido."
 
+msgid "Bad PPD file."
+msgstr ""
+
 msgid "Bad Request"
 msgstr "Requisição inválida"
 
@@ -2726,6 +2890,9 @@ msgstr "Número de versão SNMP inválido"
 msgid "Bad UIConstraints"
 msgstr "UIConstraints inválido"
 
+msgid "Bad arguments to function"
+msgstr "Argumentos inválidos para função"
+
 #, c-format
 msgid "Bad copies value %d."
 msgstr "Valor de cópias inválido %d."
@@ -2752,6 +2919,9 @@ msgstr "document-format-default inválido \"%s\"."
 msgid "Bad filename buffer"
 msgstr "Buffer de nome de arquivo inválido"
 
+msgid "Bad hostname/address in URI"
+msgstr "Nome de máquina/Endereço inválidos na URI"
+
 #, c-format
 msgid "Bad job-name value: %s"
 msgstr "Valor de job-name inválido: %s"
@@ -2796,17 +2966,20 @@ msgstr "Opção + escolha inválidas na linha %d."
 msgid "Bad page-ranges values %d-%d."
 msgstr "Valor de page-ranges inválido %d-%d."
 
+msgid "Bad port number in URI"
+msgstr "Número de porta inválida"
+
 #, c-format
 msgid "Bad port-monitor \"%s\"."
 msgstr "port-monitor inválido \"%s\"."
 
-msgid "Bad printer URI."
-msgstr "URI de impressora inválido."
-
 #, c-format
 msgid "Bad printer-state value %d."
 msgstr "Valor de printer-state inválido %d."
 
+msgid "Bad printer-uri."
+msgstr "printer-uri inválido."
+
 #, c-format
 msgid "Bad request ID %d."
 msgstr "ID da requisição inválido %d."
@@ -2815,49 +2988,106 @@ msgstr "ID da requisição inválido %d."
 msgid "Bad request version number %d.%d."
 msgstr "Número da versão de requisição inválido %d.%d."
 
+msgid "Bad resource in URI"
+msgstr "Recurso inválido na URI"
+
+msgid "Bad scheme in URI"
+msgstr "Esquema inválido na URI"
+
 msgid "Bad subscription ID"
 msgstr "ID de inscrição inválido"
 
+msgid "Bad username in URI"
+msgstr "Usuário inválido na URI"
+
 msgid "Bad value string"
 msgstr "String de valor inválido"
 
+msgid "Bad/empty URI"
+msgstr "URI vazia/inválida"
+
+msgid "Bale"
+msgstr ""
+
 msgid "Banners"
 msgstr "Banners"
 
+msgid "Bind"
+msgstr ""
+
+msgid "Bind (Landscape)"
+msgstr ""
+
+msgid "Bind (Portrait)"
+msgstr ""
+
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "Papel autocolante"
 
+msgid "Booklet Maker"
+msgstr ""
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "Esperava booleano para opção waiteof \"%s\"."
 
+msgid "Bottom"
+msgstr ""
+
 msgid "Buffer overflow detected, aborting."
 msgstr "Estouro de pilha do buffer detectado, abortando."
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMYK"
 
 msgid "CPCL Label Printer"
 msgstr "Impressora de etiqueta CPCL"
 
+msgid "Cancel Jobs"
+msgstr "Cancelar trabalhos"
+
 msgid "Cancel RSS Subscription"
 msgstr "Cancelar inscrição RSS"
 
 msgid "Canceling print job."
 msgstr "Cancelando trabalho de impressão."
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
 msgid "Cannot share a remote Kerberized printer."
 msgstr "Não foi possível compartilhar uma impressora remota via Kerberos."
 
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
+msgstr ""
+
 msgid "Cassette"
 msgstr "Cassette"
 
+msgid "Center"
+msgstr ""
+
 msgid "Change Settings"
 msgstr "Alterar configurações"
 
 #, c-format
 msgid "Character set \"%s\" not supported."
-msgstr "Conjunto de caracteres \"%s\" não é suportado."
+msgstr "Não há suporte ao conjunto de caracteres \"%s\"."
 
 msgid "Classes"
 msgstr "Classes"
@@ -2868,12 +3098,24 @@ msgstr "Limpar cabeça de impressão"
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job não suporta o atributo job-uri."
 
+msgid "Coat"
+msgstr ""
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
+msgstr ""
+
 msgid "Color"
 msgstr "Cor"
 
 msgid "Color Mode"
 msgstr "Modo colorido"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -2898,15 +3140,33 @@ msgstr "Continuar"
 msgid "Continuous"
 msgstr "Contínuo"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr "Arquivo de controle enviado com sucesso."
 
 msgid "Copying print data."
 msgstr "Copiando dados de impressão."
 
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
 msgid "Created"
 msgstr "Criada"
 
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
+
 msgid "Custom"
 msgstr "Personalizar"
 
@@ -2919,9 +3179,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "Cortar"
 
+msgid "Cut Media"
+msgstr ""
+
 msgid "Cutter"
 msgstr "Cortador"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "Escuro"
 
@@ -2986,10 +3252,37 @@ msgstr "Permissões do diretório \"%s\" estão OK (0%o/uid=%d/gid=%d)."
 msgid "Disabled"
 msgstr "Desabilitado"
 
+msgid "Disc"
+msgstr ""
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "Documento #%d não existe no trabalho #%d."
 
+msgid "Double Gate Fold"
+msgstr ""
+
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dry Film"
+msgstr ""
+
 msgid "Duplexer"
 msgstr "Duplexador"
 
@@ -3005,9 +3298,18 @@ msgstr "Impressora de etiqueta EPL2"
 msgid "Edit Configuration File"
 msgstr "Editar arquivo de configuração"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr "Arquivo PPD vazio."
 
+msgid "Encryption is not supported."
+msgstr "Não há suporte a criptografia."
+
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Banner ao final"
@@ -3015,15 +3317,6 @@ msgstr "Banner ao final"
 msgid "English"
 msgstr "Inglês"
 
-msgid "Enter old password:"
-msgstr "Digite a senha antiga:"
-
-msgid "Enter password again:"
-msgstr "Digite sua senha novamente:"
-
-msgid "Enter password:"
-msgstr "Digite a senha:"
-
 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 "
@@ -3033,8 +3326,11 @@ msgstr ""
 "página. Se você estiver usando autenticação Kerberos, certifique-se de que "
 "você tem um ticket Kerberos válido."
 
-msgid "Envelope #10 "
-msgstr "Envelope #10 "
+msgid "Envelope"
+msgstr ""
+
+msgid "Envelope #10"
+msgstr ""
 
 msgid "Envelope #11"
 msgstr "Envelope #11"
@@ -3123,8 +3419,8 @@ msgstr "Envelope Kaku3 borda maior"
 msgid "Envelope Monarch"
 msgstr "Envelope Monarch"
 
-msgid "Envelope PRC1 "
-msgstr "Envelope PRC1 "
+msgid "Envelope PRC1"
+msgstr ""
 
 msgid "Envelope PRC1 Long Edge"
 msgstr "Envelope PRC1 borda maior"
@@ -3201,6 +3497,9 @@ msgstr "Epson"
 msgid "Error Policy"
 msgstr "Política de erro"
 
+msgid "Error reading raster data."
+msgstr "Erro ao ler dados de rasterização."
+
 msgid "Error sending raster data."
 msgstr "Erro ao enviar dados de rasterização."
 
@@ -3252,6 +3551,9 @@ msgstr "Expressões:"
 msgid "FAIL"
 msgstr "FALHA"
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr "FanFold German"
 
@@ -3261,6 +3563,9 @@ msgstr "FanFold Legal German"
 msgid "Fanfold US"
 msgstr "Fanfold US"
 
+msgid "Fast Grayscale"
+msgstr ""
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "Arquivo \"%s\" contém um caminho relativo."
@@ -3281,8 +3586,8 @@ msgstr "Arquivo \"%s\" não está disponível: %s"
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "Permissões do arquivo \"%s\" estão OK (0%o/uid=%d/gid=%d)."
 
-msgid "File Folder "
-msgstr "Pasta do arquivo "
+msgid "File Folder"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -3292,16 +3597,46 @@ msgstr ""
 "URIs de arquivos de dispositivo foram desabilitadas. Para habilitar, veja a "
 "diretiva FileDevice em \"%s/cups-files.conf\"."
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
 msgstr "Terminou página %d."
 
+msgid "Finishing"
+msgstr ""
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
+msgstr ""
+
 msgid "Folio"
 msgstr "Fólio"
 
 msgid "Forbidden"
 msgstr "Proibido"
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr ""
+
 msgid "General"
 msgstr "Geral"
 
@@ -3311,23 +3646,86 @@ msgstr "Genérico"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Get-Response-PDU usa comprimento indefinido"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
 msgstr "Papel brilhante"
 
+msgid "Glossy Photo Paper"
+msgstr ""
+
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "Atributo printer-ui obtido, mas nenhum job-id."
 
+msgid "Gravure Cylinder"
+msgstr ""
+
 msgid "Grayscale"
 msgstr "Escalas de cinza"
 
 msgid "HP"
 msgstr "HP"
 
-msgid "Hanging Folder"
-msgstr "Pasta suspensa"
+msgid "Hagaki"
+msgstr ""
 
-msgid "Help file not in index."
-msgstr "Arquivo de ajuda não está no índice."
+msgid "Half Fold"
+msgstr ""
+
+msgid "Half Z Fold"
+msgstr ""
+
+msgid "Hanging Folder"
+msgstr "Pasta suspensa"
+
+msgid "Hash buffer too small."
+msgstr ""
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
+msgid "Help file not in index."
+msgstr "Arquivo de ajuda não está no índice."
+
+msgid "High"
+msgstr ""
+
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+msgid "High Gloss Photo Paper"
+msgstr ""
 
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr "Atributo 1setOf de IPP com tags de valor incompatível."
@@ -3416,6 +3814,18 @@ msgstr "String ilegal de tradução"
 msgid "Illegal whitespace character"
 msgstr "Caractere ilegal de espaço em branco"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "Opções instaláveis"
 
@@ -3449,6 +3859,9 @@ msgstr "Argumentos de nome de mídia inválidos."
 msgid "Invalid media size."
 msgstr "Tamanho de mídia inválido."
 
+msgid "Invalid ppd-name value."
+msgstr ""
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "Comando de impressora \"%s\" inválido."
@@ -3561,6 +3974,9 @@ msgstr "Inscrições de trabalho não podem ser renovadas."
 msgid "Jobs"
 msgstr "Trabalhos"
 
+msgid "Jog"
+msgstr ""
+
 msgid "LPD/LPR Host or Printer"
 msgstr "Impressora ou máquina LPD/LPR"
 
@@ -3570,40 +3986,97 @@ msgstr "Impressora de etiqueta"
 msgid "Label Top"
 msgstr "Parte superior da etiqueta"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr ""
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
-msgstr "Idioma \"%s\" não suportado."
+msgstr "Não há suporte ao idioma \"%s\"."
 
 msgid "Large Address"
 msgstr "Endereço grande"
 
+msgid "Large Capacity"
+msgstr ""
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "LaserJet Series PCL 4/5"
 
+msgid "Left"
+msgstr ""
+
+msgid "Left Gate Fold"
+msgstr ""
+
+msgid "Letter Fold"
+msgstr ""
+
 msgid "Letter Oversize"
 msgstr "Carta grande"
 
 msgid "Letter Oversize Long Edge"
 msgstr "Carta borda muito maior"
 
+msgid "Letterhead"
+msgstr ""
+
 msgid "Light"
 msgstr "Leve"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Linha maior do que o máximo permitido (255 caracteres)"
 
 msgid "List Available Printers"
 msgstr "Lista de impressoras disponíveis"
 
+msgid "Load paper."
+msgstr "Carregar papel."
+
+msgid "Local printer created."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "Borda maior (retrato)"
 
 msgid "Looking for printer."
 msgstr "Procurando impressoras."
 
+msgid "Main"
+msgstr ""
+
+msgid "Main Roll"
+msgstr ""
+
+msgid "Manual"
+msgstr ""
+
 msgid "Manual Feed"
 msgstr "Alimentação manual"
 
+msgid "Matte Fabric"
+msgstr ""
+
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
 msgid "Media Size"
 msgstr "Tamanho de mídia"
 
@@ -3622,6 +4095,27 @@ msgstr "Médio"
 msgid "Memory allocation error"
 msgstr "Erro de alocação de memória"
 
+msgid "Metal"
+msgstr ""
+
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr ""
+
 msgid "Missing CloseGroup"
 msgstr "Faltando CloseGroup"
 
@@ -3659,9 +4153,19 @@ msgstr "Faltando palavra-chave de opção"
 msgid "Missing requesting-user-name attribute."
 msgstr "Faltando atributo requesting-user-name."
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
 msgid "Missing required attributes."
 msgstr "Faltando atributos necessários."
 
+msgid "Missing resource in URI"
+msgstr "Faltando rescurso na URI"
+
+msgid "Missing scheme in URI"
+msgstr "Faltando esquema na URI"
+
 #, c-format
 msgid "Missing value on line %d."
 msgstr "Faltando valor na linha %d."
@@ -3696,6 +4200,9 @@ msgstr "Modificar classe"
 msgid "Modify Printer"
 msgstr "Modificar impressora"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "Mover todos trabalhos"
 
@@ -3705,6 +4212,15 @@ msgstr "Mover trabalho"
 msgid "Moved Permanently"
 msgstr "Mover permanentemente"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr ""
+
 msgid "NULL PPD file pointer"
 msgstr "Ponteiro NULO para arquivo PPD"
 
@@ -3717,11 +4233,11 @@ msgstr "Classes aninhadas não são permitidas."
 msgid "Never"
 msgstr "Nunca"
 
-msgid "New Stylus Color Series"
-msgstr "Nova Stylus Color Séries"
+msgid "New credentials are not valid for name."
+msgstr ""
 
-msgid "New Stylus Photo Series"
-msgstr "Nova Stylus Photos Séries"
+msgid "New credentials are older than stored credentials."
+msgstr ""
 
 msgid "No"
 msgstr "Não"
@@ -3729,6 +4245,9 @@ msgstr "Não"
 msgid "No Content"
 msgstr "Nenhum conteúdo"
 
+msgid "No Finishing"
+msgstr ""
+
 msgid "No PPD name"
 msgstr "Nenhum nome PPD"
 
@@ -3754,6 +4273,9 @@ msgstr "Nenhum atributo na requisição."
 msgid "No authentication information provided."
 msgstr "Nenhuma informação de autenticação foi fornecida."
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "Nenhum nome de comunidade"
 
@@ -3798,12 +4320,21 @@ msgstr "Nenhum printer-uri foi encontrado para classe"
 msgid "No printer-uri in request."
 msgstr "Nenhum printer-uri na requisição."
 
+msgid "No request URI."
+msgstr "Nenhuma URI de requisição."
+
+msgid "No request protocol version."
+msgstr "Nenhuma versão de protocolo de requisição."
+
 msgid "No request sent."
 msgstr "Nenhuma requisição enviada."
 
 msgid "No request-id"
 msgstr "Nenhum request-id"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr "Nenhum atributo de inscrição na requisição."
 
@@ -3838,7 +4369,7 @@ msgid "Not Modified"
 msgstr "Não modificado"
 
 msgid "Not Supported"
-msgstr "Não suportado"
+msgstr "Não há suporte"
 
 msgid "Not allowed to print."
 msgstr "Sem permissão para imprimir."
@@ -3864,6 +4395,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "Ajuda online"
 
+msgid "Only local users can create a local printer."
+msgstr ""
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "Abertura de %s falhou: %s"
@@ -3877,6 +4411,9 @@ msgstr "OpenUI/JCLOpenUI sem um CloseUI/JCLCloseUI primeiro"
 msgid "Operation Policy"
 msgstr "Política de operação"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "Opção \"%s\" não pode ser incluída via %%%%IncludeFeature."
@@ -3887,6 +4424,9 @@ msgstr "Opções instaladas"
 msgid "Options:"
 msgstr "Opções:"
 
+msgid "Other"
+msgstr ""
+
 msgid "Out of date PPD cache file."
 msgstr "Cache de arquivo PPD está desatualizado."
 
@@ -3896,21 +4436,14 @@ msgstr "Memória insuficiente."
 msgid "Output Mode"
 msgstr "Mode de saída"
 
-#, c-format
-msgid "Output for printer %s is sent to %s"
-msgstr "Saída da impressora %s é enviada para %s"
+msgid "Output bin is almost full."
+msgstr "Tabuleiro de saída está quase completo."
 
-#, c-format
-msgid "Output for printer %s is sent to remote printer %s on %s"
-msgstr "Saída da impressora %s é enviada para a impressora remota %s em %s"
+msgid "Output bin is full."
+msgstr "Tabuleiro de saída está completo."
 
-#, c-format
-msgid "Output for printer %s/%s is sent to %s"
-msgstr "Saída da impressora %s/%s é enviada para %s"
-
-#, c-format
-msgid "Output for printer %s/%s is sent to remote printer %s on %s"
-msgstr "Saída da impressora %s/%s é enviada para impressora remota %s em %s"
+msgid "Output bin is missing."
+msgstr "Tabuleiro de saída não foi encontrado."
 
 msgid "PASS"
 msgstr "PASSOU"
@@ -3942,6 +4475,24 @@ msgstr "Pacote não contém um Get-Response-PDU"
 msgid "Packet does not start with SEQUENCE"
 msgstr "Pacote não inicia com SEQUENCE"
 
+msgid "Paper"
+msgstr ""
+
+msgid "Paper jam."
+msgstr "Atolamento de papel."
+
+msgid "Paper tray is almost empty."
+msgstr "Bandeja de papel está quase vazia."
+
+msgid "Paper tray is empty."
+msgstr "Bandeja de papel está vazia."
+
+msgid "Paper tray is missing."
+msgstr "Bandeja de papel não foi encontrada."
+
+msgid "Parallel Fold"
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -3966,18 +4517,63 @@ msgstr "Pausar impressora"
 msgid "Peel-Off"
 msgstr "Descolar"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "Foto"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "Foto pequena"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr "Papel normal"
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "Políticas"
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "Monitor de porta"
 
@@ -3987,8 +4583,8 @@ msgstr "Impressora PostScript"
 msgid "Postcard"
 msgstr "Postal"
 
-msgid "Postcard Double "
-msgstr "Postal duplo"
+msgid "Postcard Double"
+msgstr ""
 
 msgid "Postcard Double Long Edge"
 msgstr "Postal duplo borda maior"
@@ -3996,9 +4592,21 @@ msgstr "Postal duplo borda maior"
 msgid "Postcard Long Edge"
 msgstr "Postal borda maior"
 
+msgid "Poster Fold"
+msgstr ""
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
 msgstr "Preparando para imprimir."
 
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
+msgstr ""
+
 msgid "Print Density"
 msgstr "Densidade de impressão"
 
@@ -4008,6 +4616,9 @@ msgstr "Trabalho de impressão:"
 msgid "Print Mode"
 msgstr "Modo de impressão"
 
+msgid "Print Quality"
+msgstr ""
+
 msgid "Print Rate"
 msgstr "Taxa de impressão"
 
@@ -4038,6 +4649,10 @@ msgstr "Trabalho de impressão muito grande."
 msgid "Print job was not accepted."
 msgstr "Trabalho de impressão não foi aceito."
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "Impressora adicionada"
 
@@ -4069,11 +4684,14 @@ msgid "Printers"
 msgstr "Impressoras"
 
 #, c-format
-msgid "Printing page %d, %d%% complete."
-msgstr "Imprimindo página %d, %d%% completo."
+msgid "Printing page %d, %u%% complete."
+msgstr "Imprimindo página %d, %u%% concluído."
 
-msgid "Purge Jobs"
-msgstr "Apagar trabalhos"
+msgid "Punch"
+msgstr ""
+
+msgid "Punched Paper"
+msgstr ""
 
 msgid "Quarto"
 msgstr "Quarto"
@@ -4084,11 +4702,8 @@ msgstr "Limite de quota alcançado."
 msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr "Ordem   Dono    Trab    Arquivo(s)                      Tamanho total"
 
-#. TRANSLATORS: Pri is job priority.
-msgid ""
-"Rank   Owner      Pri  Job        Files                       Total Size"
+msgid "Rear"
 msgstr ""
-"Ordem   Dono      Pri  Trab       Arquivos                    Tamanho total"
 
 msgid "Reject Jobs"
 msgstr "Rejeitar trabalhos"
@@ -4122,6 +4737,45 @@ msgstr "Retornar endereço"
 msgid "Rewind"
 msgstr "Rebobinar"
 
+msgid "Right"
+msgstr ""
+
+msgid "Right Gate Fold"
+msgstr ""
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr ""
+
+msgid "Roll 10"
+msgstr ""
+
+msgid "Roll 2"
+msgstr ""
+
+msgid "Roll 3"
+msgstr ""
+
+msgid "Roll 4"
+msgstr ""
+
+msgid "Roll 5"
+msgstr ""
+
+msgid "Roll 6"
+msgstr ""
+
+msgid "Roll 7"
+msgstr ""
+
+msgid "Roll 8"
+msgstr ""
+
+msgid "Roll 9"
+msgstr ""
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "Executando comando: %s %s -N -A %s -c '%s'"
@@ -4132,9 +4786,54 @@ msgstr "SEQUENCE usa comprimento indefinido"
 msgid "SSL/TLS Negotiation Error"
 msgstr "Erro de negociação SSL/TLS"
 
+msgid "Saddle Stitch"
+msgstr ""
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "Veja outro"
 
+msgid "See remote printer."
+msgstr ""
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr "Enviando dados à impressora."
 
@@ -4150,6 +4849,9 @@ msgstr "Servidor iniciou"
 msgid "Server Stopped"
 msgstr "Servidor parou"
 
+msgid "Server credentials not set."
+msgstr "Credenciais no servidor não definidas."
+
 msgid "Service Unavailable"
 msgstr "Serviço indisponível"
 
@@ -4174,6 +4876,45 @@ msgstr "Endereço de entrega"
 msgid "Short-Edge (Landscape)"
 msgstr "Borda menor (paisagem)"
 
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr ""
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Staple (Landscape)"
+msgstr ""
+
+msgid "Single Staple (Portrait)"
+msgstr ""
+
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Wall Cardboard"
+msgstr ""
+
+msgid "Sleeve"
+msgstr ""
+
 msgid "Special Paper"
 msgstr "Papel especial"
 
@@ -4184,6 +4925,24 @@ msgstr "Trabalho de impressão, %.0f%% completo."
 msgid "Standard"
 msgstr "Padrão"
 
+msgid "Staple"
+msgstr ""
+
+msgid "Staple Edge"
+msgstr ""
+
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "Iniciando banner"
@@ -4195,11 +4954,20 @@ msgstr "Iniciando página %d."
 msgid "Statement"
 msgstr "Declaração"
 
-msgid "Stylus Color Series"
-msgstr "Stylus Color Séries"
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
 
-msgid "Stylus Photo Series"
-msgstr "Stylus Photo Séries"
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
 
 #, c-format
 msgid "Subscription #%d does not exist."
@@ -4220,6 +4988,9 @@ msgstr "Super B/A3"
 msgid "Switching Protocols"
 msgstr "Alternando protocolos"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "Tabloide"
 
@@ -4248,11 +5019,10 @@ msgstr "O atributo %s não pode ser fornecido com job-ids."
 
 #, c-format
 msgid ""
-"The '%s' Job Description attribute cannot be supplied in a job creation "
-"request."
+"The '%s' Job Status attribute cannot be supplied in a job creation request."
 msgstr ""
-"O atributo Job Description \"%s\" não pode ser fornecido em uma requisição "
-"de criação de trabalho."
+"O atributo de estado de trabalho '%s' não pode ser fornecido em uma "
+"requisição de criação de trabalho."
 
 #, c-format
 msgid ""
@@ -4307,27 +5077,6 @@ msgstr "O fotocondutor óptico precisa ser substituído."
 msgid "The optical photoconductor will need to be replaced soon."
 msgstr "O fotocondutor óptico precisará ser substituído em breve."
 
-msgid "The output bin is almost full."
-msgstr "O tabuleiro de saída está quase completo."
-
-msgid "The output bin is full."
-msgstr "O tabuleiro de saída está completo."
-
-msgid "The output bin is missing."
-msgstr "O tabuleiro de saída não foi encontrado."
-
-msgid "The paper tray is almost empty."
-msgstr "O bandeja de papel está quase vazia."
-
-msgid "The paper tray is empty."
-msgstr "O bandeja de papel está vazia."
-
-msgid "The paper tray is missing."
-msgstr "O bandeja de papel não foi encontrada."
-
-msgid "The paper tray needs to be filled."
-msgstr "O bandeja de papel precisa ser recarregada."
-
 msgid "The printer configuration is incorrect or the printer no longer exists."
 msgstr ""
 "A configuração da impressora está incorreta ou a impressora não existe mais."
@@ -4338,6 +5087,12 @@ msgstr "A impressora não respondeu."
 msgid "The printer is in use."
 msgstr "A impressora está em uso."
 
+msgid "The printer is low on ink."
+msgstr "A impressora está ficando sem tinta."
+
+msgid "The printer is low on toner."
+msgstr "A impressora está ficando sem toner."
+
 msgid "The printer is not connected."
 msgstr "A impressora não está conectada."
 
@@ -4353,12 +5108,6 @@ msgstr "A impressora está agora online."
 msgid "The printer is offline."
 msgstr "A impressora está offline."
 
-msgid "The printer is running low on ink."
-msgstr "A impressora está ficando sem tinta."
-
-msgid "The printer is running low on toner."
-msgstr "A impressora está ficando sem toner."
-
 msgid "The printer is unreachable at this time."
 msgstr "A impressora está inacessível neste momento."
 
@@ -4433,14 +5182,11 @@ msgstr ""
 
 #, c-format
 msgid "The which-jobs value \"%s\" is not supported."
-msgstr "O valor de which-jobs \"%s\" não é suportado."
+msgstr "Não há suporte ao valor de which-jobs \"%s\"."
 
 msgid "There are too many subscriptions."
 msgstr "Há inscrições demais."
 
-msgid "There is a paper jam."
-msgstr "Ocorreu um atolamento de papel."
-
 msgid "There was an unrecoverable USB error."
 msgstr "Ocorreu um erro de USB irrecuperável."
 
@@ -4458,6 +5204,15 @@ msgstr "Há valores de job-sheets demais (%d > 2)."
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "Há valores de printer-state-reasons demais (%d >%d)."
 
+msgid "Top"
+msgstr ""
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
+msgstr ""
+
 msgid "Transparency"
 msgstr "Transparência"
 
@@ -4467,18 +5222,87 @@ msgstr "Bandeja"
 msgid "Tray 1"
 msgstr "Bandeja 1"
 
+msgid "Tray 10"
+msgstr ""
+
+msgid "Tray 11"
+msgstr ""
+
+msgid "Tray 12"
+msgstr ""
+
+msgid "Tray 13"
+msgstr ""
+
+msgid "Tray 14"
+msgstr ""
+
+msgid "Tray 15"
+msgstr ""
+
+msgid "Tray 16"
+msgstr ""
+
+msgid "Tray 17"
+msgstr ""
+
+msgid "Tray 18"
+msgstr ""
+
+msgid "Tray 19"
+msgstr ""
+
 msgid "Tray 2"
 msgstr "Bandeja 2"
 
+msgid "Tray 20"
+msgstr ""
+
 msgid "Tray 3"
 msgstr "Bandeja 3"
 
 msgid "Tray 4"
 msgstr "Bandeja 4"
 
+msgid "Tray 5"
+msgstr ""
+
+msgid "Tray 6"
+msgstr ""
+
+msgid "Tray 7"
+msgstr ""
+
+msgid "Tray 8"
+msgstr ""
+
+msgid "Tray 9"
+msgstr ""
+
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "URI muito longa"
 
+msgid "URI too large"
+msgstr "URI muito grande"
+
 msgid "US Ledger"
 msgstr "US Ledger"
 
@@ -4601,13 +5425,18 @@ msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr ""
 "Não foi possível copiar arquivos de driver de impressora (%d) de Windows 9x."
 
-#, c-format
-msgid "Unable to copy interface script - %s"
-msgstr "Não foi possível copiar script de interface - %s"
+msgid "Unable to create credentials from array."
+msgstr ""
 
 msgid "Unable to create printer-uri"
 msgstr "Não foi possível criar uri de impressora"
 
+msgid "Unable to create printer."
+msgstr ""
+
+msgid "Unable to create server credentials."
+msgstr "Não foi possível criar credenciais no servidor."
+
 msgid "Unable to create temporary file"
 msgstr "Não foi possível criar arquivo temporário"
 
@@ -4673,6 +5502,9 @@ msgstr "Não foi possível encontrar o destino do trabalho"
 msgid "Unable to find printer."
 msgstr "Não foi possível encontrar a impressora."
 
+msgid "Unable to find server credentials."
+msgstr "Não foi possível encontrar credenciais no servidor."
+
 msgid "Unable to get backend exit status."
 msgstr "Não foi possível obter o estado de saída do backend."
 
@@ -4686,16 +5518,16 @@ msgid "Unable to get list of printer drivers"
 msgstr "Não foi possível obter lista de drivers de impressoras"
 
 msgid "Unable to get printer attributes"
-msgstr "Não foi possível obter atributos de impressora"
+msgstr "Não foi possível obter atributos da impressora"
 
 msgid "Unable to get printer list"
-msgstr "Não foi possível obter lista de impressora"
+msgstr "Não foi possível obter lista de impressoras"
 
 msgid "Unable to get printer status"
-msgstr "Não foi possível obter status de impressora"
+msgstr "Não foi possível obter estado da impressora"
 
 msgid "Unable to get printer status."
-msgstr "Não foi possível obter o estado de impressora."
+msgstr "Não foi possível obter o estado da impressora."
 
 #, c-format
 msgid "Unable to install Windows 2000 printer driver files (%d)."
@@ -4757,8 +5589,11 @@ msgstr "Não foi possível imprimir página teste"
 msgid "Unable to read print data."
 msgstr "Não foi possível ler dados de impressão."
 
-msgid "Unable to resolve printer URI."
-msgstr "Não foi possível resolver URI da impressora."
+msgid "Unable to rename job document file."
+msgstr "Não foi possível renomear o arquivo de documento do trabalho."
+
+msgid "Unable to resolve printer-uri."
+msgstr "Não foi possível resolver printer-ui."
 
 #, c-format
 msgid "Unable to run \"%s\": %s"
@@ -4824,6 +5659,9 @@ msgstr "Ordem de arquivo desconhecida: \"%s\"."
 msgid "Unknown format character: \"%c\"."
 msgstr "Caractere de formato desconhecido: \"%c\"."
 
+msgid "Unknown hash algorithm."
+msgstr ""
+
 msgid "Unknown media size name."
 msgstr "Nome de tamanho de mídia desconhecido."
 
@@ -4847,6 +5685,15 @@ msgstr "printer-error-policy \"%s\" desconhecido."
 msgid "Unknown printer-op-policy \"%s\"."
 msgstr "printer-op-policy \"%s\" desconhecido."
 
+msgid "Unknown request method."
+msgstr "Método de requisição desconhecido."
+
+msgid "Unknown request version."
+msgstr "Versão de requisição desconhecida."
+
+msgid "Unknown scheme in URI"
+msgstr "Esquema desconhecido na URI"
+
 msgid "Unknown service name."
 msgstr "Nome de serviço desconhecido."
 
@@ -4856,59 +5703,59 @@ msgstr "Valor de opção de versão desconhecido: \"%s\"."
 
 #, c-format
 msgid "Unsupported 'compression' value \"%s\"."
-msgstr "Valor de \"compression\" sem suporte \"%s\"."
+msgstr "Não suporte a \"compression\" com valor \"%s\"."
 
 #, c-format
 msgid "Unsupported 'document-format' value \"%s\"."
-msgstr "Valor de \"document-format\" sem suporte \"%s\"."
+msgstr "Não há suporte a \"document-format\" com valor \"%s\"."
 
 msgid "Unsupported 'job-name' value."
-msgstr "Valor de \"job-name\" sem suporte."
+msgstr "Não há suporte ao valor de \"job-name\"."
 
 #, c-format
 msgid "Unsupported character set \"%s\"."
-msgstr "Conjunto de caracteres \"%s\" sem suporte."
+msgstr "Não há suporte ao conjunto de caracteres \"%s\"."
 
 #, c-format
 msgid "Unsupported compression \"%s\"."
-msgstr "Compressão \"%s\" sem suporte."
+msgstr "Não há suporte à compressão \"%s\"."
 
 #, c-format
 msgid "Unsupported document-format \"%s\"."
-msgstr "document-format \"%s\" sem suporte."
+msgstr "Não há suporte ao document-format \"%s\"."
 
 #, c-format
 msgid "Unsupported document-format \"%s/%s\"."
-msgstr "document-format \"%s/%s\" sem suporte."
+msgstr "Não há suporte ao document-format \"%s/%s\"."
 
 #, c-format
 msgid "Unsupported format \"%s\"."
-msgstr "Formato \"%s\" sem suporte."
+msgstr "Não há suporte ao formato \"%s\"."
 
 msgid "Unsupported margins."
-msgstr "Margens sem suporte."
+msgstr "Não há suporte a margens."
 
 msgid "Unsupported media value."
-msgstr "Valor de mídia sem suporte."
+msgstr "Não há suporte ao valor de mídia."
 
 #, c-format
 msgid "Unsupported number-up value %d, using number-up=1."
-msgstr "Valor de number-up %d sem suporte; usando number-up=1."
+msgstr "Não há suporte ao valor de number-up %d; usando number-up=1."
 
 #, c-format
 msgid "Unsupported number-up-layout value %s, using number-up-layout=lrtb."
 msgstr ""
-"Valor de number-up-layout %s sem suporte; usando number-up-layout=lrtb."
+"Não há suporte ao valor de number-up-layout %s; usando number-up-layout=lrtb."
 
 #, c-format
 msgid "Unsupported page-border value %s, using page-border=none."
-msgstr "Valor de page-border %s sem suporte; usando page-border=none."
+msgstr "Não há suporte ao valor de page-border %s; usando page-border=none."
 
 msgid "Unsupported raster data."
-msgstr "Dados de rasterização sem suporte."
+msgstr "Não há suporte a dados de rasterização."
 
 msgid "Unsupported value type"
-msgstr "Tipo de valor sem suporte"
+msgstr "Não há suporte ao tipo de valor"
 
 msgid "Upgrade Required"
 msgstr "Atualização necessária"
@@ -4945,8 +5792,8 @@ msgstr "Uso: cupsctl [opções] [param=valor ... paramN=valorN]"
 msgid "Usage: cupsd [options]"
 msgstr "Uso: cupsd [opções]"
 
-msgid "Usage: cupsfilter [ options ] filename"
-msgstr "Uso: cupsfilter [ opções ] arquivo"
+msgid "Usage: cupsfilter [ options ] [ -- ] filename"
+msgstr "Uso: cupsfilter [ opções ] [ -- ] arquivo"
 
 msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]"
 msgstr "Uso: cupstestdsc [opções] arquivo.ps [... arquivo.ps]"
@@ -4956,17 +5803,6 @@ msgid ""
 msgstr "Uso: cupstestppd [opções] arquivo1.ppd[.gz] [... arquivoN.ppd[.gz]]"
 
 msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-"Uso: ippdiscover [opções] -a\n"
-"     ippdiscover [opções] \"nome do serviço\"\n"
-"\n"
-"Opções:"
-
-msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
 "       ippfind --help\n"
@@ -4994,18 +5830,6 @@ msgstr ""
 "     lpoptions [-h servidor] [-E] -p impressora -o opção[=valor] ...\n"
 "     lpoptions [-h servidor] [-E] -x impressora"
 
-msgid "Usage: lppasswd [-g groupname]"
-msgstr "Uso: lppasswd [-g grupo]"
-
-msgid ""
-"Usage: lppasswd [-g groupname] [username]\n"
-"       lppasswd [-g groupname] -a [username]\n"
-"       lppasswd [-g groupname] -x [username]"
-msgstr ""
-"Uso: lppasswd [-g grupo] [usuário]\n"
-"     lppasswd [-g grupo] -a [usuário]\n"
-"     lppasswd [-g grupo] -x [usuário]"
-
 msgid ""
 "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]"
 msgstr "Uso: lpq [-P dest] [-U usuário] [-h máquina[:porta]] [-l] [+intervalo]"
@@ -5035,6 +5859,9 @@ msgstr "Valor usa comprimento indefinido"
 msgid "VarBind uses indefinite length"
 msgstr "VarBind usa comprimento indefinido"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "Version usa comprimento indefinido"
 
@@ -5050,9 +5877,18 @@ msgstr "Esperando a impressora finalizar."
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr "Aviso, nenhum driver de impressora Windows 2000 está instalado."
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr "Interface web está desabilitada"
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "Sim"
 
@@ -5064,12 +5900,8 @@ msgstr ""
 "Você tem que acessar esta página usando a URL <A HREF=\"https://%s:%d%s"
 "\">https://%s:%d%s</A>."
 
-msgid ""
-"Your password must be at least 6 characters long, cannot contain your "
-"username, and must contain at least one letter and number."
+msgid "Z Fold"
 msgstr ""
-"Sua senha deve ser pelo menos de 6 caracteres, não pode conter o seu nome de "
-"usuário, e deve conter pelo menos uma letra e um número."
 
 msgid "ZPL Label Printer"
 msgstr "Impressora de etiqueta ZPL"
@@ -5118,6 +5950,11 @@ msgid "cupsd: Expected cups-files.conf filename after \"-s\" option."
 msgstr ""
 "cupsd: Esperava nome de arquivo de cups-files.conf após a opção \"-s\"."
 
+msgid "cupsd: On-demand support not compiled in, running in normal mode."
+msgstr ""
+"cupsd: Suporte à funcionalidade sob demanda não compilado, executando em "
+"modo normal."
+
 msgid "cupsd: Relative cups-files.conf filename not allowed."
 msgstr "cupsd: Nome de arquivo relativo para cups-files.conf não é permitido."
 
@@ -5136,11 +5973,6 @@ msgstr "cupsd: Argumento desconhecido \"%s\" - abortando."
 msgid "cupsd: Unknown option \"%c\" - aborting."
 msgstr "cupsd: Opção desconhecida \"%c\" - abortando."
 
-msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
-msgstr ""
-"cupsd: Compilado sem suporte a launchd(8) e, portanto, executando no modo "
-"normal."
-
 #, c-format
 msgid "cupsfilter: Invalid document number %d."
 msgstr "cupsfilter: Número de documento inválido %d."
@@ -5261,8 +6093,8 @@ msgstr "ippfind: Não foi possível usar Bonjour: %s"
 msgid "ippfind: Unknown variable \"{%s}\"."
 msgstr "ippfind: Argumento desconhecido \"{%s}\"."
 
-msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
-msgstr "ipptool: \"-i\" e \"-n\" são incompatíveis com \"-X\"."
+msgid "ipptool: \"-i\" and \"-n\" are incompatible with \"-P\" and \"-X\"."
+msgstr "ipptool: \"-i\" e \"-n\" são incompatíveis com \"-P\" e \"-X\"."
 
 #, c-format
 msgid "ipptool: Bad URI - %s."
@@ -5299,8 +6131,9 @@ msgstr "Faltando atributo de job-printer-uri."
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: Nome da classe só pode conter caracteres imprimíveis."
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr "lpadmin: Esperava PPD após a opção \"-P\"."
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
+msgstr ""
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr ""
@@ -5324,9 +6157,6 @@ msgstr "lpadmin: Esperava tipo(s) de arquivo(s) após a opção \"-I\"."
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr "lpadmin: Esperava nome do máquina após a opção \"-h\"."
 
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr "lpadmin: Esperava interface após a opção \"-i\"."
-
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: Esperava localização após a opção \"-L\"."
 
@@ -5384,6 +6214,10 @@ msgstr ""
 "         Você deve primeiro especificar o nome da impressora."
 
 #, c-format
+msgid "lpadmin: Unable to open PPD \"%s\": %s on line %d."
+msgstr "lpadmin: Não foi possível abrir PPD \"%s\": %s na linha %d."
+
+#, c-format
 msgid "lpadmin: Unable to open PPD file \"%s\" - %s"
 msgstr "lpadmin: Não foi possível abrir o arquivo PPD \"%s\" - %s"
 
@@ -5442,18 +6276,6 @@ msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr "lpinfo: Esperava tempo de espera após \"--timeout\"."
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr "lpinfo: Argumento desconhecido \"%s\"."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr "lpinfo: Opção desconhecida \"%c\"."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr "lpinfo: Opção desconhecida \"%s\"."
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: Não foi possível conectar ao servidor: %s"
 
@@ -5461,10 +6283,6 @@ msgstr "lpmove: Não foi possível conectar ao servidor: %s"
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: Argumento desconhecido \"%s\"."
 
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr "lpmove: Opção desconhecida \"%c\"."
-
 msgid "lpoptions: No printers."
 msgstr "lpoptions: Nenhuma impressora."
 
@@ -5483,48 +6301,6 @@ msgstr "lpoptions: Não foi possível abrir o arquivo PPD para %s."
 msgid "lpoptions: Unknown printer or class."
 msgstr "lpoptions: Impressora ou classe desconhecida."
 
-msgid "lppasswd: Only root can add or delete passwords."
-msgstr "lppasswd: Somente o root pode adicionar ou excluir senhas."
-
-msgid "lppasswd: Password file busy."
-msgstr "lppasswd: Arquivo de senhas ocupado."
-
-msgid "lppasswd: Password file not updated."
-msgstr "lppasswd: Arquivo de senhas não atualizado."
-
-msgid "lppasswd: Sorry, password doesn't match."
-msgstr "lppasswd: Desculpe, senha não corresponde."
-
-msgid "lppasswd: Sorry, password rejected."
-msgstr "lppasswd: Desculpe, senha rejeitada."
-
-msgid "lppasswd: Sorry, passwords don't match."
-msgstr "lppasswd: Desculpe, senhas não correspondem."
-
-#, c-format
-msgid "lppasswd: Unable to copy password string: %s"
-msgstr "lppasswd: Não foi possível copiar string de senha: %s"
-
-#, c-format
-msgid "lppasswd: Unable to open password file: %s"
-msgstr "lppasswd: Não foi possível abrir arquivo de senhas: %s"
-
-#, c-format
-msgid "lppasswd: Unable to write to password file: %s"
-msgstr "lppasswd: Não foi possível gravar no arquivo de senha: %s"
-
-#, c-format
-msgid "lppasswd: failed to backup old password file: %s"
-msgstr "lppasswd: Falha ao fazer backup do arquivo de senhas antigo: %s"
-
-#, c-format
-msgid "lppasswd: failed to rename password file: %s"
-msgstr "lppasswd: Falha ao renomear arquivo de senhas: %s"
-
-#, c-format
-msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
-msgstr "lppasswd: Usuário \"%s\" e grupo \"%s\" não existem."
-
 #, c-format
 msgid ""
 "lpstat: error - %s environment variable names non-existent destination \"%s"
@@ -5783,7 +6559,7 @@ msgstr "ppdc: Esperava versão após Font na linha %d de %s."
 
 #, c-format
 msgid "ppdc: Invalid #include/#po filename \"%s\"."
-msgstr "ppdc: Nome de arquivo \"%s\" de #include/#po inválido. "
+msgstr "ppdc: Nome de arquivo \"%s\" de #include/#po inválido."
 
 #, c-format
 msgid "ppdc: Invalid cost for filter on line %d of %s."
@@ -5811,7 +6587,7 @@ msgstr "ppdc: Carregando arquivo \"%s\" de informações de driver."
 
 #, c-format
 msgid "ppdc: Loading messages for locale \"%s\"."
-msgstr "ppdc: Carregando mensagens para locale \"%s\" ."
+msgstr "ppdc: Carregando mensagens para locale \"%s\"."
 
 #, c-format
 msgid "ppdc: Loading messages from \"%s\"."
@@ -6017,3 +6793,233 @@ msgstr "sem título"
 
 msgid "variable-bindings uses indefinite length"
 msgstr "variable-bindings usa comprimento indefinido"
+
+#~ msgid "\tInterface: %s/interfaces/%s"
+#~ msgstr "\tInterface: %s/interfaces/%s"
+
+#~ msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+#~ msgstr "  --lf                    Fim de linhas com LF (UNIX/Linux/OS X)."
+
+#~ msgid "  -a                      Browse for all services."
+#~ msgstr "  -a                      Navega por todos os serviços."
+
+#~ msgid "  -d domain               Browse/resolve in specified domain."
+#~ msgstr "  -d domínio              Navega/resolve no domínio especificado."
+
+#~ msgid "  -l                      Run cupsd from launchd(8)."
+#~ msgstr "  -l                      Executa cupsd a partir do launchd(8)."
+
+#~ msgid "  -p program              Run specified program for each service."
+#~ msgstr ""
+#~ "  -p programa             Executa o programa especificado para cada "
+#~ "serviço."
+
+#~ msgid "  -t type                 Browse/resolve with specified type."
+#~ msgstr "  -t tipo                 Navega/resolve com o tipo especificado."
+
+#~ msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+#~ msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes"
+
+#~ msgid "720dpi"
+#~ msgstr "720dpi"
+
+#~ msgid "Bad printer URI."
+#~ msgstr "URI de impressora inválido."
+
+#~ msgid "Enter old password:"
+#~ msgstr "Digite a senha antiga:"
+
+#~ msgid "Enter password again:"
+#~ msgstr "Digite sua senha novamente:"
+
+#~ msgid "Enter password:"
+#~ msgstr "Digite a senha:"
+
+#~ msgid "Envelope #10 "
+#~ msgstr "Envelope #10 "
+
+#~ msgid "Envelope PRC1 "
+#~ msgstr "Envelope PRC1 "
+
+#~ msgid "File Folder "
+#~ msgstr "Pasta do arquivo "
+
+#~ msgid "Looking for printer..."
+#~ msgstr "Procurando por impressora..."
+
+#~ msgid "New Stylus Color Series"
+#~ msgstr "Nova Stylus Color Séries"
+
+#~ msgid "New Stylus Photo Series"
+#~ msgstr "Nova Stylus Photos Séries"
+
+#~ msgid "Output for printer %s is sent to %s"
+#~ msgstr "Saída da impressora %s é enviada para %s"
+
+#~ msgid "Output for printer %s is sent to remote printer %s on %s"
+#~ msgstr "Saída da impressora %s é enviada para a impressora remota %s em %s"
+
+#~ msgid "Output for printer %s/%s is sent to %s"
+#~ msgstr "Saída da impressora %s/%s é enviada para %s"
+
+#~ msgid "Output for printer %s/%s is sent to remote printer %s on %s"
+#~ msgstr "Saída da impressora %s/%s é enviada para impressora remota %s em %s"
+
+#~ msgid "Postcard Double "
+#~ msgstr "Postal duplo "
+
+#~ msgid "Printing page %d, %d%% complete."
+#~ msgstr "Imprimindo página %d, %d%% completo."
+
+#~ msgid "Purge Jobs"
+#~ msgstr "Apagar trabalhos"
+
+#~ msgid ""
+#~ "Rank   Owner      Pri  Job        Files                       Total Size"
+#~ msgstr ""
+#~ "Ordem   Dono      Pri  Trab       Arquivos                    Tamanho "
+#~ "total"
+
+#~ msgid "Stylus Color Series"
+#~ msgstr "Stylus Color Séries"
+
+#~ msgid "Stylus Photo Series"
+#~ msgstr "Stylus Photo Séries"
+
+#~ msgid ""
+#~ "The '%s' Job Description attribute cannot be supplied in a job creation "
+#~ "request."
+#~ msgstr ""
+#~ "O atributo Job Description \"%s\" não pode ser fornecido em uma "
+#~ "requisição de criação de trabalho."
+
+#~ msgid "The output bin is almost full."
+#~ msgstr "O tabuleiro de saída está quase completo."
+
+#~ msgid "The output bin is full."
+#~ msgstr "O tabuleiro de saída está completo."
+
+#~ msgid "The output bin is missing."
+#~ msgstr "O tabuleiro de saída não foi encontrado."
+
+#~ msgid "The paper tray is almost empty."
+#~ msgstr "O bandeja de papel está quase vazia."
+
+#~ msgid "The paper tray is empty."
+#~ msgstr "O bandeja de papel está vazia."
+
+#~ msgid "The paper tray is missing."
+#~ msgstr "O bandeja de papel não foi encontrada."
+
+#~ msgid "The paper tray needs to be filled."
+#~ msgstr "O bandeja de papel precisa ser recarregada."
+
+#~ msgid "The printer is running low on ink."
+#~ msgstr "A impressora está ficando sem tinta."
+
+#~ msgid "The printer is running low on toner."
+#~ msgstr "A impressora está ficando sem toner."
+
+#~ msgid "There is a paper jam."
+#~ msgstr "Ocorreu um atolamento de papel."
+
+#~ msgid "Unable to copy interface script - %s"
+#~ msgstr "Não foi possível copiar script de interface - %s"
+
+#~ msgid "Unable to resolve printer URI."
+#~ msgstr "Não foi possível resolver URI da impressora."
+
+#~ msgid "Usage: cupsfilter [ options ] filename"
+#~ msgstr "Uso: cupsfilter [ opções ] arquivo"
+
+#~ msgid ""
+#~ "Usage: ippdiscover [options] -a\n"
+#~ "       ippdiscover [options] \"service name\"\n"
+#~ "\n"
+#~ "Options:"
+#~ msgstr ""
+#~ "Uso: ippdiscover [opções] -a\n"
+#~ "     ippdiscover [opções] \"nome do serviço\"\n"
+#~ "\n"
+#~ "Opções:"
+
+#~ msgid "Usage: lppasswd [-g groupname]"
+#~ msgstr "Uso: lppasswd [-g grupo]"
+
+#~ msgid ""
+#~ "Usage: lppasswd [-g groupname] [username]\n"
+#~ "       lppasswd [-g groupname] -a [username]\n"
+#~ "       lppasswd [-g groupname] -x [username]"
+#~ msgstr ""
+#~ "Uso: lppasswd [-g grupo] [usuário]\n"
+#~ "     lppasswd [-g grupo] -a [usuário]\n"
+#~ "     lppasswd [-g grupo] -x [usuário]"
+
+#~ msgid ""
+#~ "Your password must be at least 6 characters long, cannot contain your "
+#~ "username, and must contain at least one letter and number."
+#~ msgstr ""
+#~ "Sua senha deve ser pelo menos de 6 caracteres, não pode conter o seu nome "
+#~ "de usuário, e deve conter pelo menos uma letra e um número."
+
+#~ msgid "cupsd: launchd(8) support not compiled in, running in normal mode."
+#~ msgstr ""
+#~ "cupsd: Compilado sem suporte a launchd(8) e, portanto, executando no modo "
+#~ "normal."
+
+#~ msgid "ipptool: \"-i\" and \"-n\" are incompatible with -X\"."
+#~ msgstr "ipptool: \"-i\" e \"-n\" são incompatíveis com \"-X\"."
+
+#~ msgid "lpadmin: Expected PPD after \"-P\" option."
+#~ msgstr "lpadmin: Esperava PPD após a opção \"-P\"."
+
+#~ msgid "lpadmin: Expected interface after \"-i\" option."
+#~ msgstr "lpadmin: Esperava interface após a opção \"-i\"."
+
+#~ msgid "lpinfo: Unknown argument \"%s\"."
+#~ msgstr "lpinfo: Argumento desconhecido \"%s\"."
+
+#~ msgid "lpinfo: Unknown option \"%c\"."
+#~ msgstr "lpinfo: Opção desconhecida \"%c\"."
+
+#~ msgid "lpinfo: Unknown option \"%s\"."
+#~ msgstr "lpinfo: Opção desconhecida \"%s\"."
+
+#~ msgid "lpmove: Unknown option \"%c\"."
+#~ msgstr "lpmove: Opção desconhecida \"%c\"."
+
+#~ msgid "lppasswd: Only root can add or delete passwords."
+#~ msgstr "lppasswd: Somente o root pode adicionar ou excluir senhas."
+
+#~ msgid "lppasswd: Password file busy."
+#~ msgstr "lppasswd: Arquivo de senhas ocupado."
+
+#~ msgid "lppasswd: Password file not updated."
+#~ msgstr "lppasswd: Arquivo de senhas não atualizado."
+
+#~ msgid "lppasswd: Sorry, password doesn't match."
+#~ msgstr "lppasswd: Desculpe, senha não corresponde."
+
+#~ msgid "lppasswd: Sorry, password rejected."
+#~ msgstr "lppasswd: Desculpe, senha rejeitada."
+
+#~ msgid "lppasswd: Sorry, passwords don't match."
+#~ msgstr "lppasswd: Desculpe, senhas não correspondem."
+
+#~ msgid "lppasswd: Unable to copy password string: %s"
+#~ msgstr "lppasswd: Não foi possível copiar string de senha: %s"
+
+#~ msgid "lppasswd: Unable to open password file: %s"
+#~ msgstr "lppasswd: Não foi possível abrir arquivo de senhas: %s"
+
+#~ msgid "lppasswd: Unable to write to password file: %s"
+#~ msgstr "lppasswd: Não foi possível gravar no arquivo de senha: %s"
+
+#~ msgid "lppasswd: failed to backup old password file: %s"
+#~ msgstr "lppasswd: Falha ao fazer backup do arquivo de senhas antigo: %s"
+
+#~ msgid "lppasswd: failed to rename password file: %s"
+#~ msgstr "lppasswd: Falha ao renomear arquivo de senhas: %s"
+
+#~ msgid "lppasswd: user \"%s\" and group \"%s\" do not exist."
+#~ msgstr "lppasswd: Usuário \"%s\" e grupo \"%s\" não existem."
index 88a618c..130945f 100644 (file)
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: CUPS 2.0\n"
 "Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
-"POT-Creation-Date: 2015-07-20 14:24-0400\n"
+"POT-Creation-Date: 2016-08-30 16:00-0400\n"
 "PO-Revision-Date: 2015-01-28 12:00-0800\n"
 "Last-Translator: Aleksandr Proklov\n"
 "Language-Team: PuppyRus Linux Team\n"
@@ -71,10 +71,6 @@ msgid "\tInterface: %s.ppd"
 msgstr "\tИнтерфейс: %s.ppd"
 
 #, c-format
-msgid "\tInterface: %s/interfaces/%s"
-msgstr "\tИнтерфейс: %s/интерфейсы/%s"
-
-#, c-format
 msgid "\tInterface: %s/ppd/%s.ppd"
 msgstr "\tИнтерфейс: %s/ppd/%s.ppd"
 
@@ -937,9 +933,8 @@ msgstr "  --help                  Показать эту справку."
 msgid "  --host regex            Match hostname to regular expression."
 msgstr "  --host regex            Найти hostname по регулярному выражению."
 
-msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+msgid "  --lf                    End lines with LF (UNIX/Linux/macOS)."
 msgstr ""
-"  --lf                    Строки заканчиваются на LF (UNIX/Linux/Mac OS X)."
 
 msgid "  --list-filters          List filters that will be used."
 msgstr ""
@@ -1091,9 +1086,6 @@ msgstr ""
 msgid "  -X                      Produce XML plist instead of plain text."
 msgstr "  -X                      Выводить XML plist вместо обычного текста."
 
-msgid "  -a                      Browse for all services."
-msgstr "  -a                      Обзор всех сервисов."
-
 msgid "  -a                      Export all printers."
 msgstr "  -a                      Экспорт всех принтеров."
 
@@ -1109,9 +1101,6 @@ msgstr "  -c cups-files.conf      Использовать заданный cups
 msgid "  -c cupsd.conf           Set cupsd.conf file to use."
 msgstr "  -c cupsd.conf           Использовать заданный cupsd.conf"
 
-msgid "  -d domain               Browse/resolve in specified domain."
-msgstr "  -d domain               Просмотр в заданном домене."
-
 msgid "  -d name=value           Set named variable to value."
 msgstr "  -d name=value           Указанной переменной присваивается значение."
 
@@ -1210,9 +1199,6 @@ msgstr "  -p                      Печать URI при соответстви
 msgid "  -p filename.ppd         Set PPD file."
 msgstr "  -p filename.ppd         Задать PPD-файл."
 
-msgid "  -p program              Run specified program for each service."
-msgstr "  -p program              Запустить указанную программу."
-
 msgid "  -q                      Quietly report match via exit code."
 msgstr ""
 "  -q                      Кратко уведомлять о совпадении через код выхода."
@@ -1229,6 +1215,9 @@ msgstr "  -r                      Используется открытый ре
 msgid "  -s                      Print service name if true."
 msgstr "  -s                      Печать имени сервиса если соответствует."
 
+msgid "  -s cups-files.conf      Set cups-files.conf file to use."
+msgstr ""
+
 msgid "  -t                      Produce a test report."
 msgstr "  -t                      Создать тестовый отчет."
 
@@ -1244,9 +1233,6 @@ msgstr "  -t key                  \"Истина\" если TXT запись с
 msgid "  -t title                Set title."
 msgstr "  -t title                Задать заголовок."
 
-msgid "  -t type                 Browse/resolve with specified type."
-msgstr "  -t type                 Просмотр/определение по указанному типу."
-
 msgid "  -u                      Remove the PPD file when finished."
 msgstr "  -u                      Удалить PPD-файл после завершения."
 
@@ -1682,6 +1668,10 @@ msgstr ""
 "задания."
 
 #, c-format
+msgid "%s: Error - copies must be 1 or more."
+msgstr ""
+
+#, c-format
 msgid "%s: Error - expected character set after \"-S\" option."
 msgstr "%s: Ошибка - после параметра \"-S\" должен идти набор символов."
 
@@ -1898,6 +1888,10 @@ msgid "%s: Unable to resolve \"%s\"."
 msgstr ""
 
 #, c-format
+msgid "%s: Unknown argument \"%s\"."
+msgstr ""
+
+#, c-format
 msgid "%s: Unknown destination \"%s\"."
 msgstr "%s: Неизвестное назначение \"%s\"."
 
@@ -2185,6 +2179,18 @@ msgstr "2"
 msgid "2 inches/sec."
 msgstr "2 дюйма/с"
 
+msgid "2-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "2-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "2-Sided Printing"
 msgstr "двусторонняя печать"
 
@@ -2299,6 +2305,18 @@ msgstr "3 дюйма/с"
 msgid "3 x 5"
 msgstr ""
 
+msgid "3-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "3-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "3.00x1.00\""
 msgstr "3,00x1,00\""
 
@@ -2365,6 +2383,18 @@ msgstr "4"
 msgid "4 inches/sec."
 msgstr "4 дюйма/с"
 
+msgid "4-Hole Punch (Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Portrait)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "4-Hole Punch (Reverse Portrait)"
+msgstr ""
+
 msgid "4.00x1.00\""
 msgstr "4,00x1,00\""
 
@@ -2661,6 +2691,9 @@ msgstr "Принять задания"
 msgid "Accepted"
 msgstr "Принято"
 
+msgid "Accordian Fold"
+msgstr ""
+
 msgid "Add Class"
 msgstr "Добавить группу"
 
@@ -2676,6 +2709,15 @@ msgstr "Адрес"
 msgid "Administration"
 msgstr "Администрирование"
 
+msgid "Alternate"
+msgstr ""
+
+msgid "Alternate Roll"
+msgstr ""
+
+msgid "Aluminum"
+msgstr ""
+
 msgid "Always"
 msgstr "Всегда"
 
@@ -2685,14 +2727,31 @@ msgstr "AppSocket/HP JetDirect"
 msgid "Applicator"
 msgstr "Исполнительное устройство"
 
+msgid "Archival Envelope"
+msgstr ""
+
+msgid "Archival Fabric"
+msgstr ""
+
 #, c-format
 msgid "Attempt to set %s printer-state to bad value %d."
 msgstr "Попытка установить %s printer-state на неверное значение %d"
 
 #, c-format
+msgid "Attribute \"%s\" is in the wrong group."
+msgstr ""
+
+#, c-format
+msgid "Attribute \"%s\" is the wrong value type."
+msgstr ""
+
+#, c-format
 msgid "Attribute groups are out of order (%x < %x)."
 msgstr "Атрибут группы не в диапазоне (%x < %x)"
 
+msgid "Automatic"
+msgstr ""
+
 msgid "B0"
 msgstr "B0"
 
@@ -2729,6 +2788,9 @@ msgstr "B8"
 msgid "B9"
 msgstr "B9"
 
+msgid "Back Print Film"
+msgstr ""
+
 #, c-format
 msgid "Bad 'document-format' value \"%s\"."
 msgstr ""
@@ -2748,6 +2810,9 @@ msgstr "Неверное значение OrderDependency"
 msgid "Bad PPD cache file."
 msgstr ""
 
+msgid "Bad PPD file."
+msgstr ""
+
 msgid "Bad Request"
 msgstr "Неверный запрос"
 
@@ -2873,19 +2938,49 @@ msgstr "Неверная строка значений"
 msgid "Bad/empty URI"
 msgstr "Неверный или пустой URI"
 
+msgid "Bale"
+msgstr ""
+
 msgid "Banners"
 msgstr "Баннеры"
 
+msgid "Bind"
+msgstr ""
+
+msgid "Bind (Landscape)"
+msgstr ""
+
+msgid "Bind (Portrait)"
+msgstr ""
+
+msgid "Bind (Reverse Landscape)"
+msgstr ""
+
+msgid "Bind (Reverse Portrait)"
+msgstr ""
+
+msgid "Bond Envelope"
+msgstr ""
+
 msgid "Bond Paper"
 msgstr "Документная бумага"
 
+msgid "Booklet Maker"
+msgstr ""
+
 #, c-format
 msgid "Boolean expected for waiteof option \"%s\"."
 msgstr "Параметр waiteof \"%s\" должен иметь двоичное значение"
 
+msgid "Bottom"
+msgstr ""
+
 msgid "Buffer overflow detected, aborting."
 msgstr "Обнаружено переполнение буфера, прерывание."
 
+msgid "CD"
+msgstr ""
+
 msgid "CMYK"
 msgstr "CMYK"
 
@@ -2901,12 +2996,24 @@ msgstr "Отменить подписку на RSS"
 msgid "Canceling print job."
 msgstr "Отмена задания печати."
 
+msgid "Cannot change printer-is-shared for remote queues."
+msgstr ""
+
 msgid "Cannot share a remote Kerberized printer."
 msgstr ""
 
+msgid "Cardboard"
+msgstr ""
+
+msgid "Cardstock"
+msgstr ""
+
 msgid "Cassette"
 msgstr "Лоток"
 
+msgid "Center"
+msgstr ""
+
 msgid "Change Settings"
 msgstr "Изменить настройки"
 
@@ -2923,12 +3030,24 @@ msgstr "Очистить головки принтера"
 msgid "Close-Job doesn't support the job-uri attribute."
 msgstr "Close-Job не подерживает атрибут job-uri"
 
+msgid "Coat"
+msgstr ""
+
+msgid "Coated Envelope"
+msgstr ""
+
+msgid "Coated Paper"
+msgstr ""
+
 msgid "Color"
 msgstr "Цвет"
 
 msgid "Color Mode"
 msgstr "Цветной режим"
 
+msgid "Colored Labels"
+msgstr ""
+
 msgid ""
 "Commands may be abbreviated.  Commands are:\n"
 "\n"
@@ -2953,15 +3072,33 @@ msgstr "Продолжить"
 msgid "Continuous"
 msgstr "Непрерывно"
 
+msgid "Continuous Long"
+msgstr ""
+
+msgid "Continuous Short"
+msgstr ""
+
 msgid "Control file sent successfully."
 msgstr "Контрольный файл успешно отправлен."
 
 msgid "Copying print data."
 msgstr "Копирование данных печати."
 
+msgid "Cotton Envelope"
+msgstr ""
+
+msgid "Cover"
+msgstr ""
+
 msgid "Created"
 msgstr "Создано"
 
+msgid "Credentials do not validate against site CA certificate."
+msgstr ""
+
+msgid "Credentials have expired."
+msgstr ""
+
 msgid "Custom"
 msgstr "Индивидуальный"
 
@@ -2974,9 +3111,15 @@ msgstr "CustominTearInterval"
 msgid "Cut"
 msgstr "Обрезать"
 
+msgid "Cut Media"
+msgstr ""
+
 msgid "Cutter"
 msgstr "Резак"
 
+msgid "DVD"
+msgstr ""
+
 msgid "Dark"
 msgstr "Темный"
 
@@ -3035,10 +3178,37 @@ msgstr "Каталог \"%s\" доступ OK (0%o/uid=%d/gid=%d)."
 msgid "Disabled"
 msgstr "Отключено"
 
+msgid "Disc"
+msgstr ""
+
 #, c-format
 msgid "Document #%d does not exist in job #%d."
 msgstr "Документ #%d не существует в задании #%d."
 
+msgid "Double Gate Fold"
+msgstr ""
+
+msgid "Double Staple (Landscape)"
+msgstr ""
+
+msgid "Double Staple (Portrait)"
+msgstr ""
+
+msgid "Double Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Double Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Double Wall Cardboard"
+msgstr ""
+
+msgid "Draft"
+msgstr ""
+
+msgid "Dry Film"
+msgstr ""
+
 msgid "Duplexer"
 msgstr "Дуплексер"
 
@@ -3054,12 +3224,18 @@ msgstr "Принтер для печати этикеток EPL2"
 msgid "Edit Configuration File"
 msgstr "Редактировать файл конфигурации"
 
+msgid "Embossing Foil"
+msgstr ""
+
 msgid "Empty PPD file."
 msgstr "Пустой PPD файл."
 
 msgid "Encryption is not supported."
 msgstr "Шифрование не поддерживается."
 
+msgid "End Board"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet after the print job.
 msgid "Ending Banner"
 msgstr "Конечный баннер"
@@ -3076,7 +3252,10 @@ msgstr ""
 "получить доступ к этой странице. Если используется проверка подлинности "
 "Kerberos, необходимо также иметь действительный билет Kerberos."
 
-msgid "Envelope #10 "
+msgid "Envelope"
+msgstr ""
+
+msgid "Envelope #10"
 msgstr ""
 
 msgid "Envelope #11"
@@ -3166,7 +3345,7 @@ msgstr ""
 msgid "Envelope Monarch"
 msgstr ""
 
-msgid "Envelope PRC1 "
+msgid "Envelope PRC1"
 msgstr ""
 
 msgid "Envelope PRC1 Long Edge"
@@ -3298,6 +3477,9 @@ msgstr "Выражение:"
 msgid "FAIL"
 msgstr "FAIL"
 
+msgid "Fabric"
+msgstr ""
+
 msgid "FanFold German"
 msgstr ""
 
@@ -3307,6 +3489,9 @@ msgstr ""
 msgid "Fanfold US"
 msgstr ""
 
+msgid "Fast Grayscale"
+msgstr ""
+
 #, c-format
 msgid "File \"%s\" contains a relative path."
 msgstr "Файл \"%s\" содержит относительный путь."
@@ -3327,8 +3512,8 @@ msgstr "Файл \"%s\" недоступен: %s"
 msgid "File \"%s\" permissions OK (0%o/uid=%d/gid=%d)."
 msgstr "Файл \"%s\" права доступа OK (0%o/uid=%d/gid=%d)."
 
-msgid "File Folder "
-msgstr "Каталог файла "
+msgid "File Folder"
+msgstr ""
 
 #, c-format
 msgid ""
@@ -3338,16 +3523,46 @@ msgstr ""
 "URI-адреса файлового устройства отключены! Чтобы включить их, используйте "
 "параметр FileDevice в \"%s/cups-files.conf\"."
 
+msgid "Film"
+msgstr ""
+
+msgid "Fine Envelope"
+msgstr ""
+
 #, c-format
 msgid "Finished page %d."
 msgstr "Последняя страница %d."
 
+msgid "Finishing"
+msgstr ""
+
+msgid "Flexo Base"
+msgstr ""
+
+msgid "Flexo Photo Polymer"
+msgstr ""
+
+msgid "Flute"
+msgstr ""
+
+msgid "Foil"
+msgstr ""
+
+msgid "Fold"
+msgstr ""
+
 msgid "Folio"
 msgstr "Фолио"
 
 msgid "Forbidden"
 msgstr "Запрещено"
 
+msgid "Full Cut Tabs"
+msgstr ""
+
+msgid "Gate Fold"
+msgstr ""
+
 msgid "General"
 msgstr "Основные"
 
@@ -3357,24 +3572,87 @@ msgstr "Общее"
 msgid "Get-Response-PDU uses indefinite length"
 msgstr "Для Get-Response-PDU длина не установлена"
 
+msgid "Glass"
+msgstr ""
+
+msgid "Glass Colored"
+msgstr ""
+
+msgid "Glass Opaque"
+msgstr ""
+
+msgid "Glass Surfaced"
+msgstr ""
+
+msgid "Glass Textured"
+msgstr ""
+
+msgid "Glossy Fabric"
+msgstr ""
+
+msgid "Glossy Labels"
+msgstr ""
+
+msgid "Glossy Optical Disc"
+msgstr ""
+
 msgid "Glossy Paper"
 msgstr "Глянцевая бумага"
 
+msgid "Glossy Photo Paper"
+msgstr ""
+
 msgid "Got a printer-uri attribute but no job-id."
 msgstr "Получен атрибут printer-uri, но не job-id"
 
+msgid "Gravure Cylinder"
+msgstr ""
+
 msgid "Grayscale"
 msgstr "Оттенки серого"
 
 msgid "HP"
 msgstr "HP"
 
+msgid "Hagaki"
+msgstr ""
+
+msgid "Half Fold"
+msgstr ""
+
+msgid "Half Z Fold"
+msgstr ""
+
 msgid "Hanging Folder"
 msgstr "Папка подвесного хранения"
 
+msgid "Hash buffer too small."
+msgstr ""
+
+msgid "Heavyweight Envelope"
+msgstr ""
+
+msgid "Heavyweight Paper"
+msgstr ""
+
 msgid "Help file not in index."
 msgstr "Файл справки не проиндексирован."
 
+msgid "High"
+msgstr ""
+
+msgid "High Gloss Fabric"
+msgstr ""
+
+msgid "High Gloss Labels"
+msgstr ""
+
+msgid "High Gloss Optical Disc"
+msgstr ""
+
+msgid "High Gloss Photo Paper"
+msgstr ""
+
 msgid "IPP 1setOf attribute with incompatible value tags."
 msgstr "IPP атрибут 1setOf с недопустимым значением."
 
@@ -3462,6 +3740,18 @@ msgstr "Недействительный перевод"
 msgid "Illegal whitespace character"
 msgstr "Недействительный символ пробела"
 
+msgid "Image Setter Paper"
+msgstr ""
+
+msgid "Imaging Cylinder"
+msgstr ""
+
+msgid "Inkjet Envelope"
+msgstr ""
+
+msgid "Inkjet Labels"
+msgstr ""
+
 msgid "Installable Options"
 msgstr "Параметры, разрешенные к установке"
 
@@ -3495,6 +3785,9 @@ msgstr "Неверные аргументы имени бумаги."
 msgid "Invalid media size."
 msgstr "Неверный размер бумаги."
 
+msgid "Invalid ppd-name value."
+msgstr ""
+
 #, c-format
 msgid "Invalid printer command \"%s\"."
 msgstr "Неверная команда принтера \"%s\"."
@@ -3607,6 +3900,9 @@ msgstr "Подписки на задание не могут быть обнов
 msgid "Jobs"
 msgstr "Задания"
 
+msgid "Jog"
+msgstr ""
+
 msgid "LPD/LPR Host or Printer"
 msgstr "Хост или принтер LPD/LPR"
 
@@ -3616,6 +3912,15 @@ msgstr "Принтер для печати этикеток"
 msgid "Label Top"
 msgstr "Верхний край этикетки"
 
+msgid "Labels"
+msgstr ""
+
+msgid "Laminate"
+msgstr ""
+
+msgid "Laminating Foil"
+msgstr ""
+
 #, c-format
 msgid "Language \"%s\" not supported."
 msgstr "Язык \"%s\" не поддерживается."
@@ -3623,18 +3928,39 @@ msgstr "Язык \"%s\" не поддерживается."
 msgid "Large Address"
 msgstr "Полный адрес"
 
+msgid "Large Capacity"
+msgstr ""
+
 msgid "LaserJet Series PCL 4/5"
 msgstr "Серия LaserJet, PCL 4/5"
 
+msgid "Left"
+msgstr ""
+
+msgid "Left Gate Fold"
+msgstr ""
+
+msgid "Letter Fold"
+msgstr ""
+
 msgid "Letter Oversize"
 msgstr ""
 
 msgid "Letter Oversize Long Edge"
 msgstr ""
 
+msgid "Letterhead"
+msgstr ""
+
 msgid "Light"
 msgstr "Светлый"
 
+msgid "Lightweight Envelope"
+msgstr ""
+
+msgid "Lightweight Paper"
+msgstr ""
+
 msgid "Line longer than the maximum allowed (255 characters)"
 msgstr "Строка длиннее разрешенного предела (255 символов)"
 
@@ -3644,15 +3970,39 @@ msgstr "Список доступных принтеров"
 msgid "Load paper."
 msgstr "Загрузка бумаги."
 
+msgid "Local printer created."
+msgstr ""
+
 msgid "Long-Edge (Portrait)"
 msgstr "По длинной стороне (книжная)"
 
-msgid "Looking for printer..."
+msgid "Looking for printer."
+msgstr "Поиск принтера."
+
+msgid "Main"
+msgstr ""
+
+msgid "Main Roll"
+msgstr ""
+
+msgid "Manual"
 msgstr ""
 
 msgid "Manual Feed"
 msgstr "Ручная подача"
 
+msgid "Matte Fabric"
+msgstr ""
+
+msgid "Matte Labels"
+msgstr ""
+
+msgid "Matte Optical Disc"
+msgstr ""
+
+msgid "Matte Photo Paper"
+msgstr ""
+
 msgid "Media Size"
 msgstr "Размер бумаги"
 
@@ -3671,10 +4021,31 @@ msgstr "Средний"
 msgid "Memory allocation error"
 msgstr "Ошибка выделения памяти"
 
-msgid "Missing CloseGroup"
-msgstr "Пропущен CloseGroup"
+msgid "Metal"
+msgstr ""
 
-msgid "Missing PPD-Adobe-4.x header"
+msgid "Metal Glossy"
+msgstr ""
+
+msgid "Metal High Gloss"
+msgstr ""
+
+msgid "Metal Matte"
+msgstr ""
+
+msgid "Metal Satin"
+msgstr ""
+
+msgid "Metal Semi Gloss"
+msgstr ""
+
+msgid "Middle"
+msgstr ""
+
+msgid "Missing CloseGroup"
+msgstr "Пропущен CloseGroup"
+
+msgid "Missing PPD-Adobe-4.x header"
 msgstr "Отсутствует заголовок PPD-Adobe-4.x"
 
 msgid "Missing asterisk in column 1"
@@ -3708,6 +4079,10 @@ msgstr "Отсутствует ключевое слово параметра"
 msgid "Missing requesting-user-name attribute."
 msgstr "Отсутствует атрибут requesting-user-name."
 
+#, c-format
+msgid "Missing required attribute \"%s\"."
+msgstr ""
+
 msgid "Missing required attributes."
 msgstr "Отсутствуют обязательные атрибуты."
 
@@ -3751,6 +4126,9 @@ msgstr "Изменить группу"
 msgid "Modify Printer"
 msgstr "Изменить принтер"
 
+msgid "Mounting Tape"
+msgstr ""
+
 msgid "Move All Jobs"
 msgstr "Переместить все задания"
 
@@ -3760,6 +4138,15 @@ msgstr "Переместить задание"
 msgid "Moved Permanently"
 msgstr "Перемещено окончательно"
 
+msgid "Multi Layer"
+msgstr ""
+
+msgid "Multi Part Form"
+msgstr ""
+
+msgid "Multipurpose"
+msgstr ""
+
 msgid "NULL PPD file pointer"
 msgstr "Указатель PPD-файла установлен на NULL"
 
@@ -3772,12 +4159,21 @@ msgstr "Вложенные группы не допускаются."
 msgid "Never"
 msgstr "Никогда"
 
+msgid "New credentials are not valid for name."
+msgstr ""
+
+msgid "New credentials are older than stored credentials."
+msgstr ""
+
 msgid "No"
 msgstr "Нет"
 
 msgid "No Content"
 msgstr "Нет содержимого"
 
+msgid "No Finishing"
+msgstr ""
+
 msgid "No PPD name"
 msgstr "Нет имени PPD"
 
@@ -3803,6 +4199,9 @@ msgstr "Нет атрибутов в запросе."
 msgid "No authentication information provided."
 msgstr "Нет информации для проверки подлинности."
 
+msgid "No common name specified."
+msgstr ""
+
 msgid "No community name"
 msgstr "Нет имени сообщества"
 
@@ -3858,6 +4257,9 @@ msgstr "Не отправлен запрос."
 msgid "No request-id"
 msgstr "Нет идентификатора request-id"
 
+msgid "No stored credentials, not valid for name."
+msgstr ""
+
 msgid "No subscription attributes in request."
 msgstr "Нет атрибутов подписки в запросе."
 
@@ -3919,6 +4321,9 @@ msgstr "Oki"
 msgid "Online Help"
 msgstr "Интернет справка"
 
+msgid "Only local users can create a local printer."
+msgstr ""
+
 #, c-format
 msgid "Open of %s failed: %s"
 msgstr "Не удалось открыть %s: %s"
@@ -3932,6 +4337,9 @@ msgstr "OpenUI/JCLOpenUI без предыдущего CloseUI/JCLCloseUI"
 msgid "Operation Policy"
 msgstr "Политика операций"
 
+msgid "Optical Disc"
+msgstr ""
+
 #, c-format
 msgid "Option \"%s\" cannot be included via %%%%IncludeFeature."
 msgstr "Параметр \"%s\" не может быть добавлен через %%%%IncludeFeature."
@@ -3942,6 +4350,9 @@ msgstr "Доп.устройства"
 msgid "Options:"
 msgstr "Параметры:"
 
+msgid "Other"
+msgstr ""
+
 msgid "Out of date PPD cache file."
 msgstr "Устаревший файл кеша PPD"
 
@@ -3990,6 +4401,9 @@ msgstr "В пакете нет Get-Response-PDU"
 msgid "Packet does not start with SEQUENCE"
 msgstr "Нет индикатора SEQUENCE в начале пакета"
 
+msgid "Paper"
+msgstr ""
+
 msgid "Paper jam."
 msgstr "Замятие бумаги."
 
@@ -4002,6 +4416,9 @@ msgstr "Лоток с бумагой пуст."
 msgid "Paper tray is missing."
 msgstr "Лоток с бумагой отсутствует."
 
+msgid "Parallel Fold"
+msgstr ""
+
 msgid "ParamCustominCutInterval"
 msgstr "ParamCustominCutInterval"
 
@@ -4025,18 +4442,63 @@ msgstr "Приостановить принтер"
 msgid "Peel-Off"
 msgstr "Съемный слой"
 
+msgid "Permanent Labels"
+msgstr ""
+
 msgid "Photo"
 msgstr "Фото"
 
+msgid "Photo Film"
+msgstr ""
+
 msgid "Photo Labels"
 msgstr "Фотоэтикетки"
 
+msgid "Photo Paper"
+msgstr ""
+
+msgid "Photographic Archival"
+msgstr ""
+
+msgid "Plain Envelope"
+msgstr ""
+
 msgid "Plain Paper"
 msgstr "Обычная бумага"
 
+msgid "Plastic"
+msgstr ""
+
+msgid "Plastic Archival"
+msgstr ""
+
+msgid "Plastic Colored"
+msgstr ""
+
+msgid "Plastic Glossy"
+msgstr ""
+
+msgid "Plastic High Gloss"
+msgstr ""
+
+msgid "Plastic Matte"
+msgstr ""
+
+msgid "Plastic Satin"
+msgstr ""
+
+msgid "Plastic Semi Gloss"
+msgstr ""
+
+msgid "Plate"
+msgstr ""
+
 msgid "Policies"
 msgstr "Политики"
 
+msgid "Polyester"
+msgstr ""
+
 msgid "Port Monitor"
 msgstr "Мониторинг порта"
 
@@ -4046,8 +4508,8 @@ msgstr "Принтер PostScript"
 msgid "Postcard"
 msgstr "Открытка"
 
-msgid "Postcard Double "
-msgstr "Открытка двойная"
+msgid "Postcard Double"
+msgstr ""
 
 msgid "Postcard Double Long Edge"
 msgstr "Открытка двойная Long Edge"
@@ -4055,9 +4517,21 @@ msgstr "Открытка двойная Long Edge"
 msgid "Postcard Long Edge"
 msgstr "Открытка Long Edge"
 
+msgid "Poster Fold"
+msgstr ""
+
+msgid "Pre Cut Tabs"
+msgstr ""
+
 msgid "Preparing to print."
 msgstr "Подготовка к печати."
 
+msgid "Preprinted Envelope"
+msgstr ""
+
+msgid "Preprinted Paper"
+msgstr ""
+
 msgid "Print Density"
 msgstr "Плотность печати"
 
@@ -4067,6 +4541,9 @@ msgstr "Задание печати:"
 msgid "Print Mode"
 msgstr "Режим печати"
 
+msgid "Print Quality"
+msgstr ""
+
 msgid "Print Rate"
 msgstr "Скорость печати"
 
@@ -4097,6 +4574,10 @@ msgstr "Задание слишком большое."
 msgid "Print job was not accepted."
 msgstr "Задание не принято."
 
+#, c-format
+msgid "Printer \"%s\" already exists."
+msgstr ""
+
 msgid "Printer Added"
 msgstr "Принтер добавлен"
 
@@ -4131,6 +4612,12 @@ msgstr "Принтеры"
 msgid "Printing page %d, %u%% complete."
 msgstr "Печать страницы %d, %u%% завершена."
 
+msgid "Punch"
+msgstr ""
+
+msgid "Punched Paper"
+msgstr ""
+
 msgid "Quarto"
 msgstr "Кватро"
 
@@ -4141,6 +4628,9 @@ msgid "Rank    Owner   Job     File(s)                         Total Size"
 msgstr ""
 "Ранг    Владелец   Задание     Файл(ы)                     Общий размер"
 
+msgid "Rear"
+msgstr ""
+
 msgid "Reject Jobs"
 msgstr "Отклонить задания"
 
@@ -4173,6 +4663,45 @@ msgstr "Обратный адрес"
 msgid "Rewind"
 msgstr "Вернуться в начало"
 
+msgid "Right"
+msgstr ""
+
+msgid "Right Gate Fold"
+msgstr ""
+
+msgid "Roll"
+msgstr ""
+
+msgid "Roll 1"
+msgstr ""
+
+msgid "Roll 10"
+msgstr ""
+
+msgid "Roll 2"
+msgstr ""
+
+msgid "Roll 3"
+msgstr ""
+
+msgid "Roll 4"
+msgstr ""
+
+msgid "Roll 5"
+msgstr ""
+
+msgid "Roll 6"
+msgstr ""
+
+msgid "Roll 7"
+msgstr ""
+
+msgid "Roll 8"
+msgstr ""
+
+msgid "Roll 9"
+msgstr ""
+
 #, c-format
 msgid "Running command: %s %s -N -A %s -c '%s'"
 msgstr "Запущенная команда: %s %s -N -A %s -c '%s'"
@@ -4183,9 +4712,54 @@ msgstr "Для SEQUENCE длина не установлена"
 msgid "SSL/TLS Negotiation Error"
 msgstr "SSL/TLS Negotiation Error"
 
+msgid "Saddle Stitch"
+msgstr ""
+
+msgid "Satin Labels"
+msgstr ""
+
+msgid "Satin Optical Disc"
+msgstr ""
+
+msgid "Satin Photo Paper"
+msgstr ""
+
+msgid "Screen"
+msgstr ""
+
+msgid "Screen Paged"
+msgstr ""
+
+msgid "Security Labels"
+msgstr ""
+
 msgid "See Other"
 msgstr "Посмотреть другие"
 
+msgid "See remote printer."
+msgstr ""
+
+msgid "Self Adhesive"
+msgstr ""
+
+msgid "Self Adhesive Film"
+msgstr ""
+
+msgid "Self-signed credentials are blocked."
+msgstr ""
+
+msgid "Semi-Gloss Fabric"
+msgstr ""
+
+msgid "Semi-Gloss Labels"
+msgstr ""
+
+msgid "Semi-Gloss Optical Disc"
+msgstr ""
+
+msgid "Semi-Gloss Photo Paper"
+msgstr ""
+
 msgid "Sending data to printer."
 msgstr "Отправка данных на принтер."
 
@@ -4228,6 +4802,45 @@ msgstr "Адрес доставки"
 msgid "Short-Edge (Landscape)"
 msgstr "По короткой стороне (альбомная)"
 
+msgid "Shrink Foil"
+msgstr ""
+
+msgid "Side"
+msgstr ""
+
+msgid "Single Face"
+msgstr ""
+
+msgid "Single Punch (Landscape)"
+msgstr ""
+
+msgid "Single Punch (Portrait)"
+msgstr ""
+
+msgid "Single Punch (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Punch (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Staple (Landscape)"
+msgstr ""
+
+msgid "Single Staple (Portrait)"
+msgstr ""
+
+msgid "Single Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Single Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Single Wall Cardboard"
+msgstr ""
+
+msgid "Sleeve"
+msgstr ""
+
 msgid "Special Paper"
 msgstr "Особая бумага"
 
@@ -4238,6 +4851,24 @@ msgstr "Постановка в очередь, %.0f%% завершено."
 msgid "Standard"
 msgstr "Стандартный"
 
+msgid "Staple"
+msgstr ""
+
+msgid "Staple Edge"
+msgstr ""
+
+msgid "Staple Edge (Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Portrait)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Landscape)"
+msgstr ""
+
+msgid "Staple Edge (Reverse Portrait)"
+msgstr ""
+
 #. TRANSLATORS: Banner/cover sheet before the print job.
 msgid "Starting Banner"
 msgstr "Стартовый баннер"
@@ -4249,6 +4880,21 @@ msgstr "Главная страница %d."
 msgid "Statement"
 msgstr "Оператор"
 
+msgid "Stationery"
+msgstr ""
+
+msgid "Stationery Archival"
+msgstr ""
+
+msgid "Stationery Cotton"
+msgstr ""
+
+msgid "Stationery Heavyweight Coated"
+msgstr ""
+
+msgid "Stationery Inkjet Paper"
+msgstr ""
+
 #, c-format
 msgid "Subscription #%d does not exist."
 msgstr "Подписка #%d не существует."
@@ -4268,6 +4914,9 @@ msgstr "Super B/A3"
 msgid "Switching Protocols"
 msgstr "Протоколы переключения"
 
+msgid "Tab Stock"
+msgstr ""
+
 msgid "Tabloid"
 msgstr "Tabloid"
 
@@ -4473,6 +5122,15 @@ msgstr "Слишком много значений job-sheets (%d>2)"
 msgid "Too many printer-state-reasons values (%d > %d)."
 msgstr "Слишком много значений printer-state-reasons (%d > %d)"
 
+msgid "Top"
+msgstr ""
+
+msgid "Tractor"
+msgstr ""
+
+msgid "Transfer"
+msgstr ""
+
 msgid "Transparency"
 msgstr "Прозрачность"
 
@@ -4482,15 +5140,81 @@ msgstr "Лоток"
 msgid "Tray 1"
 msgstr "Лоток 1"
 
+msgid "Tray 10"
+msgstr ""
+
+msgid "Tray 11"
+msgstr ""
+
+msgid "Tray 12"
+msgstr ""
+
+msgid "Tray 13"
+msgstr ""
+
+msgid "Tray 14"
+msgstr ""
+
+msgid "Tray 15"
+msgstr ""
+
+msgid "Tray 16"
+msgstr ""
+
+msgid "Tray 17"
+msgstr ""
+
+msgid "Tray 18"
+msgstr ""
+
+msgid "Tray 19"
+msgstr ""
+
 msgid "Tray 2"
 msgstr "Лоток 2"
 
+msgid "Tray 20"
+msgstr ""
+
 msgid "Tray 3"
 msgstr "Лоток 3"
 
 msgid "Tray 4"
 msgstr "Лоток 4"
 
+msgid "Tray 5"
+msgstr ""
+
+msgid "Tray 6"
+msgstr ""
+
+msgid "Tray 7"
+msgstr ""
+
+msgid "Tray 8"
+msgstr ""
+
+msgid "Tray 9"
+msgstr ""
+
+msgid "Triple Staple (Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Portrait)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Landscape)"
+msgstr ""
+
+msgid "Triple Staple (Reverse Portrait)"
+msgstr ""
+
+msgid "Triple Wall Cardboard"
+msgstr ""
+
+msgid "Trust on first use is disabled."
+msgstr ""
+
 msgid "URI Too Long"
 msgstr "Слишком длинный адрес URI"
 
@@ -4614,13 +5338,15 @@ msgstr "Не удается копировать файлы драйвера п
 msgid "Unable to copy Windows 9x printer driver files (%d)."
 msgstr "Не удается копировать файлы драйвера принтера Windows 9x (%d)"
 
-#, c-format
-msgid "Unable to copy interface script - %s"
-msgstr "Не удается копировать скрипт интерфейса - %s"
+msgid "Unable to create credentials from array."
+msgstr ""
 
 msgid "Unable to create printer-uri"
 msgstr "Не удается создать printer-uri"
 
+msgid "Unable to create printer."
+msgstr ""
+
 msgid "Unable to create server credentials."
 msgstr "Не удается создать учетные данные сервера."
 
@@ -4837,6 +5563,9 @@ msgstr "Неизвестный порядок файлов \"%s\"."
 msgid "Unknown format character: \"%c\"."
 msgstr "Символ неизвестного формата \"%c\"."
 
+msgid "Unknown hash algorithm."
+msgstr ""
+
 msgid "Unknown media size name."
 msgstr "Неизвестное имя размера бумаги."
 
@@ -4983,18 +5712,6 @@ msgid ""
 msgstr ""
 
 msgid ""
-"Usage: ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Options:"
-msgstr ""
-"Использование:\n"
-"       ippdiscover [options] -a\n"
-"       ippdiscover [options] \"service name\"\n"
-"\n"
-"Параметры:"
-
-msgid ""
 "Usage: ippfind [options] regtype[,subtype][.domain.] ... [expression]\n"
 "       ippfind [options] name[.regtype[.domain.]] ... [expression]\n"
 "       ippfind --help\n"
@@ -5053,6 +5770,9 @@ msgstr "Для значения длина не установлена"
 msgid "VarBind uses indefinite length"
 msgstr "Для VarBind длина не установлена"
 
+msgid "Vellum Paper"
+msgstr ""
+
 msgid "Version uses indefinite length"
 msgstr "Для Version длина не установлена"
 
@@ -5068,9 +5788,18 @@ msgstr "Ожидание окончания работы принтера."
 msgid "Warning, no Windows 2000 printer drivers are installed."
 msgstr "Внимание, драйверы принтера Windows 2000 не установлены"
 
+msgid "Waterproof Fabric"
+msgstr ""
+
 msgid "Web Interface is Disabled"
 msgstr "Web интерфейс отключен"
 
+msgid "Wet Film"
+msgstr ""
+
+msgid "Windowed Envelope"
+msgstr ""
+
 msgid "Yes"
 msgstr "Да"
 
@@ -5082,6 +5811,9 @@ msgstr ""
 "Вы должны получить доступ к этой странице с помощью URL <A HREF=«https://%s:"
 "%d%s»>https://%s:%d%s</A>."
 
+msgid "Z Fold"
+msgstr ""
+
 msgid "ZPL Label Printer"
 msgstr "Принтер для печати этикеток ZPL"
 
@@ -5308,8 +6040,9 @@ msgstr "Атрибут job-printer-uri отсутствует."
 msgid "lpadmin: Class name can only contain printable characters."
 msgstr "lpadmin: Имя группы может содержать только печатаемые символы."
 
-msgid "lpadmin: Expected PPD after \"-P\" option."
-msgstr "lpadmin: После параметра '-P' должен быть указан PPD"
+#, c-format
+msgid "lpadmin: Expected PPD after \"-%c\" option."
+msgstr ""
 
 msgid "lpadmin: Expected allow/deny:userlist after \"-u\" option."
 msgstr "lpadmin: После параметра '-u' должен быть указан allow/deny:userlist."
@@ -5332,9 +6065,6 @@ msgstr "После параметра \"-I\" должен(-ны) быть ука
 msgid "lpadmin: Expected hostname after \"-h\" option."
 msgstr "lpadmin: После параметра \"-h\" должно быть указано имя хоста."
 
-msgid "lpadmin: Expected interface after \"-i\" option."
-msgstr "lpadmin: После параметра \"-i\" должен быть указан интерфейс."
-
 msgid "lpadmin: Expected location after \"-L\" option."
 msgstr "lpadmin: После параметра \"-L\" должно быть указано местоположение."
 
@@ -5453,18 +6183,6 @@ msgid "lpinfo: Expected timeout after \"--timeout\"."
 msgstr "lpinfo: После \"--timeout\" должно быть указано время ожидания"
 
 #, c-format
-msgid "lpinfo: Unknown argument \"%s\"."
-msgstr "lpinfo: Неизвестный аргумент \"%s\"."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%c\"."
-msgstr "lpinfo: Неизвестный параметр \"%c\"."
-
-#, c-format
-msgid "lpinfo: Unknown option \"%s\"."
-msgstr "lpinfo: Неизвестный параметр \"%s\"."
-
-#, c-format
 msgid "lpmove: Unable to connect to server: %s"
 msgstr "lpmove: Не удается подключиться к серверу: %s"
 
@@ -5472,10 +6190,6 @@ msgstr "lpmove: Не удается подключиться к серверу:
 msgid "lpmove: Unknown argument \"%s\"."
 msgstr "lpmove: Неизвестный аргумент \"%s\"."
 
-#, c-format
-msgid "lpmove: Unknown option \"%c\"."
-msgstr "lpmove: Неизвестный параметр \"%c\"."
-
 msgid "lpoptions: No printers."
 msgstr "lpoptions: Нет принтеров."
 
@@ -5992,6 +6706,9 @@ msgstr "новый"
 msgid "variable-bindings uses indefinite length"
 msgstr "Для variable-bindings длина не установлена"
 
+#~ msgid "\tInterface: %s/interfaces/%s"
+#~ msgstr "\tИнтерфейс: %s/интерфейсы/%s"
+
 #~ msgid "      %s  Missing \"%s\" translation string for option %s"
 #~ msgstr "\t%s Перевод \"%s\" отсутствует для параметра %s"
 
@@ -6002,11 +6719,64 @@ msgstr "Для variable-bindings длина не установлена"
 #~ "    Комментарий %%EndComments отсутствует.\n"
 #~ "        REF: Стр. 41, %%EndComments"
 
-#~ msgid "Looking for printer."
-#~ msgstr "Поиск принтера."
+#~ msgid "  --lf                    End lines with LF (UNIX/Linux/OS X)."
+#~ msgstr ""
+#~ "  --lf                    Строки заканчиваются на LF (UNIX/Linux/Mac OS "
+#~ "X)."
+
+#~ msgid "  -a                      Browse for all services."
+#~ msgstr "  -a                      Обзор всех сервисов."
+
+#~ msgid "  -d domain               Browse/resolve in specified domain."
+#~ msgstr "  -d domain               Просмотр в заданном домене."
+
+#~ msgid "  -p program              Run specified program for each service."
+#~ msgstr "  -p program              Запустить указанную программу."
+
+#~ msgid "  -t type                 Browse/resolve with specified type."
+#~ msgstr "  -t type                 Просмотр/определение по указанному типу."
+
+#~ msgid "File Folder "
+#~ msgstr "Каталог файла "
+
+#~ msgid "Postcard Double "
+#~ msgstr "Открытка двойная"
 
 #~ msgid ""
 #~ "The '%s' Job Description attribute cannot be supplied in a job creation "
 #~ "request."
 #~ msgstr ""
 #~ "Атрибут '%s' Job Description не может быть подставлен при созданиизадания"
+
+#~ msgid "Unable to copy interface script - %s"
+#~ msgstr "Не удается копировать скрипт интерфейса - %s"
+
+#~ msgid ""
+#~ "Usage: ippdiscover [options] -a\n"
+#~ "       ippdiscover [options] \"service name\"\n"
+#~ "\n"
+#~ "Options:"
+#~ msgstr ""
+#~ "Использование:\n"
+#~ "       ippdiscover [options] -a\n"
+#~ "       ippdiscover [options] \"service name\"\n"
+#~ "\n"
+#~ "Параметры:"
+
+#~ msgid "lpadmin: Expected PPD after \"-P\" option."
+#~ msgstr "lpadmin: После параметра '-P' должен быть указан PPD"
+
+#~ msgid "lpadmin: Expected interface after \"-i\" option."
+#~ msgstr "lpadmin: После параметра \"-i\" должен быть указан интерфейс."
+
+#~ msgid "lpinfo: Unknown argument \"%s\"."
+#~ msgstr "lpinfo: Неизвестный аргумент \"%s\"."
+
+#~ msgid "lpinfo: Unknown option \"%c\"."
+#~ msgstr "lpinfo: Неизвестный параметр \"%c\"."
+
+#~ msgid "lpinfo: Unknown option \"%s\"."
+#~ msgstr "lpinfo: Неизвестный параметр \"%s\"."
+
+#~ msgid "lpmove: Unknown option \"%c\"."
+#~ msgstr "lpmove: Неизвестный параметр \"%c\"."
index 0bedd97..51e64f4 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: po2strings.c 12794 2015-07-20 18:26:20Z msweet $"
- *
  * Convert a GNU gettext .po file to an Apple .strings file.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -361,8 +359,3 @@ normalize_string(const char *idstr, /* I - msgid string */
 
   return (buffer);
 }
-
-
-/*
- * End of "$Id: po2strings.c 12794 2015-07-20 18:26:20Z msweet $".
- */
index 6c2864c..6f912bb 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: strings2po.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Convert Apple .strings file (UTF-16 BE text file) to GNU gettext .po files.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -170,8 +168,3 @@ write_po(FILE       *po,            /* I - .po file */
 {
   fprintf(po, "%s \"%s\"\n", what, s);
 }
-
-
-/*
- * End of "$Id: strings2po.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index e01cf58..8e75e89 100644 (file)
@@ -1,6 +1,4 @@
 #
-# "$Id: Makefile 12814 2015-07-30 15:03:33Z msweet $"
-#
 # Man page makefile for CUPS.
 #
 # Copyright 2007-2015 by Apple Inc.
@@ -225,8 +223,3 @@ mantohtml:  mantohtml.o ../cups/$(LIBCUPSSTATIC)
        $(CC) $(ARCHFLAGS) $(LDFLAGS) -o $@ mantohtml.o \
                ../cups/$(LIBCUPSSTATIC) $(LIBGSSAPI) $(SSLLIBS) \
                $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
-
-
-#
-# End of "$Id: Makefile 12814 2015-07-30 15:03:33Z msweet $".
-#
index c744b11..e5bf2a3 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: backend.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" Backend man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -176,7 +174,7 @@ CUPS backends are not generally design to be run directly by the user. Aside fro
 .I argv[0]
 and
 .B DEVICE_URI
-environment variable contain the device URI), CUPS backends also expect specific environment variables and file descriptors, and typically run in a user session that (on OS X) has additional restrictions that affect how it runs. Backends can also be installed with restricted permissions (0500 or 0700) that tell the scheduler to run them as the "root" user instead of an unprivileged user (typically "lp") on the system.
+environment variable contain the device URI), CUPS backends also expect specific environment variables and file descriptors, and typically run in a user session that (on macOS) has additional restrictions that affect how it runs. Backends can also be installed with restricted permissions (0500 or 0700) that tell the scheduler to run them as the "root" user instead of an unprivileged user (typically "lp") on the system.
 .LP
 Unless you are a developer and know what you are doing, please do not run backends directly. Instead, use the
 .BR lp (1)
@@ -199,7 +197,4 @@ for more information.
 .br
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: backend.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 97c5b72..046e95c 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cancel.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cancel man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -93,7 +91,4 @@ Administrators wishing to prevent unauthorized cancellation of jobs via the \fI\
 .BR lpstat (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cancel.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 9e4a113..7cded0c 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: classes.conf.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" classes.conf man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -30,7 +28,4 @@ The name, location, and format of this file are an implementation detail that wi
 .BR subscriptions.conf (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: classes.conf.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index ae6cdb0..8f5082a 100644 (file)
@@ -1,9 +1,7 @@
 .\"
-.\" "$Id: client.conf.man.in 12645 2015-05-20 01:20:52Z msweet $"
-.\"
 .\" client.conf man page for CUPS.
 .\"
-.\" Copyright 2007-2015 by Apple Inc.
+.\" Copyright 2007-2016 by Apple Inc.
 .\" Copyright 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 client.conf 5 "CUPS" "19 May 2015" "Apple Inc."
+.TH client.conf 5 "CUPS" "20 June 2016" "Apple Inc."
 .SH NAME
-client.conf \- client configuration file for cups (deprecated)
+client.conf \- client configuration file for cups
 .SH DESCRIPTION
 The \fBclient.conf\fR file configures the CUPS client and is normally located in the \fI/etc/cups\fR and/or \fI~/.cups\fR directories.
 Each line in the file can be a configuration directive, a blank line, or a comment. Comment lines start with the # character.
 .LP
-\fBNote:\fR Starting with OS X 10.7, this file is only used by command-line and X11 applications plus the IPP backend.
-The \fBServerName\fR directive is not supported on OS X at all.
+\fBNote:\fR Starting with macOS 10.7, this file is only used by command-line and X11 applications plus the IPP backend.
+The \fBServerName\fR directive is not supported on macOS at all.
+Starting with macOS 10.12, all applications can access these settings in the \fI/Library/Preferences/org.cups.PrintingPrefs.plist\fR file instead.
+See the NOTES section below for more information.
 .SS DIRECTIVES
 The following directives are understood by the client. Consult the online help for detailed descriptions:
 .TP 5
@@ -34,7 +34,7 @@ The default is "Yes".
 .TP 5
 \fBAllowExpiredCerts No\fR
 Specifies whether to allow TLS with expired certificates.
-The default is "Yes".
+The default is "No".
 .TP 5
 \fBEncryption IfRequested\fR
 .TP 5
@@ -51,7 +51,7 @@ CUPS adds the remote hostname ("name@server.example.com") for you. The default n
 .TP 5
 \fBServerName \fI/domain/socket\fR
 Specifies the address and optionally the port to use when connecting to the server.
-\fBNote: This directive it not supported on OS X 10.7 or later.\fR
+\fBNote: This directive it not supported on macOS 10.7 or later.\fR
 .TP 5
 \fBServerName \fIhostname-or-ip-address\fR[\fI:port\fR]\fB/version=1.1\fR
 Specifies the address and optionally the port to use when connecting to a server running CUPS 1.3.12 and earlier.
@@ -66,6 +66,12 @@ The \fIAllowRC4\fR option enables the 128-bit RC4 cipher suites, which are requi
 The \fIAllowSSL3\fR option enables SSL v3.0, which is required for some older clients that do not support TLS v1.0.
 The \fIDenyTLS1.0\fR option disables TLS v1.0 support - this sets the minimum protocol version to TLS v1.1.
 .TP 5
+\fBTrustOnFirstUse Yes\fR
+.TP 5
+\fBTrustOnFirstUse No\fR
+Specifies whether to trust new TLS certificates by default.
+The default is "Yes".
+.TP 5
 \fBUser \fIname\fR
 Specifies the default user name to use for requests.
 .TP 5
@@ -75,12 +81,20 @@ Specifies the default user name to use for requests.
 Specifies whether to only allow TLS with certificates whose common name matches the hostname.
 The default is "No".
 .SH NOTES
-The \fBclient.conf\fR file is deprecated and will no longer be supported in a future version of CUPS.
+The \fBclient.conf\fR file is deprecated on macOS and will no longer be supported in a future version of CUPS.
+Configuration settings can instead be viewed or changed using the
+.BR defaults (1)
+command:
+.nf
+defaults write /Library/Preferences/org.cups.PrintingPrefs.plist Encryption Required
+defaults write /Library/Preferences/org.cups.PrintingPrefs.plist TrustOnFirstUse -bool NO
+
+defaults read /Library/Preferences/org.cups.PrintingPrefs.plist Encryption
+.fi
+On Linux and other systems using GNU TLS, the \fI/etc/cups/ssl/site.crl\fR file, if present, provides a list of revoked X.509 certificates and is used when validating certificates.
 .SH SEE ALSO
 .BR cups (1),
+.BR default (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: client.conf.man.in 12645 2015-05-20 01:20:52Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 0cd37a6..f6ca444 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cups-config.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cups-config man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -110,7 +108,4 @@ Compile a simple one-file CUPS filter:
 .BR cups (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cups-config.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 8603754..df001fb 100644 (file)
@@ -1,9 +1,7 @@
 .\"
-.\" "$Id: cups-files.conf.man.in 12699 2015-06-08 18:16:30Z msweet $"
-.\"
 .\" cups-files.conf man page for CUPS.
 .\"
-.\" Copyright 2007-2015 by Apple Inc.
+.\" Copyright 2007-2016 by Apple Inc.
 .\" Copyright 1997-2006 by Easy Software Products.
 .\"
 .\" These coded instructions, statements, and computer programs are the
@@ -12,7 +10,7 @@
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH cups-files.conf 5 "CUPS" "3 June 2015" "Apple Inc."
+.TH cups-files.conf 5 "CUPS" "20 June 2016" "Apple Inc."
 .SH NAME
 cups\-files.conf \- file and directory configuration file for cups
 .SH DESCRIPTION
@@ -51,7 +49,7 @@ The default is "/var/log/cups/access_log".
 .TP 5
 \fBConfigFilePerm \fImode\fR
 Specifies the permissions for all configuration files that the scheduler writes.
-The default is "0644" on OS X and "0640" on all other operating systems.
+The default is "0644" on macOS and "0640" on all other operating systems.
 .LP
 \fBNote:\fR The permissions for the \fIprinters.conf\fR file are currently masked to only allow access from the scheduler user (typically root).
 This is done because printer device URIs sometimes contain sensitive authentication information that should not be generally known on the system.
@@ -171,7 +169,7 @@ The default is "/var/spool/cups".
 \fBSandboxing strict\fR
 Specifies the level of security sandboxing that is applied to print filters, backends, and other child processes of the scheduler.
 The default is "strict".
-This directive is currently only used/supported on OS X.
+This directive is currently only used/supported on macOS.
 .\"#ServerBin
 .TP 5
 \fBServerBin \fIdirectory\fR
@@ -181,8 +179,8 @@ The default is "/usr/lib/cups" or "/usr/libexec/cups" depending on the platform.
 .TP 5
 \fBServerKeychain \fIpath\fR
 Specifies the location of TLS certificates and private keys.
-The default is "/Library/Keychains/System.keychain" on OS X and "/etc/cups/ssl" on all other operating systems.
-OS X uses its keychain database to store certificates and keys while other platforms use separate files in the specified directory, *.crt for PEM-encoded certificates and *.key for PEM-encoded private keys.
+The default is "/Library/Keychains/System.keychain" on macOS and "/etc/cups/ssl" on all other operating systems.
+macOS uses its keychain database to store certificates and keys while other platforms use separate files in the specified directory, *.crt for PEM-encoded certificates and *.key for PEM-encoded private keys.
 .\"#ServerRoot
 .TP 5
 \fBServerRoot \fIdirectory\fR
@@ -223,7 +221,4 @@ The default is "lp".
 .BR subscriptions.conf (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cups-files.conf.man.in 12699 2015-06-08 18:16:30Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 2b52fa6..42f2453 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cups-lpd.man.in 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cups-lpd man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -120,7 +118,4 @@ service using the corresponding control program.
 CUPS Online Help (http://localhost:631/help),
 RFC 2569
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cups-lpd.man.in 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 07dfcfb..c1e3f33 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cups-snmp.conf.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" snmp.conf man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -63,7 +61,4 @@ The default is 120 seconds (2 minutes).
 .BR cups-snmp (8),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cups-snmp.conf.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 1ab3025..e1a81cf 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cups-snmp.man.in 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" SNMP backend man page for CUPS.
 .\"
 .\" Copyright 2012-2014 by Apple Inc.
@@ -55,7 +53,4 @@ The CUPS SNMP backend uses the information from the Host, Printer, and Port Moni
 .BR lpinfo (8),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cups-snmp.man.in 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 02a9bac..dc8bbbb 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cups.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cups (intro) man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -141,7 +139,4 @@ CUPS Online Help (http://localhost:631/help),
 CUPS Web Site (http://www.CUPS.org),
 PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cups.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 70385f8..448704e 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupsaccept.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" accept/reject man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -88,7 +86,4 @@ Finally, the CUPS versions may ask the user for an access password depending on
 .br
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupsaccept.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 355c372..1291069 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupsaddsmb.man.in 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cupsaddsmb man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -125,7 +123,4 @@ This is useful for debugging SAMBA configuration problems.
 .BR smb.conf (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupsaddsmb.man.in 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 1c14d6e..2d4e4ac 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupsctl.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cupsctl man page for CUPS.
 .\"
 .\" Copyright 2007-2016 by Apple Inc.
@@ -100,7 +98,4 @@ You cannot set the Listen or Port directives using \fBcupsctl\fR.
 .br
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupsctl.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 51bdc30..37bf6a9 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupsd-helper.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cupsd-helper man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -57,7 +55,7 @@ with no arguments in order to discover the available printers.
 .LP
 The \fBcups-driverd\fR helper program lists all available printer drivers, a subset of "matching" printer drivers, or a copy of a specific driver PPD file.
 .LP
-The \fBcups-exec\fR helper program runs backends, filters, and other programs. On OS X these programs are run in a secure sandbox.
+The \fBcups-exec\fR helper program runs backends, filters, and other programs. On macOS these programs are run in a secure sandbox.
 .SH FILES
 The \fBcups-driverd\fR program looks for PPD and driver information files in the following directories:
 .nf
@@ -88,7 +86,4 @@ Driver information files must conform to the format defined in
 .BR ppdcfile (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupsd-helper.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 7dbb706..39030a3 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupsd-logs.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cupsd-logs man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -235,7 +233,4 @@ The \fIsides\fR field contains a copy of the sides attribute provided with the I
 .BR cups-files.conf (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupsd-logs.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 9d38954..d4b2f8c 100644 (file)
@@ -1,9 +1,7 @@
 .\"
-.\" "$Id: cupsd.conf.man.in 12767 2015-06-30 15:57:39Z msweet $"
-.\"
 .\" cupsd.conf man page for CUPS.
 .\"
-.\" Copyright 2007-2015 by Apple Inc.
+.\" Copyright 2007-2016 by Apple Inc.
 .\" Copyright 1997-2006 by Easy Software Products.
 .\"
 .\" These coded instructions, statements, and computer programs are the
@@ -12,7 +10,7 @@
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH cupsd.conf 5 "CUPS" "30 June 2015" "Apple Inc."
+.TH cupsd.conf 5 "CUPS" "21 June 2016" "Apple Inc."
 .SH NAME
 cupsd.conf \- server configuration file for cups
 .SH DESCRIPTION
@@ -193,6 +191,14 @@ to verify that the hostname resolved from the address matches one of the address
 Double lookups also prevent clients with unregistered addresses from connecting to your server.
 The default is "Off" to avoid the potential server performance problems with hostname lookups.
 Only set this option to "On" or "Double" if absolutely required.
+.\"#IdleExitTimeout
+.TP 5
+\fBIdleExitTimeout \fIseconds\fR
+Specifies the length of time to wait before shutting down due to inactivity.
+The default is "60" seconds.
+Note: Only applicable when
+.BR cupsd (8)
+is run on-demand (e.g., with \fB-l\fR).
 .\"#JobKillDelay
 .TP 5
 \fBJobKillDelay \fIseconds\fR
@@ -780,6 +786,7 @@ The group name "@SYSTEM" corresponds to the list of groups defined by the System
 .BR cups-files.conf (5)
 file.
 The group name "@OWNER" corresponds to the owner of the resource, for example the person that submitted a print job.
+Note: The 'root' user is not special and must be granted privileges like any other user account.
 .TP 5
 \fBRequire valid-user\fR
 Specifies that any authenticated user is acceptable.
@@ -870,7 +877,4 @@ Require authentication for accesses from outside the 10. network:
 .BR subscriptions.conf (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupsd.conf.man.in 12767 2015-06-30 15:57:39Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 73cf362..8db10ac 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupsd.man.in 13087 2016-02-12 18:53:24Z msweet $"
-.\"
 .\" cupsd man page for CUPS.
 .\"
 .\" Copyright 2007-2016 by Apple Inc.
@@ -129,6 +127,3 @@ in the foreground with a test configuration file called
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
 Copyright \[co] 2007-2016 by Apple Inc.
-.\"
-.\" End of "$Id: cupsd.man.in 13087 2016-02-12 18:53:24Z msweet $".
-.\"
index c81f4fd..cf38791 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupsenable.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cupsenable/cupsdisable man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -99,8 +97,4 @@ This differs from the System V versions which require the root user to execute t
 .BR lpstat (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-
-.\"
-.\" End of "$Id: cupsenable.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 321d030..6ab7328 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupsfilter.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cupsfilter man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -137,7 +135,4 @@ The following command will generate a PDF preview of job 42 for a printer named
 .BR mime.types (7),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupsfilter.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index e6d7c66..27a8958 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupstestdsc.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cupstestdsc man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -45,7 +43,4 @@ CUPS Online Help (http://localhost:631/help),
 Adobe PostScript Language Document Structuring Conventions
 Specification, Version 3.0.
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupstestdsc.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index cf5f550..940ff90 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: cupstestppd.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" cupstestppd man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -145,7 +143,4 @@ The next command tests all PPD files under the current directory and print detai
 CUPS Online Help (http://localhost:631/help),
 Adobe PostScript Printer Description File Format Specification, Version 4.3.
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: cupstestppd.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 0d51e99..009e0c0 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: filter.man 12848 2015-08-26 18:51:57Z msweet $"
-.\"
 .\" filter man page for CUPS.
 .\"
 .\" Copyright 2007-2015 by Apple Inc.
@@ -12,7 +10,7 @@
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH filter 7 "CUPS" "26 August 2015" "Apple Inc."
+.TH filter 7 "CUPS" "19 October 2015" "Apple Inc."
 .SH NAME
 filter \- cups file conversion filter interface
 .SH SYNOPSIS
@@ -202,13 +200,10 @@ The timezone of the server.
 .B USER
 The user executing the filter, typically "lp" or "root"; consult the \fIcups-files.conf\fR file for the current setting.
 .SH CONFORMING TO
-While the filter interface is compatible with System V interface
-scripts, it will only work with the System V interface script as the
-only filter.  Typically the interface script will be provided via the
-\fIlpadmin(8)\fR command using the \fI-i\fR option.
+While the filter interface is compatible with System V interface scripts, CUPS does not support System V interface scripts.
 .SH NOTES
 CUPS filters are not meant to be run directly by the user.
-Aside from the legacy System V interface issues (\fIargv[0]\fR is the printer name), CUPS filters also expect specific environment variables and file descriptors, and typically run in a user session that (on OS X) has additional restrictions that affect how it runs.
+Aside from the legacy System V interface issues (\fIargv[0]\fR is the printer name), CUPS filters also expect specific environment variables and file descriptors, and typically run in a user session that (on macOS) has additional restrictions that affect how it runs.
 Unless you are a developer and know what you are doing, please do not run filters directly.
 Instead, use the
 .BR cupsfilter (8)
@@ -222,7 +217,4 @@ program to use the appropriate filters to do the conversions you need.
 .br
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: filter.man 12848 2015-08-26 18:51:57Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index df05050..219c47d 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ippfind.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" ippfind man page for CUPS.
 .\"
 .\" Copyright 2013-2014 by Apple Inc.
@@ -256,6 +254,3 @@ Similarly, to send a PostScript test page to every PostScript printer, run:
 .BR ipptool (1)
 .SH COPYRIGHT
 Copyright \[co] 2013-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ippfind.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
index 6dee72c..08a8b03 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ipptool.man 12848 2015-08-26 18:51:57Z msweet $"
-.\"
 .\" ipptool man page for CUPS.
 .\"
 .\" Copyright 2010-2015 by Apple Inc.
@@ -242,7 +240,4 @@ IANA IPP Registry (http://www.iana.org/assignments/ipp\-registrations),
 PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
 RFC 2911 (http://tools.ietf.org/html/rfc2911),
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ipptool.man 12848 2015-08-26 18:51:57Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index f9c5c41..cdc9504 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ipptoolfile.man 12487 2015-02-05 15:42:59Z msweet $"
-.\"
 .\" ipptoolfile man page for CUPS.
 .\"
 .\" Copyright 2010-2014 by Apple Inc.
@@ -619,7 +617,4 @@ IANA IPP Registry (http://www.iana.org/assignments/ipp-registrations),
 PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp),
 RFC 2911 (http://tools.ietf.org/html/rfc3911)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ipptoolfile.man 12487 2015-02-05 15:42:59Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index cd4237b..03b10e5 100644 (file)
@@ -1,9 +1,7 @@
 .\"
-.\" "$Id: lp.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lp man page for CUPS.
 .\"
-.\" Copyright 2007-2014 by Apple Inc.
+.\" Copyright 2007-2016 by Apple Inc.
 .\" Copyright 1997-2006 by Easy Software Products.
 .\"
 .\" These coded instructions, statements, and computer programs are the
@@ -12,7 +10,7 @@
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH lp 1 "CUPS" "11 June 2014" "Apple Inc."
+.TH lp 1 "CUPS" "2 May 2016" "Apple Inc."
 .SH NAME
 lp \- print files
 .SH SYNOPSIS
@@ -129,6 +127,7 @@ Sets the number of copies to print.
 .TP 5
 \fB\-o "\fIname\fB=\fIvalue \fR[ ... \fIname\fB=\fIvalue \fR]\fB"\fR
 Sets one or more job options.
+See "COMMON JOB OPTIONS" below.
 .TP 5
 \fB\-q \fIpriority\fR
 Sets the job priority from 1 (lowest) to 100 (highest).
@@ -163,11 +162,64 @@ Aside from the printer-specific options reported by the
 .BR lpoptions (1)
 command, the following generic options are available:
 .TP 5
+\fB\-o collate=true\fR
+Prints collated copies.
+.TP 5
+\fB\-o fit\-to\-page\fR
+Scales the print file to fit on the page.
+.TP 5
+\fB\-o job-hold-until=\fIwhen\fR
+Holds the job until the specified local time.
+"when" can be "indefinite" to hold the until released, "day-time" to print the job between 6am and 6pm local time, "night" to print the job between 6pm and 6am local time, "second-shift" to print the job between 4pm and 12am local time, "third-shift" to print the job between 12am and 8am local time, or "weekend" to print the job on Saturday or Sunday.
+.TP 5
+\fB\-o job-hold-until=\fIhh:mm\fR
+Holds the job until the specified time in hours and minutes UTC.
+.TP 5
+\fB\-o job-priority=\fIpriority\fR
+Set the priority to a value from 1 (lowest) to 100 (highest), which influences when a job is scheduled for printing.
+The default priority is typically 50.
+.TP 5
+\fB\-o job-sheets=\fIname\fR\fR
+Prints a cover page (banner) with the document.
+The "name" can be "classified", "confidential", "secret", "standard", "topsecret", or "unclassified".
+.TP 5
+\fB\-o job-sheets=\fIstart-name,end-name\fR\fR
+Prints cover pages (banners) with the document.
+.TP 5
 \fB\-o media=\fIsize\fR
 Sets the page size to \fIsize\fR. Most printers support at least the size names "a4", "letter", and "legal".
 .TP 5
+\fB\-o mirror\fR
+Mirrors each page.
+.TP 5
+\fB\-o number\-up=\fR{\fI2|4|6|9|16\fR}
+Prints 2, 4, 6, 9, or 16 document (input) pages on each output page.
+.TP 5
+\fB\-o number\-up\-layout=\fIlayout\fR
+Specifies the layout of pages with the "number-up" option.
+The "layout" string can be "btlr", "btrl", "lrbt", "lrtb", "rlbt", "rltb", "tblr", or "tbrl" - the first two letters determine the column order while the second two letters determine the row order.
+"bt" is bottom-to-top, "lr" is left-to-right, "rl" is right-to-left, and "tb" is top-to-bottom.
+.TP 5
 \fB\-o orientation\-requested=4\fR
-Prints the job in landscape (rotated 90 degrees).
+Prints the job in landscape (rotated 90 degrees counter-clockwise).
+.TP 5
+\fB\-o orientation\-requested=5\fR
+Prints the job in landscape (rotated 90 degrees clockwise).
+.TP 5
+\fB\-o orientation\-requested=6\fR
+Prints the job in reverse portrait (rotated 180 degrees).
+.TP 5
+\fB\-o outputorder=reverse\fR
+Prints pages in reverse order.
+.TP 5
+\fB\-o page\-border=\fIborder\fR
+Prints a border around each document page.
+"border" is "double", "double\-thick", "single", or "single\-thick".
+.TP 5
+\fB\-o page\-ranges=\fIpage-list\fR
+Specifies which pages to print in the document.
+The list can contain a list of numbers and ranges (#-#) separated by commas, e.g., "1,3-5,16".
+The page numbers refer to the output pages and not the document's original pages - options like "number-up" can affect the numbering of the pages.
 .TP 5
 \fB\-o sides=one\-sided\fR
 Prints on one side of the paper.
@@ -177,12 +229,6 @@ Prints on both sides of the paper for portrait output.
 .TP 5
 \fB\-o sides=two\-sided\-short\-edge\fR
 Prints on both sides of the paper for landscape output.
-.TP 5
-\fB\-o fit\-to\-page\fR
-Scales the print file to fit on the page.
-.TP 5
-\fB\-o number\-up=\fR{\fI2|4|6|9|16\fR}
-Prints 2, 4, 6, 9, or 16 document (input) pages on each output page.
 .SH CONFORMING TO
 Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#".
 Also, printer and class names are \fInot\fR case-sensitive.
@@ -216,7 +262,4 @@ Print a presentation document 2-up to a printer called "foo":
 .BR lpstat (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lp.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 1790022..757e631 100644 (file)
@@ -1,9 +1,7 @@
 .\"
-.\" "$Id: lpadmin.man 12513 2015-02-11 19:45:01Z msweet $"
-.\"
 .\" lpadmin man page for CUPS.
 .\"
-.\" Copyright 2007-2015 by Apple Inc.
+.\" Copyright 2007-2016 by Apple Inc.
 .\" Copyright 1997-2006 by Easy Software Products.
 .\"
 .\" These coded instructions, statements, and computer programs are the
@@ -12,7 +10,7 @@
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH lpadmin 8 "CUPS" "11 February 2015" "Apple Inc."
+.TH lpadmin 8 "CUPS" "29 March 2016" "Apple Inc."
 .SH NAME
 lpadmin \- configure cups printers and classes
 .SH SYNOPSIS
@@ -82,16 +80,17 @@ The following options are recognized when configuring a printer queue:
 Adds the named \fIprinter\fR to \fIclass\fR.
 If \fIclass\fR does not exist it is created automatically.
 .TP 5
-\fB\-i \fIinterface\fR
-Sets a System V style interface script for the printer.
-This option cannot be specified with the \fI-P\fR option (PPD file) and is intended for providing support for legacy printer drivers.
+\fB\-i \fIppd-file\fR
+.TP 5
+\fB\-P \fIppd-file\fR
+Specifies a PostScript Printer Description (PPD) file to use with the printer.
 .TP 5
 \fB\-m \fImodel\fR
-Sets a standard System V interface script or PPD file for the printer from the \fImodel\fR directory or using one of the driver interfaces.
+Sets a standard PPD file for the printer from the \fImodel\fR directory or using one of the driver interfaces.
 Use the \fI-m\fR option with the
 .BR lpinfo (8)
 command to get a list of supported models.
-The model "raw" clears any existing interface script or PPD file and the model "everywhere" queries the printer referred to by the specified IPP \fIdevice-uri\fR.
+The model "raw" clears any existing PPD file and the model "everywhere" queries the printer referred to by the specified IPP \fIdevice-uri\fR.
 .TP 5
 \fB\-o cupsIPPSupplies=true\fR
 .TP 5
@@ -170,6 +169,7 @@ If the resulting class becomes empty it is removed.
 Sets user-level access control on a destination.
 Names starting with "@" are interpreted as UNIX groups.
 The latter two forms turn user-level access control off.
+Note: The user 'root' is not granted special access - using "-u allow:foo,bar" will allow users 'foo' and 'bar' to access the printer but NOT 'root'.
 .TP 5
 \fB\-v "\fIdevice-uri\fB"\fR
 Sets the \fIdevice-uri\fR attribute of the printer queue.
@@ -189,10 +189,6 @@ programs on the destination.
 .TP 5
 \fB\-L "\fIlocation\fB"\fR
 Provides a textual location of the destination.
-.TP 5
-\fB\-P \fIppd-file\fR
-Specifies a PostScript Printer Description file to use with the printer.
-If specified, this option overrides the \fI-i\fR option (interface script).
 .SH CONFORMING TO
 Unlike the System V printing system, CUPS allows printer names to contain any printable character except SPACE, TAB, "/", or "#".
 Also, printer and class names are \fInot\fR case-sensitive.
@@ -214,7 +210,4 @@ Create an IPP Everywhere print queue:
 .BR lpoptions (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lpadmin.man 12513 2015-02-11 19:45:01Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 4286b01..d025dba 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: lpc.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lpc man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -58,7 +56,4 @@ command or another CUPS-compatible client with that functionality.
 .BR lpstat (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lpc.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index f8dc471..5f9d28b 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: lpinfo.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lpinfo man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -20,9 +18,6 @@ lpinfo \- show available devices or drivers
 [
 .B \-E
 ] [
-.B \-U
-.I username
-] [
 \fB\-h \fIserver\fR[\fB:\fIport\fR]
 ] [
 .B \-l
@@ -51,9 +46,6 @@ lpinfo \- show available devices or drivers
 [
 .B \-E
 ] [
-.B \-U
-.I username
-] [
 \fB\-h \fIserver\fR[\fB:\fIport\fR]
 ] [
 .B \-l
@@ -77,9 +69,6 @@ The first form (\fI-m\fR) lists the available drivers, while the second form (\f
 .B \-E
 Forces encryption when connecting to the server.
 .TP 5
-\fB\-U \fIusername\fR
-Sets the username to use when connecting to the server.
-.TP 5
 \fB\-h \fIserver\fR[\fB:\fIport\fR]
 Selects an alternate server.
 .TP 5
@@ -132,7 +121,4 @@ List drivers matching "HP LaserJet":
 .BR lpadmin (8),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lpinfo.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 2447410..2206c40 100644 (file)
@@ -1,9 +1,7 @@
 .\"
-.\" "$Id: lpmove.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lpmove man page for CUPS.
 .\"
-.\" Copyright 2007-2014 by Apple Inc.
+.\" Copyright 2007-2016 by Apple Inc.
 .\" Copyright 1997-2006 by Easy Software Products.
 .\"
 .\" These coded instructions, statements, and computer programs are the
@@ -12,7 +10,7 @@
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH lpmove 8 "CUPS" "12 June 2014" "Apple Inc."
+.TH lpmove 8 "CUPS" "26 May 2016" "Apple Inc."
 .SH NAME
 lpmove \- move a job or all jobs to a new destination
 .SH SYNOPSIS
@@ -76,7 +74,4 @@ Move all jobs from "oldprinter" to "newprinter":
 .br
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lpmove.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index c9377c3..bf5adcf 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: lpoptions.man.in 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lpoptions man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -135,7 +133,4 @@ The \fBlpoptions\fR command is unique to CUPS.
 .BR lprm (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lpoptions.man.in 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 7f71720..df8788a 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: lpq.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lpq man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -66,7 +64,4 @@ Requests a more verbose (long) reporting format.
 .BR lpstat (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lpq.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index ac24e3d..553d059 100644 (file)
@@ -1,9 +1,7 @@
 .\"
-.\" "$Id: lpr.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lpr man page for CUPS.
 .\"
-.\" Copyright 2007-2013 by Apple Inc.
+.\" Copyright 2007-2016 by Apple Inc.
 .\" Copyright 1997-2006 by Easy Software Products.
 .\"
 .\" These coded instructions, statements, and computer programs are the
@@ -12,7 +10,7 @@
 .\" which should have been included with this file.  If this file is
 .\" file is missing or damaged, see the license at "http://www.cups.org/".
 .\"
-.TH lpr 1 "CUPS" "11 June 2014" "Apple Inc."
+.TH lpr 1 "CUPS" "2 May 2016" "Apple Inc."
 .SH NAME
 lpr \- print files
 .SH SYNOPSIS
@@ -103,6 +101,7 @@ Send an email on job completion.
 .TP 5
 \fB\-o \fIoption\fR[\fB=\fIvalue\fR]
 Sets a job option.
+See "COMMON JOB OPTIONS" below.
 .TP 5
 .B \-p
 Specifies that the print file should be formatted with a shaded header with the date, time, job name, and page number.
@@ -113,6 +112,78 @@ Hold job for printing.
 .TP 5
 .B \-r
 Specifies that the named print files should be deleted after submitting them.
+.SS COMMON JOB OPTIONS
+Aside from the printer-specific options reported by the
+.BR lpoptions (1)
+command, the following generic options are available:
+.TP 5
+\fB\-o collate=true\fR
+Prints collated copies.
+.TP 5
+\fB\-o fit\-to\-page\fR
+Scales the print file to fit on the page.
+.TP 5
+\fB\-o job-hold-until=\fIwhen\fR
+Holds the job until the specified local time.
+"when" can be "indefinite" to hold the until released, "day-time" to print the job between 6am and 6pm local time, "night" to print the job between 6pm and 6am local time, "second-shift" to print the job between 4pm and 12am local time, "third-shift" to print the job between 12am and 8am local time, or "weekend" to print the job on Saturday or Sunday.
+.TP 5
+\fB\-o job-hold-until=\fIhh:mm\fR
+Holds the job until the specified time in hours and minutes UTC.
+.TP 5
+\fB\-o job-priority=\fIpriority\fR
+Set the priority to a value from 1 (lowest) to 100 (highest), which influences when a job is scheduled for printing.
+The default priority is typically 50.
+.TP 5
+\fB\-o job-sheets=\fIname\fR\fR
+Prints a cover page (banner) with the document.
+The "name" can be "classified", "confidential", "secret", "standard", "topsecret", or "unclassified".
+.TP 5
+\fB\-o job-sheets=\fIstart-name,end-name\fR\fR
+Prints cover pages (banners) with the document.
+.TP 5
+\fB\-o media=\fIsize\fR
+Sets the page size to \fIsize\fR. Most printers support at least the size names "a4", "letter", and "legal".
+.TP 5
+\fB\-o mirror\fR
+Mirrors each page.
+.TP 5
+\fB\-o number\-up=\fR{\fI2|4|6|9|16\fR}
+Prints 2, 4, 6, 9, or 16 document (input) pages on each output page.
+.TP 5
+\fB\-o number\-up\-layout=\fIlayout\fR
+Specifies the layout of pages with the "number-up" option.
+The "layout" string can be "btlr", "btrl", "lrbt", "lrtb", "rlbt", "rltb", "tblr", or "tbrl" - the first two letters determine the column order while the second two letters determine the row order.
+"bt" is bottom-to-top, "lr" is left-to-right, "rl" is right-to-left, and "tb" is top-to-bottom.
+.TP 5
+\fB\-o orientation\-requested=4\fR
+Prints the job in landscape (rotated 90 degrees counter-clockwise).
+.TP 5
+\fB\-o orientation\-requested=5\fR
+Prints the job in landscape (rotated 90 degrees clockwise).
+.TP 5
+\fB\-o orientation\-requested=6\fR
+Prints the job in reverse portrait (rotated 180 degrees).
+.TP 5
+\fB\-o outputorder=reverse\fR
+Prints pages in reverse order.
+.TP 5
+\fB\-o page\-border=\fIborder\fR
+Prints a border around each document page.
+"border" is "double", "double\-thick", "single", or "single\-thick".
+.TP 5
+\fB\-o page\-ranges=\fIpage-list\fR
+Specifies which pages to print in the document.
+The list can contain a list of numbers and ranges (#-#) separated by commas, e.g., "1,3-5,16".
+The page numbers refer to the output pages and not the document's original pages - options like "number-up" can affect the numbering of the pages.
+.TP 5
+\fB\-o sides=one\-sided\fR
+Prints on one side of the paper.
+.TP 5
+\fB\-o sides=two\-sided\-long\-edge\fR
+Prints on both sides of the paper for portrait output.
+.TP 5
+\fB\-o sides=two\-sided\-short\-edge\fR
+Prints on both sides of the paper for landscape output.
 .SH NOTES
 The \fI\-c\fR, \fI\-d\fR, \fI\-f\fR, \fI\-g\fR, \fI\-i\fR, \fI\-n\fR, \fI\-t\fR, \fI\-v\fR, and \fI\-w\fR options are not supported by CUPS and produce a warning message if used.
 .SH EXAMPLES
@@ -143,7 +214,4 @@ Print a presentation document 2-up to a printer called "foo":
 .BR lpstat (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lpr.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index c989394..0e96286 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: lprm.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lprm man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -84,7 +82,4 @@ Cancel all jobs:
 .BR lpstat (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lprm.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index d5d82c5..c86082b 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: lpstat.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" lpstat man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -146,7 +144,4 @@ The Solaris \fI\-f\fR, \fI\-P\fR, and \fI\-S\fR options are silently ignored.
 .BR lprm (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: lpstat.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index c2f3c85..36868c4 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: mailto.conf.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" mailto.conf man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -46,7 +44,4 @@ Specifies a prefix string for the subject line of an email notification.
 .BR cupsd (8),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: mailto.conf.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 11ae93a..0f46848 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: mantohtml.c 12362 2014-12-12 19:50:49Z msweet $"
- *
  * Man page to HTML conversion program.
  *
  * Copyright 2007-2010, 2014 by Apple Inc.
@@ -515,7 +513,7 @@ main(int  argc,                             /* I - Number of command-line args */
        float amount = 3.0;             /* Indentation */
 
         if (line[3])
-          amount = atof(line + 4);
+          amount = (float)atof(line + 4);
 
        fputs(end_fonts[font], outfile);
        font = 0;
@@ -561,7 +559,7 @@ main(int  argc,                             /* I - Number of command-line args */
        float amount = 3.0;             /* Indentation */
 
         if (line[3])
-          amount = atof(line + 4);
+          amount = (float)atof(line + 4);
 
        fputs(end_fonts[font], outfile);
        font = 0;
@@ -594,7 +592,7 @@ main(int  argc,                             /* I - Number of command-line args */
        float amount = 3.0;             /* Indentation */
 
         if (line[3])
-          amount = atof(line + 4);
+          amount = (float)atof(line + 4);
 
        fputs(end_fonts[font], outfile);
        font = 0;
@@ -682,7 +680,7 @@ main(int  argc,                             /* I - Number of command-line args */
           lineptr ++;
 
         if (isdigit(*lineptr & 255))
-          amount = atof(lineptr);
+          amount = (float)atof(lineptr);
 
         if (newlist && list && strcmp(newlist, list))
         {
@@ -974,7 +972,8 @@ html_alternate(const char *s,               /* I - String */
     {
       if (*s == '\"')
         quote = !quote;
-      else if (*s == '\\' && s[1])
+
+      if (*s == '\\' && s[1])
       {
         s ++;
         html_putc(*s++, fp);
@@ -1218,8 +1217,3 @@ strmove(char       *d,                    /* I - Destination */
 
   *d = '\0';
 }
-
-
-/*
- * End of "$Id: mantohtml.c 12362 2014-12-12 19:50:49Z msweet $".
- */
index d5145ce..d120e5e 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: mime.convs.man 12848 2015-08-26 18:51:57Z msweet $"
-.\"
 .\" mime.convs man page for CUPS.
 .\"
 .\" Copyright 2007-2015 by Apple Inc.
@@ -44,7 +42,7 @@ Filenames are relative to the CUPS filter directory.
 .br
 \fI/usr/lib/cups/filter\fR - Typical CUPS filter directory.
 .br
-\fI/usr/libexec/cups/filter\fR - CUPS filter directory on OS X.
+\fI/usr/libexec/cups/filter\fR - CUPS filter directory on macOS.
 .SH EXAMPLES
 Define a filter that converts PostScript documents to CUPS Raster format:
 .nf
@@ -60,7 +58,4 @@ Define a filter that converts PostScript documents to CUPS Raster format:
 .BR mime.types (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: mime.convs.man 12848 2015-08-26 18:51:57Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index c3dd2f3..f902aaa 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: mime.types.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" mime.types man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -110,7 +108,4 @@ Define two MIME media types for raster data, with one being a subset with higher
 .BR mime.convs (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: mime.types.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 3284f59..ed9d3cd 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: notifier.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" notifier man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -38,7 +36,4 @@ Notifiers inherit the environment and can use the logging mechanism documented i
 .BR filter (7),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: notifier.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 20e96c4..b7fa530 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ppdc.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" ppdc man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -100,7 +98,4 @@ The default is to use the line feed character alone.
 .BR ppdcfile (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ppdc.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 01e4965..1289a22 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ppdcfile.man 13117 2016-03-07 18:36:16Z msweet $"
-.\"
 .\" ppdcfile man page for CUPS.
 .\"
 .\" Copyright 2007-2016 by Apple Inc.
@@ -159,7 +157,4 @@ Directives may be placed anywhere on a line and are followed by one or more valu
 .BR ppdpo (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ppdcfile.man 13117 2016-03-07 18:36:16Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index f5a9596..8e5832b 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ppdhtml.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" ppdhtml man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -45,7 +43,4 @@ Multiple \fI-I\fR options can be supplied to add additional directories.
 .BR ppdpo (1),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ppdhtml.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index db04476..4e09acc 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ppdi.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" ppdi man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -52,7 +50,4 @@ If no source file is specified, the filename \fIppdi.drv\fR is used.
 .BR ppdcfile (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ppdi.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 71239ad..cb2cc95 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ppdmerge.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" ppdmerge man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -48,7 +46,4 @@ Merging of different device PPDs will yield unpredictable results.
 .BR ppdcfile (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ppdmerge.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 6acf098..45d0d2a 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: ppdpo.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" ppdpo man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -28,7 +26,7 @@ ppdpo \- ppd message catalog generator (deprecated)
 ]
 .I source-file
 .SH DESCRIPTION
-\fBppdpo\fR extracts UI strings from PPDC source files and updates either a GNU gettext or OS X strings format message catalog source file for translation.
+\fBppdpo\fR extracts UI strings from PPDC source files and updates either a GNU gettext or macOS strings format message catalog source file for translation.
 \fBThis program is deprecated and will be removed in a future release of CUPS.\fR
 .SH OPTIONS
 \fBppdpo\fR supports the following options:
@@ -43,7 +41,7 @@ Multiple \fI-I\fR options can be supplied to add additional directories.
 .TP 5
 \fB\-o \fIoutput-file\fR
 Specifies the output file.
-The supported extensions are \fI.po\fR or \fI.po.gz\fR for GNU gettext format message catalogs and \fI.strings\fR for OS X strings files.
+The supported extensions are \fI.po\fR or \fI.po.gz\fR for GNU gettext format message catalogs and \fI.strings\fR for macOS strings files.
 .SH SEE ALSO
 .BR ppdc (1),
 .BR ppdhtml (1),
@@ -52,7 +50,4 @@ The supported extensions are \fI.po\fR or \fI.po.gz\fR for GNU gettext format me
 .BR ppdcfile(5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: ppdpo.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 9a3d148..30fff8d 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: printers.conf.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" printers.conf man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -30,7 +28,4 @@ The name, location, and format of this file are an implementation detail that wi
 .BR subscriptions.conf (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: printers.conf.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 860c086..f23f51b 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id: subscriptions.conf.man 12854 2015-08-28 14:08:00Z msweet $"
-.\"
 .\" subscriptions.conf man page for CUPS.
 .\"
 .\" Copyright 2007-2014 by Apple Inc.
@@ -30,7 +28,4 @@ The name, location, and format of this file are an implementation detail that wi
 .BR printers.conf (5),
 CUPS Online Help (http://localhost:631/help)
 .SH COPYRIGHT
-Copyright \[co] 2007-2015 by Apple Inc.
-.\"
-.\" End of "$Id: subscriptions.conf.man 12854 2015-08-28 14:08:00Z msweet $".
-.\"
+Copyright \[co] 2007-2016 by Apple Inc.
index 10a252a..ae6d2bf 100644 (file)
@@ -3,12 +3,12 @@ bcp.o: bcp.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/ppd.h ../cups/raster.h
 tbcp.o: tbcp.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/ppd.h ../cups/raster.h
index 1c3bf69..11c9eba 100644 (file)
@@ -1,18 +1,16 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# Port monitor makefile for CUPS.
 #
-#   Port monitor makefile for CUPS.
+# Copyright 2007-2012 by Apple Inc.
+# Copyright 2006 by Easy Software Products.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 2006 by Easy Software Products.
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
-#
-#   This file is subject to the Apple OS-Developed Software exception.
+# This file is subject to the Apple OS-Developed Software exception.
 #
 
 include ../Makedefs
@@ -140,8 +138,3 @@ tbcp:       tbcp.o ../cups/$(LIBCUPS)
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
-#
index 11c2e68..0eef9a5 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: bcp.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * TBCP port monitor for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -278,8 +276,3 @@ pswrite(const char *buf,            /* I - Buffer to write */
 
   return ((ssize_t)bytes);
 }
-
-
-/*
- * End of "$Id: bcp.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 5325faf..be7a788 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: tbcp.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * TBCP port monitor for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -268,8 +266,3 @@ pswrite(const char *buf,            /* I - Buffer to write */
 
   return ((ssize_t)bytes);
 }
-
-
-/*
- * End of "$Id: tbcp.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index d844f9d..a6bc421 100644 (file)
@@ -7,7 +7,7 @@ mailto.o: mailto.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 rss.o: rss.c ../cups/cups.h ../cups/file.h ../cups/versioning.h \
   ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
   ../cups/pwg.h ../cups/string-private.h ../config.h \
@@ -18,5 +18,4 @@ testnotify.o: testnotify.c ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
index 3206dd0..dd3e5c8 100644 (file)
@@ -1,16 +1,14 @@
 #
-# "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $"
+# Notifier makefile for CUPS.
 #
-#   Notifier makefile for CUPS.
+# Copyright 2007-2012 by Apple Inc.
+# Copyright 1997-2007 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2012 by Apple Inc.
-#   Copyright 1997-2007 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 include ../Makedefs
@@ -158,8 +156,3 @@ testnotify: testnotify.o ../cups/$(LIBCUPS)
 $(OBJS):       ../Makedefs
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 10996 2013-05-29 11:51:34Z msweet $".
-#
index 2a01f24..4eddf97 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: dbus.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * D-Bus notifier for CUPS.
  *
  * Copyright 2008-2014 by Apple Inc.
@@ -651,8 +649,3 @@ main(void)
   return (1);
 }
 #endif /* HAVE_DBUS */
-
-
-/*
- * End of "$Id: dbus.c 11594 2014-02-14 20:09:01Z msweet $".
- */
index 724e12b..ce55f18 100644 (file)
@@ -1,24 +1,14 @@
 /*
- * "$Id: mailto.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "mailto" notifier for CUPS.
  *
- *   "mailto" notifier for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main()               - Main entry for the mailto notifier.
- *   email_message()      - Email a notification message.
- *   load_configuration() - Load the mailto.conf file.
- *   pipe_sendmail()      - Open a pipe to sendmail...
- *   print_attributes()   - Print the attributes in a request...
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -639,8 +629,3 @@ print_attributes(ipp_t *ipp,                /* I - IPP request */
            ippTagString(attr->value_tag), buffer);
   }
 }
-
-
-/*
- * End of "$Id: mailto.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index f2a0402..be765d6 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: rss.c 12945 2015-10-26 19:46:02Z msweet $"
- *
  * RSS notifier for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -732,8 +730,3 @@ xml_escape(const char *s)           /* I - String to escape */
 
   return (e);
 }
-
-
-/*
- * End of "$Id: rss.c 12945 2015-10-26 19:46:02Z msweet $".
- */
index e4db4c1..cd01617 100644 (file)
@@ -1,21 +1,14 @@
 /*
- * "$Id: testnotify.c 13040 2016-01-11 20:29:13Z msweet $"
+ * Test notifier for CUPS.
  *
- *   Test notifier for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007-2016 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main()             - Main entry for the test notifier.
- *   print_attributes() - Print the attributes in a request...
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -120,8 +113,3 @@ print_attributes(ipp_t *ipp,                /* I - IPP request */
            ippTagString(attr->value_tag), buffer);
   }
 }
-
-
-/*
- * End of "$Id: testnotify.c 13040 2016-01-11 20:29:13Z msweet $".
- */
diff --git a/packaging/InstallationCheck b/packaging/InstallationCheck
deleted file mode 100755 (executable)
index 3458cbb..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-case `uname -r` in
-       # OS X 10.7.x
-       11.*) exit 0;;
-
-       # OS X 10.8.x
-       12.*) exit 0;;
-
-       # Older OS X...
-       *) exit 97;;
-esac
diff --git a/packaging/LICENSE.rtf b/packaging/LICENSE.rtf
deleted file mode 100644 (file)
index b348f6b..0000000
+++ /dev/null
@@ -1,434 +0,0 @@
-{\rtf1\ansi\ansicpg1252\cocoartf1011
-{\fonttbl\f0\froman\fcharset0 Times-Roman;\f1\fnil\fcharset0 LucidaGrande;\f2\fmodern\fcharset0 Courier;
-\f3\fmodern\fcharset0 Courier-Oblique;}
-{\colortbl;\red255\green255\blue255;\red0\green0\blue238;}
-{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
-{\list\listtemplateid2\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid101\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid102\'02\'01.;}{\levelnumbers\'01;}\fi-360\li1440\lin1440 }{\listname ;}\listid2}
-{\list\listtemplateid3\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid201\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid202\'02\'01.;}{\levelnumbers\'01;}\fi-360\li1440\lin1440 }{\listname ;}\listid3}
-{\list\listtemplateid4\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid301\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid4}
-{\list\listtemplateid5\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid401\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid5}
-{\list\listtemplateid6\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid501\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid6}
-{\list\listtemplateid7\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid601\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid7}}
-{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}{\listoverride\listid4\listoverridecount0\ls4}{\listoverride\listid5\listoverridecount0\ls5}{\listoverride\listid6\listoverridecount0\ls6}{\listoverride\listid7\listoverridecount0\ls7}}
-\margl1440\margr1440\margb1800\margt1800\vieww9000\viewh8400\viewkind0
-\deftab720
-\pard\pardeftab720\sa280\qc
-
-\f0\b\fs36 \cf0 CUPS License Agreement\
-\pard\pardeftab720\sa240\qc
-
-\b0\fs24 \cf0 Copyright 2007-2009 by Apple Inc.
-\f1 \uc0\u8232 
-\f0 1 Infinite Loop
-\f1 \uc0\u8232 
-\f0 Cupertino, CA 95014 USA
-\f1 \uc0\u8232 \u8232 
-\f0 WWW: {\field{\*\fldinst{HYPERLINK "http://www.cups.org/"}}{\fldrslt \cf2 \ul \ulc2 http://www.cups.org}}\
-\pard\pardeftab720\sa280\ql\qnatural
-
-\b\fs28 \cf0 Introduction\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0\fs24 \cf0 CUPS
-\fs20 \super TM
-\fs24 \nosupersub  is provided under the GNU General Public License ("GPL") and GNU Library General Public License ("LGPL"), Version 2, with exceptions for Apple operating systems and the OpenSSL toolkit. A copy of the exceptions and licenses follow this introduction.\
-The GNU LGPL applies to the CUPS API library, located in the "cups" subdirectory of the CUPS source distribution and in the "cups" include directory and library files in the binary distributions. The GNU GPL applies to the remainder of the CUPS distribution, including the "pdftops" filter which is based upon Xpdf and the CUPS imaging library.\
-For those not familiar with the GNU GPL, the license basically allows you to:\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls1\ilvl0\cf0 {\listtext      \'95    }Use the CUPS software at no charge.\
-{\listtext     \'95    }Distribute verbatim copies of the software in source or binary form.\
-{\listtext     \'95    }Sell verbatim copies of the software for a media fee, or sell support for the software.\
-{\listtext     \'95    }Distribute or sell printer drivers and filters that use CUPS so long as source code is made available under the GPL.\
-\pard\pardeftab720\sa240\ql\qnatural
-\cf0 What this license 
-\b does not
-\b0  allow you to do is make changes or add features to CUPS and then sell a binary distribution without source code. You must provide source for any new drivers, changes, or additions to the software, and all code must be provided under the GPL or LGPL as appropriate. The only exceptions to this are the portions of the CUPS software covered by the Apple operating system license exceptions outlined later in this license agreement.\
-The GNU LGPL relaxes the "link-to" restriction, allowing you to develop applications that use the CUPS API library under other licenses and/or conditions as appropriate for your application.\
-\pard\pardeftab720\sa280\ql\qnatural
-
-\b\fs28 \cf0 License Exceptions\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0\fs24 \cf0 In addition, as the copyright holder of CUPS, Apple Inc. grants the following special exceptions:\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls2\ilvl0
-\b \cf0 {\listtext     1.      }Apple Operating System Development License Exception
-\b0 ;\
-\pard\tx940\tx1440\pardeftab720\li1440\fi-1440\ql\qnatural
-\ls2\ilvl1\cf0 {\listtext      1.      }Software that is developed by any person or entity for an Apple Operating System ("Apple OS-Developed Software"), including but not limited to Apple and third party printer drivers, filters, and backends for an Apple Operating System, that is linked to the CUPS imaging library or based on any sample filters or backends provided with CUPS shall not be considered to be a derivative work or collective work based on the CUPS program and is exempt from the mandatory source code release clauses of the GNU GPL. You may therefore distribute linked combinations of the CUPS imaging library with Apple OS-Developed Software without releasing the source code of the Apple OS-Developed Software. You may also use sample filters and backends provided with CUPS to develop Apple OS-Developed Software without releasing the source code of the Apple OS-Developed Software.\
-{\listtext     2.      }An Apple Operating System means any operating system software developed and/or marketed by Apple Computer, Inc., including but not limited to all existing releases and versions of Apple's Darwin, Mac OS X, and Mac OS X Server products and all follow-on releases and future versions thereof.\
-{\listtext     3.      }This exception is only available for Apple OS-Developed Software and does not apply to software that is distributed for use on other operating systems.\
-{\listtext     4.      }All CUPS software that falls under this license exception have the following text at the top of each source file:\
-{\listtext     5.      }This file is subject to the Apple OS-Developed Software exception.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls2\ilvl0
-\b \cf0 {\listtext     2.      }OpenSSL Toolkit License Exception
-\b0 ;\
-\pard\tx940\tx1440\pardeftab720\li1440\fi-1440\ql\qnatural
-\ls2\ilvl1\cf0 {\listtext      1.      }Apple Inc. explicitly allows the compilation and distribution of the CUPS software with the OpenSSL Toolkit.\
-\pard\pardeftab720\sa240\ql\qnatural
-\cf0 No developer is required to provide these exceptions in a derived work.\
-\pard\pardeftab720\sa280\ql\qnatural
-
-\b\fs28 \cf0 Trademarks\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0\fs24 \cf0 CUPS and the CUPS logo (the "CUPS Marks") are trademarks of Apple Inc. Apple grants you a non-exclusive and non-transferable right to use the CUPS Marks in any direct port or binary distribution incorporating CUPS software and in any promotional material therefor.  You agree that your products will meet the highest levels of quality and integrity for similar goods, not be unlawful, and be developed, manufactured, and distributed in compliance with this license.  You will not interfere with Apple's rights in the CUPS Marks, and all use of the CUPS Marks shall inure to the benefit of Apple.  This license does not apply to use of the CUPS Marks in a derivative products, which requires prior written permission from Apple Inc.\
-\pard\pardeftab720\sa280\ql\qnatural
-
-\b\fs28 \cf0 \page \pard\pardeftab720\sa280\ql\qnatural
-
-\fs36 \cf0 GNU GENERAL PUBLIC LICENSE\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0\fs24 \cf0 Version 2, June 1991\
-\pard\pardeftab720\ql\qnatural
-
-\f2 \cf0 Copyright 1989, 1991 Free Software Foundation, Inc.\
-59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
-\
-Everyone is permitted to copy and distribute verbatim\
-copies of this license document, but changing it is not allowed.\
-\pard\pardeftab720\sa300\ql\qnatural
-
-\f0\b \cf0 Preamble\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0 \cf0 The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\
-When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\
-To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\
-For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\
-We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\
-Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\
-Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\
-The precise terms and conditions for copying, distribution and modification follow.\
-\pard\pardeftab720\sa300\ql\qnatural
-
-\b \cf0 GNU GENERAL PUBLIC LICENSE
-\f1 \uc0\u8232 
-\f0 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls3\ilvl0
-\b0 \cf0 {\listtext    1.      }This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      2.      }Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      3.      }You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      4.      }You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      5.      }You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\
-\pard\tx940\tx1440\pardeftab720\li1440\fi-1440\ql\qnatural
-\ls3\ilvl1\cf0 {\listtext      1.      }You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.\
-{\listtext     2.      }You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.\
-{\listtext     3.      }if the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      6.      }These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\
-{\listtext     7.      }Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\
-{\listtext     8.      }In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      9.      }You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\
-\pard\tx940\tx1440\pardeftab720\li1440\fi-1440\ql\qnatural
-\ls3\ilvl1\cf0 {\listtext      1.      }Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\
-{\listtext     2.      }Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\
-{\listtext     3.      }Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      10.     }The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\
-{\listtext     11.     }If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      12.     }You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\
-{\listtext     13.     }You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\
-{\listtext     14.     }Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\
-{\listtext     15.     }If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      16.     }If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\
-{\listtext     17.     }It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\
-{\listtext     18.     }This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      19.     }If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\
-{\listtext     20.     }The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      21.     }Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls3\ilvl0\cf0 {\listtext      22.     }If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\
-\pard\pardeftab720\sa300\ql\qnatural
-
-\b \cf0 NO WARRANTY\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls4\ilvl0
-\b0 \cf0 {\listtext    1.      }BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
-{\listtext     2.      }IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\
-\pard\pardeftab720\sa300\ql\qnatural
-
-\b \cf0 END OF TERMS AND CONDITIONS\
-How to Apply These Terms to Your New Programs\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0 \cf0 If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\
-To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\
-\pard\pardeftab720\ql\qnatural
-
-\f3\i \cf0 one line to give the program's name and an idea of what it does.
-\f2\i0 \
-Copyright (C) 
-\f3\i yyyy
-\f2\i0   
-\f3\i name of author
-\f2\i0 \
-\
-This program is free software; you can redistribute it and/or\
-modify it under the terms of the GNU General Public License\
-as published by the Free Software Foundation; either version 2\
-of the License, or (at your option) any later version.\
-\
-This program is distributed in the hope that it will be useful,\
-but WITHOUT ANY WARRANTY; without even the implied warranty of\
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\
-GNU General Public License for more details.\
-\
-You should have received a copy of the GNU General Public License\
-along with this program; if not, write to the Free Software\
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\f0 \cf0 Also add information on how to contact you by electronic and paper mail.\
-If the program is interactive, make it output a short notice like this when it starts in an interactive mode:\
-\pard\pardeftab720\ql\qnatural
-
-\f2 \cf0 Gnomovision version 69, Copyright (C) 
-\f3\i year
-\f2\i0  
-\f3\i name of author
-\f2\i0 \
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details\
-type `show w'.  This is free software, and you are welcome\
-to redistribute it under certain conditions; type `show c' \
-for details.\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\f0 \cf0 The hypothetical commands 
-\f2 `show w'
-\f0  and 
-\f2 `show c'
-\f0  should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than 
-\f2 `show w'
-\f0  and 
-\f2 `show c'
-\f0 ; they could even be mouse-clicks or menu items--whatever suits your program.\
-You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:\
-\pard\pardeftab720\ql\qnatural
-
-\f2 \cf0 Yoyodyne, Inc., hereby disclaims all copyright\
-interest in the program `Gnomovision'\
-(which makes passes at compilers) written \
-by James Hacker.\
-\
-\pard\pardeftab720\ql\qnatural
-
-\f3\i \cf0 signature of Ty Coon
-\f2\i0 , 1 April 1989\
-Ty Coon, President of Vice\
-\pard\pardeftab720\sa280\ql\qnatural
-
-\f0\b\fs36 \cf0 GNU LIBRARY GENERAL PUBLIC LICENSE\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0\fs24 \cf0 Version 2, June 1991\
-\pard\pardeftab720\ql\qnatural
-
-\f2 \cf0 Copyright (C) 1991 Free Software Foundation, Inc.\
-59 Temple Place - Suite 330, Boston, MA  02111-1307, USA\
-Everyone is permitted to copy and distribute verbatim copies\
-of this license document, but changing it is not allowed.\
-\
-[This is the first released version of the library GPL.  It is\
- numbered 2 because it goes with version 2 of the ordinary GPL.]\
-\pard\pardeftab720\sa300\ql\qnatural
-
-\f0\b \cf0 Preamble\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0 \cf0 The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.\
-This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too.\
-When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\
-To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it.\
-For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights.\
-Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library.\
-Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations.\
-Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\
-Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license.\
-The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such.\
-Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better.\
-However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries.\
-The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library.\
-Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one.\
-\pard\pardeftab720\sa300\ql\qnatural
-
-\b \cf0 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\
-\pard\pardeftab720\sa240\ql\qnatural
-\cf0 0.
-\b0  This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you".\
-A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables.\
-The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".)\
-"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library.\
-Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does.\
-
-\b 1.
-\b0  You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library.\
-You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\
-
-\b 2.
-\b0  You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls5\ilvl0\cf0 {\listtext      1.      }The modified work must itself be a software library.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls5\ilvl0\cf0 {\listtext      2.      }\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls5\ilvl0\cf0 {\listtext      3.      }You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls5\ilvl0\cf0 {\listtext      4.      }\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls5\ilvl0\cf0 {\listtext      5.      }You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls5\ilvl0\cf0 {\listtext      6.      }\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls5\ilvl0\cf0 {\listtext      7.      }If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls5\ilvl0\cf0 {\listtext      8.      }(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.)\
-\pard\pardeftab720\sa240\ql\qnatural
-\cf0 These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\
-Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library.\
-In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b \cf0 3.
-\b0  You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.\
-Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy.\
-This option is useful when you wish to copy part of the code of the Library into a program that is not a library.\
-
-\b 4.
-\b0  You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange.\
-If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code.\
-
-\b 5.
-\b0  A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License.\
-However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables.\
-When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law.\
-If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.)\
-Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself.\
-
-\b 6.
-\b0  As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications.\
-You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things:\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls6\ilvl0\cf0 {\listtext      1.      }Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.)\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls6\ilvl0\cf0 {\listtext      2.      }\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls6\ilvl0\cf0 {\listtext      3.      }Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls6\ilvl0\cf0 {\listtext      4.      }\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls6\ilvl0\cf0 {\listtext      5.      }If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls6\ilvl0\cf0 {\listtext      6.      }\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls6\ilvl0\cf0 {\listtext      7.      }Verify that the user has already received a copy of these materials or that you have already sent this user a copy.\
-\pard\pardeftab720\sa240\ql\qnatural
-\cf0 For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\
-It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute.\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b \cf0 7.
-\b0  You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things:\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls7\ilvl0\cf0 {\listtext      1.      }Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above.\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\sa240\ql\qnatural
-\ls7\ilvl0\cf0 {\listtext      2.      }\
-\pard\tx220\tx720\pardeftab720\li720\fi-720\ql\qnatural
-\ls7\ilvl0\cf0 {\listtext      3.      }Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work.\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b \cf0 8.
-\b0  You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\
-
-\b 9.
-\b0  You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it.\
-
-\b 10.
-\b0  Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\
-
-\b 11.
-\b0  If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library.\
-If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances.\
-It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\
-This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\
-
-\b 12.
-\b0  If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\
-
-\b 13.
-\b0  The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\
-Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation.\
-
-\b 14.
-\b0  If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\
-
-\b NO WARRANTY
-\b0 \
-
-\b 15.
-\b0  BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
-
-\b 16.
-\b0  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\
-\pard\pardeftab720\sa300\ql\qnatural
-
-\b \cf0 END OF TERMS AND CONDITIONS\
-How to Apply These Terms to Your New Libraries\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\b0 \cf0 If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License).\
-To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.\
-\pard\pardeftab720\ql\qnatural
-
-\f3\i \cf0 one line to give the library's name and an idea of what it does.
-\f2\i0 \
-Copyright (C) 
-\f3\i year
-\f2\i0   
-\f3\i name of author
-\f2\i0 \
-\
-This library is free software; you can redistribute it and/or\
-modify it under the terms of the GNU Lesser General Public\
-License as published by the Free Software Foundation; either\
-version 2.1 of the License, or (at your option) any later version.\
-\
-This library is distributed in the hope that it will be useful,\
-but WITHOUT ANY WARRANTY; without even the implied warranty of\
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\
-Lesser General Public License for more details.\
-\
-You should have received a copy of the GNU Lesser General Public\
-License along with this library; if not, write to the Free Software\
-Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\f0 \cf0 Also add information on how to contact you by electronic and paper mail.\
-You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names:\
-\pard\pardeftab720\ql\qnatural
-
-\f2 \cf0 Yoyodyne, Inc., hereby disclaims all copyright interest in\
-the library `Frob' (a library for tweaking knobs) written\
-by James Random Hacker.\
-\
-\pard\pardeftab720\ql\qnatural
-
-\f3\i \cf0 signature of Ty Coon
-\f2\i0 , 1 April 1990\
-Ty Coon, President of Vice\
-\pard\pardeftab720\sa240\ql\qnatural
-
-\f0 \cf0 That's all there is to it!\
-}
\ No newline at end of file
diff --git a/packaging/WELCOME.rtf b/packaging/WELCOME.rtf
deleted file mode 100644 (file)
index aae1174..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-{\rtf1\ansi\ansicpg1252\cocoartf1009\cocoasubrtf300
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\margl1440\margr1440\margb1800\margt1800\vieww9000\viewh8400\viewkind0
-\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural
-
-\f0\fs24 \cf0 This program will install CUPS @CUPS_VERSION@, replacing the CUPS software that is included with Mac OS X.\
-\
-
-\b WARNING\
-
-\b0 \
-This is pre-release software and should not be used in production environments. Because Mac OS X packages cannot be uninstalled, you will need to reinstall Mac OS X to revert to the original CUPS software.\
-\
-Please report all problems using the Bugs & Features page on the CUPS home page:\
-\
-       {\field{\*\fldinst{HYPERLINK "http://www.cups.org/str.php"}}{\fldrslt http://www.cups.org/str.php}}\
-\
-
-\b NO WARRANTY\
-
-\b0 \
-CUPS is provided under the terms of the GNU General Public License and GNU Library General Public License versions 2. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\
-}
\ No newline at end of file
diff --git a/packaging/cups-desc.plist.in b/packaging/cups-desc.plist.in
deleted file mode 100644 (file)
index 4d1d296..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-        <key>IFPkgDescriptionDeleteWarning</key>
-        <string></string>
-        <key>IFPkgDescriptionDescription</key>
-        <string>CUPS provides a portable printing layer for UNIX(r) operating systems.</string>
-        <key>IFPkgDescriptionTitle</key>
-        <string>CUPS</string>
-        <key>IFPkgDescriptionVersion</key>
-        <string>@CUPS_RELEASE@</string>
-</dict>
-</plist>
diff --git a/packaging/cups-info.plist.in b/packaging/cups-info.plist.in
deleted file mode 100644 (file)
index d1f6134..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-        <key>IFPkgFlagAuthorizationAction</key>
-        <string>RootAuthorization</string>
-       <key>IFPkgFlagBackgroundAlignment</key>
-       <string>bottomleft</string>
-       <key>IFPkgFlagBackgroundScaling</key>
-       <string>none</string>
-        <key>IFPkgFormatVersion</key>
-        <real>0.1</real>
-       <key>CFBundleIdentifier</key>
-       <string>org.cups.cups</string>
-        <key>CFBundleName</key>
-        <string>CUPS</string>
-        <key>CFBundleGetInfoString</key>
-        <string>CUPS, @CUPS_VERSION@</string>
-        <key>CFBundleShortVersionString</key>
-        <string>@CUPS_RELEASE@</string>
-       <key>IFPkgFlagAllowBackRev</key>
-       <true/>
-       <key>IFPkgFlagRootVolumeOnly</key>
-       <true/>
-</dict>
-</plist>
index 94a648e..16ba1d6 100644 (file)
@@ -1,9 +1,7 @@
 #
-# "$Id: cups.list.in 11776 2014-03-28 19:16:05Z msweet $"
-#
 # ESP Package Manager (EPM) file list for CUPS.
 #
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
 #
 # These coded instructions, statements, and computer programs are the
@@ -15,7 +13,7 @@
 
 # Product information
 %product CUPS
-%copyright 2007-2014 by Apple Inc.
+%copyright 2007-2016 by Apple Inc.
 %vendor Apple Inc.
 #%license LICENSE.txt
 %readme LICENSE.txt
@@ -26,7 +24,7 @@
 %version @CUPS_VERSION@
 %format all
 %description CUPS is the standards-based, open source printing system developed by
-%description Apple Inc. for OS X and other UNIX®-like operating systems.
+%description Apple Inc. for macOS® and other UNIX®-like operating systems.
 
 %format rpm
 %provides lpd
@@ -440,15 +438,8 @@ d 0511 root $CUPS_PRIMARY_SYSTEM_GROUP $STATEDIR/certs -
 d 0755 root sys $DATADIR -
 
 d 0755 root sys $DATADIR/banners -
-f 0444 root sys $DATADIR/banners/classified data/classified
-f 0444 root sys $DATADIR/banners/confidential data/confidential
-f 0444 root sys $DATADIR/banners/secret data/secret
-f 0444 root sys $DATADIR/banners/standard data/standard
-f 0444 root sys $DATADIR/banners/topsecret data/topsecret
-f 0444 root sys $DATADIR/banners/unclassified data/unclassified
 
 d 0755 root sys $DATADIR/data -
-f 0444 root sys $DATADIR/data/testprint data/testprint
 
 d 0755 root sys $DATADIR/drv -
 f 0444 root sys $DATADIR/drv/sample.drv ppdc/sample.drv
@@ -524,7 +515,6 @@ f 0444 root sys $DATADIR/templates templates/*.tmpl
 
 # Config files
 d 0755 root $CUPS_GROUP $SERVERROOT -
-d 0755 root $CUPS_GROUP $SERVERROOT/interfaces -
 d 0755 root $CUPS_GROUP $SERVERROOT/ppd -
 d 0700 root $CUPS_GROUP $SERVERROOT/ssl -
 c $CUPS_PERM root $CUPS_GROUP $SERVERROOT/cups-files.conf conf/cups-files.conf
@@ -552,6 +542,7 @@ f 0444 root sys $INCLUDEDIR/cups/http.h cups/http.h
 f 0444 root sys $INCLUDEDIR/cups/ipp.h cups/ipp.h
 f 0444 root sys $INCLUDEDIR/cups/language.h cups/language.h
 f 0444 root sys $INCLUDEDIR/cups/ppd.h cups/ppd.h
+f 0444 root sys $INCLUDEDIR/cups/pwg.h cups/pwg.h
 f 0444 root sys $INCLUDEDIR/cups/raster.h cups/raster.h
 f 0444 root sys $INCLUDEDIR/cups/sidechannel.h cups/sidechannel.h
 f 0444 root sys $INCLUDEDIR/cups/transcode.h cups/transcode.h
@@ -574,6 +565,7 @@ f 0444 root sys $DOCDIR/help doc/help/spec*.html
 d 0755 root sys $DOCDIR -
 f 0444 root sys $DOCDIR doc/*.css
 f 0444 root sys $DOCDIR doc/*.html
+f 0444 root sys $DOCDIR/apple-touch-icon.png doc/apple-touch-icon.png
 d 0755 root sys $DOCDIR/help -
 f 0444 root sys $DOCDIR/help/accounting.html doc/help/accounting.html
 f 0444 root sys $DOCDIR/help/cgi.html doc/help/cgi.html
@@ -586,9 +578,7 @@ f 0444 root sys $DOCDIR/help/overview.html doc/help/overview.html
 f 0444 root sys $DOCDIR/help/policies.html doc/help/policies.html
 f 0444 root sys $DOCDIR/help/security.html doc/help/security.html
 f 0444 root sys $DOCDIR/help/sharing.html doc/help/sharing.html
-f 0444 root sys $DOCDIR/help/standard.html doc/help/standard.html
 f 0444 root sys $DOCDIR/help/translation.html doc/help/translation.html
-f 0444 root sys $DOCDIR/help/whatsnew.html doc/help/whatsnew.html
 f 0444 root sys $DOCDIR/help doc/help/man-*.html
 f 0444 root sys $DOCDIR/help doc/help/ref-*.html
 d 0755 root sys $DOCDIR/images -
@@ -598,11 +588,11 @@ f 0444 root sys $DOCDIR/images doc/images/*.png
 f 0444 root sys $DOCDIR/robots.txt doc/robots.txt
 
 # Localized documentation files
-#d 0755 root sys $DOCDIR/de
-#f 0444 root sys $DOCDIR/de doc/de/*.html
+d 0755 root sys $DOCDIR/de
+f 0444 root sys $DOCDIR/de doc/de/*.html
 
-#d 0755 root sys $DOCDIR/es
-#f 0444 root sys $DOCDIR/es doc/es/*.html
+d 0755 root sys $DOCDIR/es
+f 0444 root sys $DOCDIR/es doc/es/*.html
 
 #d 0755 root sys $DOCDIR/et
 #f 0444 root sys $DOCDIR/et doc/et/*.html
@@ -623,14 +613,17 @@ f 0444 root sys $DOCDIR/robots.txt doc/robots.txt
 #d 0755 root sys $DOCDIR/it
 #f 0444 root sys $DOCDIR/it doc/it/*.html
 
-#d 0755 root sys $DOCDIR/ja
-#f 0444 root sys $DOCDIR/ja doc/ja/*.html
+d 0755 root sys $DOCDIR/ja
+f 0444 root sys $DOCDIR/ja doc/ja/*.html
 
 #d 0755 root sys $DOCDIR/pl
 #f 0444 root sys $DOCDIR/pl doc/pl/*.html
 
-#d 0755 root sys $DOCDIR/ru
-#f 0444 root sys $DOCDIR/ru doc/ru/*.html
+d 0755 root sys $DOCDIR/pt_BR
+f 0444 root sys $DOCDIR/pt_BR doc/pt_BR/*.html
+
+d 0755 root sys $DOCDIR/ru
+f 0444 root sys $DOCDIR/ru doc/ru/*.html
 
 #d 0755 root sys $DOCDIR/sv
 #f 0444 root sys $DOCDIR/sv doc/sv/*.html
@@ -647,19 +640,24 @@ d 0755 root sys $MANDIR/man5 -
 d 0755 root sys $MANDIR/man7 -
 
 f 0444 root sys $MANDIR/man1/cancel.$MAN1EXT man/cancel.$MAN1EXT
+f 0444 root sys $MANDIR/man1/cups.$MAN1EXT man/cups.$MAN1EXT
 f 0444 root sys $MANDIR/man1/cupstestdsc.$MAN1EXT man/cupstestdsc.$MAN1EXT
 f 0444 root sys $MANDIR/man1/cupstestppd.$MAN1EXT man/cupstestppd.$MAN1EXT
+f 0444 root sys $MANDIR/man1/ippfind.$MAN1EXT man/ippfind.$MAN1EXT
 f 0444 root sys $MANDIR/man1/ipptool.$MAN1EXT man/ipptool.$MAN1EXT
+f 0444 root sys $MANDIR/man1/lp.$MAN1EXT man/lp.$MAN1EXT
 f 0444 root sys $MANDIR/man1/lpoptions.$MAN1EXT man/lpoptions.$MAN1EXT
 f 0444 root sys $MANDIR/man1/lpq.$MAN1EXT man/lpq.$MAN1EXT
-f 0444 root sys $MANDIR/man1/lprm.$MAN1EXT man/lprm.$MAN1EXT
 f 0444 root sys $MANDIR/man1/lpr.$MAN1EXT man/lpr.$MAN1EXT
+f 0444 root sys $MANDIR/man1/lprm.$MAN1EXT man/lprm.$MAN1EXT
 f 0444 root sys $MANDIR/man1/lpstat.$MAN1EXT man/lpstat.$MAN1EXT
-f 0444 root sys $MANDIR/man1/lp.$MAN1EXT man/lp.$MAN1EXT
 
 f 0444 root sys $MANDIR/man5/classes.conf.$MAN5EXT man/classes.conf.$MAN5EXT
+f 0444 root sys $MANDIR/man5/client.conf.$MAN5EXT man/client.conf.$MAN5EXT
+f 0444 root sys $MANDIR/man5/cups-files.conf.$MAN5EXT man/cups-files.conf.$MAN5EXT
 f 0444 root sys $MANDIR/man5/cups-snmp.conf.$MAN5EXT man/cups-snmp.conf.$MAN5EXT
 f 0444 root sys $MANDIR/man5/cupsd.conf.$MAN5EXT man/cupsd.conf.$MAN5EXT
+f 0444 root sys $MANDIR/man5/cupsd-logs.$MAN5EXT man/cupsd-logs.$MAN5EXT
 f 0444 root sys $MANDIR/man5/ipptoolfile.$MAN5EXT man/ipptoolfile.$MAN5EXT
 f 0444 root sys $MANDIR/man5/mailto.conf.$MAN5EXT man/mailto.conf.$MAN5EXT
 f 0444 root sys $MANDIR/man5/mime.convs.$MAN5EXT man/mime.convs.$MAN5EXT
@@ -668,14 +666,15 @@ f 0444 root sys $MANDIR/man5/printers.conf.$MAN5EXT man/printers.conf.$MAN5EXT
 
 l 0644 root sys $AMANDIR/man$MAN8DIR/accept.$MAN8EXT cupsaccept.$MAN8EXT
 f 0444 root sys $AMANDIR/man$MAN8DIR/cupsaccept.$MAN8EXT man/cupsaccept.$MAN8EXT
-l 0644 root sys $AMANDIR/man$MAN8DIR/cupsreject.$MAN8EXT cupsaccept.$MAN8EXT
 f 0444 root sys $AMANDIR/man$MAN8DIR/cupsaddsmb.$MAN8EXT man/cupsaddsmb.$MAN8EXT
+l 0644 root sys $AMANDIR/man$MAN8DIR/cupsreject.$MAN8EXT cupsaccept.$MAN8EXT
 f 0444 root sys $AMANDIR/man$MAN8DIR/cupsctl.$MAN8EXT man/cupsctl.$MAN8EXT
 f 0444 root sys $AMANDIR/man$MAN8DIR/cupsfilter.$MAN8EXT man/cupsfilter.$MAN8EXT
 f 0444 root sys $AMANDIR/man$MAN8DIR/cups-snmp.$MAN8EXT man/cups-snmp.$MAN8EXT
 f 0444 root sys $AMANDIR/man$MAN8DIR/cupsd.$MAN8EXT man/cupsd.$MAN8EXT
-f 0444 root sys $AMANDIR/man$MAN8DIR/cupsenable.$MAN8EXT man/cupsenable.$MAN8EXT
+f 0444 root sys $AMANDIR/man$MAN8DIR/cupsd-helper.$MAN8EXT man/cupsd-helper.$MAN8EXT
 l 0644 root sys $AMANDIR/man$MAN8DIR/cupsdisable.$MAN8EXT cupsenable.$MAN8EXT
+f 0444 root sys $AMANDIR/man$MAN8DIR/cupsenable.$MAN8EXT man/cupsenable.$MAN8EXT
 l 0644 root sys $AMANDIR/man$MAN8DIR/disable.$MAN8EXT cupsenable.$MAN8EXT
 l 0644 root sys $AMANDIR/man$MAN8DIR/enable.$MAN8EXT cupsenable.$MAN8EXT
 f 0444 root sys $AMANDIR/man$MAN8DIR/lpadmin.$MAN8EXT man/lpadmin.$MAN8EXT
@@ -732,7 +731,3 @@ i 0755 root sys cups scheduler/cups.sh start(@RCSTART@) stop(@RCSTOP) runlevels(
 f 0444 root sys $XINETD/cups-lpd scheduler/cups-lpd.xinetd
 %endif
 %subpackage
-
-#
-# End of "$Id: cups.list.in 11776 2014-03-28 19:16:05Z msweet $".
-#
index d3b603f..a66c3e7 100644 (file)
@@ -1,11 +1,11 @@
 #
-# "$Id: cups.spec.in 12857 2015-08-31 15:00:45Z msweet $"
+# "$Id$"
 #
 # RPM "spec" file for CUPS.
 #
 # Original version by Jason McMullan <jmcc@ontv.com>.
 #
-# Copyright 2007-2015 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1999-2007 by Easy Software Products, all rights reserved.
 #
 # These coded instructions, statements, and computer programs are the
 
 Summary: CUPS
 Name: cups
-Version: 2.1.4
+Version: 2.2.0
 Release: 0
 Epoch: 1
 License: GPL
 Group: System Environment/Daemons
-Source: https://github.com/apple/cups/releases/download/release-2.1.4/cups-2.1.4-source.tar.gz
+Source: https://github.com/apple/cups/releases/download/release-2.2.0/cups-2.2.0-source.tar.gz
 Url: http://www.cups.org
 Packager: Anonymous <anonymous@foo.com>
 Vendor: Apple Inc.
@@ -102,7 +102,7 @@ Requires: %{name} = %{epoch}:%{version} xinetd
 
 %description
 CUPS is the standards-based, open source printing system developed by
-Apple Inc. for OS X and other UNIX®-like operating systems.
+Apple Inc. for macOS® and other UNIX®-like operating systems.
 
 %description devel
 This package provides the CUPS headers and development environment.
@@ -168,7 +168,6 @@ rm -rf $RPM_BUILD_ROOT
 /etc/cups/cups-files.conf.default
 /etc/cups/cupsd.conf.default
 /etc/cups/snmp.conf.default
-%dir /etc/cups/interfaces
 %dir /etc/cups/ppd
 %attr(0700,root,root) %dir /etc/cups/ssl
 
@@ -402,5 +401,5 @@ rm -rf $RPM_BUILD_ROOT
 
 
 #
-# End of "$Id: cups.spec.in 12857 2015-08-31 15:00:45Z msweet $".
+# End of "$Id$".
 #
index 63320a5..6606635 100644 (file)
@@ -1,11 +1,11 @@
 #
-# "$Id: cups.spec.in 12857 2015-08-31 15:00:45Z msweet $"
+# "$Id$"
 #
 # RPM "spec" file for CUPS.
 #
 # Original version by Jason McMullan <jmcc@ontv.com>.
 #
-# Copyright 2007-2015 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1999-2007 by Easy Software Products, all rights reserved.
 #
 # These coded instructions, statements, and computer programs are the
@@ -102,7 +102,7 @@ Requires: %{name} = %{epoch}:%{version} xinetd
 
 %description
 CUPS is the standards-based, open source printing system developed by
-Apple Inc. for OS X and other UNIX®-like operating systems.
+Apple Inc. for macOS® and other UNIX®-like operating systems.
 
 %description devel
 This package provides the CUPS headers and development environment.
@@ -168,7 +168,6 @@ rm -rf $RPM_BUILD_ROOT
 /etc/cups/cups-files.conf.default
 /etc/cups/cupsd.conf.default
 /etc/cups/snmp.conf.default
-%dir /etc/cups/interfaces
 %dir /etc/cups/ppd
 %attr(0700,root,root) %dir /etc/cups/ssl
 
@@ -402,5 +401,5 @@ rm -rf $RPM_BUILD_ROOT
 
 
 #
-# End of "$Id: cups.spec.in 12857 2015-08-31 15:00:45Z msweet $".
+# End of "$Id$".
 #
diff --git a/packaging/installer.gif b/packaging/installer.gif
deleted file mode 100644 (file)
index 3ae6ea7..0000000
Binary files a/packaging/installer.gif and /dev/null differ
diff --git a/packaging/installer.tif b/packaging/installer.tif
deleted file mode 100644 (file)
index cc52bc6..0000000
Binary files a/packaging/installer.tif and /dev/null differ
index 9feb967..44c4bbd 100644 (file)
@@ -4,32 +4,28 @@ ppdc-array.o: ppdc-array.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-attr.o: ppdc-attr.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-catalog.o: ppdc-catalog.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-choice.o: ppdc-choice.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-constraint.o: ppdc-constraint.cxx ppdc-private.h ppdc.h \
   ../cups/file.h ../cups/versioning.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
@@ -37,172 +33,154 @@ ppdc-constraint.o: ppdc-constraint.cxx ppdc-private.h ppdc.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 ppdc-driver.o: ppdc-driver.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-file.o: ppdc-file.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-filter.o: ppdc-filter.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-font.o: ppdc-font.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-group.o: ppdc-group.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-import.o: ppdc-import.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h ../cups/ppd.h \
+  ../cups/raster.h
 ppdc-mediasize.o: ppdc-mediasize.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-message.o: ppdc-message.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-option.o: ppdc-option.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-profile.o: ppdc-profile.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-shared.o: ppdc-shared.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-source.o: ppdc-source.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h ../cups/raster.h ../data/epson.h ../data/hp.h \
-  ../data/label.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h ../cups/raster.h \
+  ../data/epson.h ../data/hp.h ../data/label.h
 ppdc-string.o: ppdc-string.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-variable.o: ppdc-variable.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 genstrings.o: genstrings.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc.o: ppdc.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdhtml.o: ppdhtml.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdi.o: ppdi.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdmerge.o: ppdmerge.cxx ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h
 ppdpo.o: ppdpo.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 testcatalog.o: testcatalog.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
index 7ac25ea..49b93e9 100644 (file)
@@ -1,9 +1,7 @@
 #
-# "$Id: Makefile 12615 2015-05-06 20:21:51Z msweet $"
-#
 # Makefile for the CUPS PPD Compiler.
 #
-# Copyright 2007-2015 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 2002-2006 by Easy Software Products.
 #
 # These coded instructions, statements, and computer programs are the
@@ -155,9 +153,11 @@ install-exec:
 #
 
 install-headers:
-       echo Installing header files in $(INCLUDEDIR)/cups...
-       $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
-       $(INSTALL_DATA) ppdc.h $(INCLUDEDIR)/cups
+       if test "x$(privateinclude)" != x; then \
+               echo Installing private header files into $(PRIVATEINCLUDE)...; \
+               $(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
+               $(INSTALL_DATA) ppdc.h $(PRIVATEINCLUDE); \
+       fi
 
 
 #
@@ -205,31 +205,10 @@ uninstall:
        $(RM) $(LIBDIR)/libcupsppdc.so
        $(RM) $(LIBDIR)/libcupsppdc.so.1
        -$(RMDIR) $(LIBDIR)
-       $(RM) $(INCLUDEDIR)/cups/ppdc.h
-       -$(RMDIR) $(INCLUDEDIR)/cups
-
-
-#
-# Automatic API help files...
-#
-
-apihelp:
-       mxmldoc --section "Programming" \
-               --title "PPD Compiler API" \
-               --css ../doc/cups-printable.css \
-               --header api-ppdc.header --intro api-ppdc.shtml \
-               api-ppdc.xml \
-               ppdc.h $(LIBOBJS:.o=.cxx) >../doc/help/api-ppdc.html
-       mxmldoc --tokens help/api-ppdc.html api-ppdc.xml >../doc/help/api-ppdc.tokens
-       $(RM) api-ppdc.xml
-
-framedhelp:
-       mxmldoc --framed api-ppdc \
-               --section "Programming" \
-               --title "PPD Compiler API" \
-               --css ../doc/cups-printable.css \
-               --header api-ppdc.header --intro api-ppdc.shtml \
-               ppdc.h $(LIBOBJS:.o=.cxx)
+       -if test "x$(privateinclude)" != x; then \
+               $(RM) $(PRIVATEINCLUDE)/ppdc.h; \
+               $(RMDIR) $(PRIVATEINCLUDE); \
+       fi
 
 
 #
@@ -347,7 +326,7 @@ libcupsppdc.so.1:   $(LIBOBJS) ../cups/$(LIBCUPS)
 
 libcupsppdc.1.dylib:   $(LIBOBJS) ../cups/$(LIBCUPS)
        echo Creating export list for $@...
-       nm $(LIBOBJS) | grep "T __" | awk '{print $$3}' | sort >t.exp
+       nm -gm $(LIBOBJS) | grep "__text" | grep -v weak | awk '{print $$NF}' | sort >t.exp
        echo Linking $@...
        $(DSOXX) $(ARCHFLAGS) $(DSOFLAGS) -o $@ \
                -install_name $(libdir)/$@ \
@@ -385,8 +364,3 @@ libcupsppdc.a:      $(LIBOBJS)
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 12615 2015-05-06 20:21:51Z msweet $".
-#
diff --git a/ppdc/api-ppdc.header b/ppdc/api-ppdc.header
deleted file mode 100644 (file)
index 4186865..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<!--
-  "$Id: api-array.header 8087 2008-10-27 21:37:05Z mike $"
-
-  PPD Compiler API header for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h1 class='title'>PPD Compiler API</h1>
-
-<div class='summary'><table summary='General Information'>
-<thead>
-<tr>
-       <th>Header</th>
-       <th>cups/ppdc.h</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-       <th>Library</th>
-       <td>-lcupsppdc</td>
-</tr>
-<tr>
-       <th>See Also</th>
-       <td>Programming: <a href='api-overview.html' target='_top'>Introduction to CUPS Programming</a></td>
-</tr>
-</tbody>
-</table></div>
diff --git a/ppdc/api-ppdc.shtml b/ppdc/api-ppdc.shtml
deleted file mode 100644 (file)
index e305dcb..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-  "$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
-
-  PPD Compiler API introduction for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
-
-<p>The PPD Compiler API provides access to CUPS driver information files and
-methods for generating and importing PPD files.</p>
index 3659905..24a7e04 100644 (file)
@@ -1,5 +1,5 @@
 //
-// "$Id: foo.drv 3247 2011-05-12 06:22:31Z msweet $"
+// "$Id$"
 //
 //   PPD file compiler test data file for CUPS.
 //
@@ -543,5 +543,5 @@ Attribute cupsIPPReason "com.foo-serious-error/A Serious Error" "http://foo.com/
 
 
 //
-// End of "$Id: foo.drv 3247 2011-05-12 06:22:31Z msweet $".
+// End of "$Id$".
 //
index 72e9a85..709b083 100644 (file)
@@ -1,6 +1,4 @@
 //
-// "$Id: genstrings.cxx 11800 2014-04-08 19:53:57Z msweet $"
-//
 // GNU gettext message generator for the CUPS PPD Compiler.
 //
 // This program is used to generate a dummy source file containing all of
@@ -201,8 +199,3 @@ write_cstring(const char *s)                /* I - String to write */
   }
   puts("\");");
 }
-
-
-//
-// End of "$Id: genstrings.cxx 11800 2014-04-08 19:53:57Z msweet $".
-//
index 5b5bacc..d56b92a 100644 (file)
@@ -1,6 +1,4 @@
 //
-// "$Id: ppdc-array.cxx 11558 2014-02-06 18:33:34Z msweet $"
-//
 // Array class for the CUPS PPD Compiler.
 //
 // Copyright 2007-2014 by Apple Inc.
@@ -152,8 +150,3 @@ ppdcArray::remove(ppdcShared *d)            // I - Data element
   if (i < count)
     memmove(data + i, data + i + 1, (size_t)(count - i) * sizeof(ppdcShared *));
 }
-
-
-//
-// End of "$Id: ppdc-array.cxx 11558 2014-02-06 18:33:34Z msweet $".
-//
index 4570f10..996e986 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-attr.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Attribute class for the CUPS PPD Compiler.
 //
-//   Attribute class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcAttr::ppdcAttr()   - Create an attribute.
-//   ppdcAttr::~ppdcAttr()  - Destroy an attribute.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -59,8 +52,3 @@ ppdcAttr::~ppdcAttr()
   text->release();
   value->release();
 }
-
-
-//
-// End of "$Id: ppdc-attr.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index 35cadd6..1ec051d 100644 (file)
@@ -1,9 +1,7 @@
 //
-// "$Id: ppdc-catalog.cxx 11800 2014-04-08 19:53:57Z msweet $"
-//
 // Shared message catalog class for the CUPS PPD Compiler.
 //
-// Copyright 2007-2014 by Apple Inc.
+// Copyright 2007-2016 by Apple Inc.
 // Copyright 2002-2006 by Easy Software Products.
 //
 // These coded instructions, statements, and computer programs are the
@@ -80,7 +78,9 @@ ppdcCatalog::ppdcCatalog(const char *l,       // I - Locale
 
       if (!strncmp(l, "en", 2))
        tl = "English";
-      else if (!strncmp(l, "nb", 2) || !strncmp(l, "nl", 2))
+      else if (!strncmp(l, "nb", 2))
+        tl = "no";
+      else if (!strncmp(l, "nl", 2))
        tl = "Dutch";
       else if (!strncmp(l, "fr", 2))
        tl = "French";
@@ -254,7 +254,7 @@ ppdcCatalog::load_messages(
   else if (!strcmp(ptr, ".strings"))
   {
    /*
-    * Read messages in OS X ".strings" format, which are either UTF-8/UTF-16
+    * Read messages in macOS ".strings" format, which are either UTF-8/UTF-16
     * text files of the format:
     *
     *     "id" = "str";
@@ -959,8 +959,3 @@ put_utf16(cups_file_t *fp,          // I - File to write to
 
   return (-1);
 }
-
-
-//
-// End of "$Id: ppdc-catalog.cxx 11800 2014-04-08 19:53:57Z msweet $".
-//
index e9937fe..80448cc 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-choice.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Option choice class for the CUPS PPD Compiler.
 //
-//   Option choice class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcChoice::ppdcChoice()  - Create a new option choice.
-//   ppdcChoice::~ppdcChoice() - Destroy an option choice.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -54,8 +47,3 @@ ppdcChoice::~ppdcChoice()
   text->release();
   code->release();
 }
-
-
-//
-// End of "$Id: ppdc-choice.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index c060979..57fbe84 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-constraint.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Contraint class for the CUPS PPD Compiler.
 //
-//   Contraint class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcConstraint::ppdcConstraint()  - Create a constraint.
-//   ppdcConstraint::~ppdcConstraint() - Destroy a constraint.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -57,8 +50,3 @@ ppdcConstraint::~ppdcConstraint()
   option2->release();
   choice2->release();
 }
-
-
-//
-// End of "$Id: ppdc-constraint.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index 105eb9c..6d15963 100644 (file)
@@ -1,6 +1,4 @@
 //
-// "$Id: ppdc-driver.cxx 11558 2014-02-06 18:33:34Z msweet $"
-//
 // PPD file compiler definitions for the CUPS PPD Compiler.
 //
 // Copyright 2007-2014 by Apple Inc.
@@ -1323,8 +1321,3 @@ ppdcDriver::write_ppd_file(
 
   return (0);
 }
-
-
-//
-// End of "$Id: ppdc-driver.cxx 11558 2014-02-06 18:33:34Z msweet $".
-//
index 0a24827..4bbe86d 100644 (file)
@@ -1,23 +1,14 @@
 //
-// "$Id: ppdc-file.cxx 3755 2012-03-30 05:59:14Z msweet $"
+// File class for the CUPS PPD Compiler.
 //
-//   File class for the CUPS PPD Compiler.
+// Copyright 2007-2010 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2010 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcFile::ppdcFile()  - Create (open) a file.
-//   ppdcFile::~ppdcFile() - Delete (close) a file.
-//   ppdcFile::get()       - Get a character from a file.
-//   ppdcFile::peek()      - Look at the next character from a file.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -103,8 +94,3 @@ ppdcFile::peek()
   // Otherwise return the next character without advancing...
   return (cupsFilePeekChar(fp));
 }
-
-
-//
-// End of "$Id: ppdc-file.cxx 3755 2012-03-30 05:59:14Z msweet $".
-//
index cc1ae00..ff3e8bc 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-filter.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Filter class for the CUPS PPD Compiler.
 //
-//   Filter class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcFilter::ppdcFilter()  - Create a filter.
-//   ppdcFilter::~ppdcFilter() - Destroy a filter.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -53,8 +46,3 @@ ppdcFilter::~ppdcFilter()
   mime_type->release();
   program->release();
 }
-
-
-//
-// End of "$Id: ppdc-filter.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index c5dad4d..39e2552 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-font.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Shared font class for the CUPS PPD Compiler.
 //
-//   Shared font class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcFont::ppdcFont()   - Create a shared font.
-//   ppdcFont::~ppdcFont()  - Destroy a shared font.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -59,8 +52,3 @@ ppdcFont::~ppdcFont()
   version->release();
   charset->release();
 }
-
-
-//
-// End of "$Id: ppdc-font.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index 00d0a7c..af9000a 100644 (file)
@@ -1,22 +1,14 @@
 //
-// "$Id: ppdc-group.cxx 3275 2011-05-20 07:26:13Z msweet $"
+// Group class for the CUPS PPD Compiler.
 //
-//   Group class for the CUPS PPD Compiler.
+// Copyright 2007-2011 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2011 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcGroup::ppdcGroup()   - Copy a new group.
-//   ppdcGroup::~ppdcGroup()  - Destroy a group.
-//   ppdcGroup::find_option() - Find an option in a group.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -96,8 +88,3 @@ ppdcGroup::find_option(const char *n) // I - Name of option
 
   return (0);
 }
-
-
-//
-// End of "$Id: ppdc-group.cxx 3275 2011-05-20 07:26:13Z msweet $".
-//
index d41cbb9..2b36c6b 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-import.cxx 3275 2011-05-20 07:26:13Z msweet $"
+// PPD file import methods for the CUPS PPD Compiler.
 //
-//   PPD file import methods for the CUPS PPD Compiler.
+// Copyright 2007-2011 by Apple Inc.
+// Copyright 2002-2006 by Easy Software Products.
 //
-//   Copyright 2007-2011 by Apple Inc.
-//   Copyright 2002-2006 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcSource::import_ppd() - Import a PPD file.
-//   ppd_gets()               - Get a line from a PPD file.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -336,8 +329,3 @@ ppdcSource::import_ppd(const char *f)       // I - Filename
 
   return (1);
 }
-
-
-//
-// End of "$Id: ppdc-import.cxx 3275 2011-05-20 07:26:13Z msweet $".
-//
index 48afd38..bc07202 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-mediasize.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Shared media size class for the CUPS PPD Compiler.
 //
-//   Shared media size class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcMediaSize::ppdcMediaSize()  - Create a new media size.
-//   ppdcMediaSize::~ppdcMediaSize() - Destroy a media size.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -78,8 +71,3 @@ ppdcMediaSize::~ppdcMediaSize()
   size_code->release();
   region_code->release();
 }
-
-
-//
-// End of "$Id: ppdc-mediasize.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index fbbe40c..1e85d50 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-message.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Shared message class for the CUPS PPD Compiler.
 //
-//   Shared message class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcMessage::ppdcMessage()  - Create a shared message.
-//   ppdcMessage::~ppdcMessage() - Destroy a shared message.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -51,8 +44,3 @@ ppdcMessage::~ppdcMessage()
   id->release();
   string->release();
 }
-
-
-//
-// End of "$Id: ppdc-message.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index 3fdc296..8f4d3c0 100644 (file)
@@ -1,23 +1,14 @@
 //
-// "$Id: ppdc-option.cxx 3275 2011-05-20 07:26:13Z msweet $"
+// Option class for the CUPS PPD Compiler.
 //
-//   Option class for the CUPS PPD Compiler.
+// Copyright 2007-2011 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2011 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcOption::ppdcOption()    - Copy a new option.
-//   ppdcOption::~ppdcOption()   - Destroy an option.
-//   ppdcOption::find_choice()   - Find an option choice.
-//   ppdcOption::set_defchoice() - Set the default choice.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -122,8 +113,3 @@ ppdcOption::set_defchoice(ppdcChoice *c)    // I - Choice
 
   defchoice = c->name;
 }
-
-
-//
-// End of "$Id: ppdc-option.cxx 3275 2011-05-20 07:26:13Z msweet $".
-//
index 2fea438..92743ae 100644 (file)
@@ -1,15 +1,13 @@
 //
-// "$Id: ppdc-private.h 1992 2010-03-24 14:32:08Z msweet $"
+// Private definitions for the CUPS PPD Compiler.
 //
-//   Private definitions for the CUPS PPD Compiler.
+// Copyright 2009-2010 by Apple Inc.
 //
-//   Copyright 2009-2010 by Apple Inc.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 #ifndef _PPDC_PRIVATE_H_
@@ -34,7 +32,3 @@
 
 
 #endif // !_PPDC_PRIVATE_H_
-
-//
-// End of "$Id: ppdc-private.h 1992 2010-03-24 14:32:08Z msweet $".
-//
index 244e34f..976caef 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-profile.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Color profile class for the CUPS PPD Compiler.
 //
-//   Color profile class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcProfile::ppdcProfile()  - Create a color profile.
-//   ppdcProfile::~ppdcProfile() - Destroy a color profile.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -58,8 +51,3 @@ ppdcProfile::~ppdcProfile()
   resolution->release();
   media_type->release();
 }
-
-
-//
-// End of "$Id: ppdc-profile.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index e6b6167..934aeaa 100644 (file)
@@ -1,23 +1,14 @@
 //
-// "$Id: ppdc-shared.cxx 1556 2009-06-10 19:02:58Z msweet $"
+// Shared data class for the CUPS PPD Compiler.
 //
-//   Shared data class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcShared::ppdcShared()  - Create shared data.
-//   ppdcShared::~ppdcShared() - Destroy shared data.
-//   ppdcShared::release()     - Decrement the use count and delete as needed.
-//   ppdcShared::retain()      - Increment the use count for this data.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -81,8 +72,3 @@ ppdcShared::retain()
 
   DEBUG_printf(("%s: %p retain use=%d", class_name(), this, use));
 }
-
-
-//
-// End of "$Id: ppdc-shared.cxx 1556 2009-06-10 19:02:58Z msweet $".
-//
index 85ef17e..27f5c34 100644 (file)
@@ -1,6 +1,4 @@
 //
-// "$Id: ppdc-source.cxx 11558 2014-02-06 18:33:34Z msweet $"
-//
 // Source class for the CUPS PPD Compiler.
 //
 // Copyright 2007-2014 by Apple Inc.
@@ -3800,8 +3798,3 @@ ppdcSource::write_file(const char *f)     // I - File to write
 
   return (0);
 }
-
-
-//
-// End of "$Id: ppdc-source.cxx 11558 2014-02-06 18:33:34Z msweet $".
-//
index b6e3512..156ea27 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdc-string.cxx 3933 2012-10-01 03:01:10Z msweet $"
+// Shared string class for the CUPS PPD Compiler.
 //
-//   Shared string class for the CUPS PPD Compiler.
+// Copyright 2007-2012 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2012 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcString::ppdcString()  - Create a shared string.
-//   ppdcString::~ppdcString() - Destroy a shared string.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -57,8 +50,3 @@ ppdcString::~ppdcString()
   if (value)
     delete[] value;
 }
-
-
-//
-// End of "$Id: ppdc-string.cxx 3933 2012-10-01 03:01:10Z msweet $".
-//
index d60ef72..0208a63 100644 (file)
@@ -1,22 +1,14 @@
 //
-// "$Id: ppdc-variable.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Variable class for the CUPS PPD Compiler.
 //
-//   Variable class for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   ppdcVariable::ppdcVariable()  - Create a variable.
-//   ppdcVariable::~ppdcVariable() - Destroy a variable.
-//   ppdcVariable::set_value()     - Set the value of a variable.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -64,8 +56,3 @@ ppdcVariable::set_value(const char *v)
   value->release();
   value = new ppdcString(v);
 }
-
-
-//
-// End of "$Id: ppdc-variable.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index d8a7c60..78752e5 100644 (file)
@@ -1,6 +1,4 @@
 //
-// "$Id: ppdc.cxx 11800 2014-04-08 19:53:57Z msweet $"
-//
 // PPD file compiler main entry for the CUPS PPD Compiler.
 //
 // Copyright 2007-2014 by Apple Inc.
@@ -452,12 +450,7 @@ usage(void)
   _cupsLangPuts(stdout, _("  --crlf                  End lines with CR + LF "
                           "(Windows)."));
   _cupsLangPuts(stdout, _("  --lf                    End lines with LF "
-                          "(UNIX/Linux/OS X)."));
+                          "(UNIX/Linux/macOS)."));
 
   exit(1);
 }
-
-
-//
-// End of "$Id: ppdc.cxx 11800 2014-04-08 19:53:57Z msweet $".
-//
index 0aad125..b36ebbe 100644 (file)
@@ -1,16 +1,14 @@
 //
-// "$Id: ppdc.h 3755 2012-03-30 05:59:14Z msweet $"
+// Definitions for the CUPS PPD Compiler.
 //
-//   Definitions for the CUPS PPD Compiler.
+// Copyright 2007-2009 by Apple Inc.
+// Copyright 2002-2007 by Easy Software Products.
 //
-//   Copyright 2007-2009 by Apple Inc.
-//   Copyright 2002-2007 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 #ifndef _PPDC_H_
@@ -527,7 +525,3 @@ class ppdcSource                    //// Source File
 
 
 #endif // !_PPDC_H_
-
-//
-// End of "$Id: ppdc.h 3755 2012-03-30 05:59:14Z msweet $".
-//
index 234495c..416ff2d 100644 (file)
@@ -1,6 +1,4 @@
 //
-// "$Id: ppdhtml.cxx 12633 2015-05-15 19:16:58Z msweet $"
-//
 // PPD to HTML utility for the CUPS PPD Compiler.
 //
 // Copyright 2007-2015 by Apple Inc.
@@ -184,8 +182,3 @@ usage(void)
 
   exit(1);
 }
-
-
-//
-// End of "$Id: ppdhtml.cxx 12633 2015-05-15 19:16:58Z msweet $".
-//
index cbc728b..8340340 100644 (file)
@@ -1,21 +1,14 @@
 //
-// "$Id: ppdi.cxx 3071 2011-03-23 00:05:29Z msweet $"
+// PPD file import utility for the CUPS PPD Compiler.
 //
-//   PPD file import utility for the CUPS PPD Compiler.
+// Copyright 2007-2011 by Apple Inc.
+// Copyright 2002-2005 by Easy Software Products.
 //
-//   Copyright 2007-2011 by Apple Inc.
-//   Copyright 2002-2005 by Easy Software Products.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   main()  - Main entry for the PPD import utility.
-//   usage() - Show usage and exit.
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -135,8 +128,3 @@ usage(void)
 
   exit(1);
 }
-
-
-//
-// End of "$Id: ppdi.cxx 3071 2011-03-23 00:05:29Z msweet $".
-//
index cc38881..397f1c3 100644 (file)
@@ -1,6 +1,4 @@
 //
-// "$Id: ppdmerge.cxx 11558 2014-02-06 18:33:34Z msweet $"
-//
 // PPD file merge utility for the CUPS PPD Compiler.
 //
 // Copyright 2007-2014 by Apple Inc.
@@ -366,8 +364,3 @@ usage(void)
 
   exit(1);
 }
-
-
-//
-// End of "$Id: ppdmerge.cxx 11558 2014-02-06 18:33:34Z msweet $".
-//
index ab53bf4..5ebfeaf 100644 (file)
@@ -1,6 +1,4 @@
 //
-// "$Id: ppdpo.cxx 12633 2015-05-15 19:16:58Z msweet $"
-//
 // PPD file message catalog program for the CUPS PPD Compiler.
 //
 // Copyright 2007-2015 by Apple Inc.
@@ -255,8 +253,3 @@ usage(void)
 
   exit(1);
 }
-
-
-//
-// End of "$Id: ppdpo.cxx 12633 2015-05-15 19:16:58Z msweet $".
-//
index 854e334..89c75fe 100644 (file)
@@ -1,5 +1,5 @@
 //
-// "$Id: sample.drv 12789 2015-07-20 14:51:28Z msweet $"
+// "$Id$"
 //
 // Driver info file for CUPS-supplied PPDs.
 //
 #media "w576h468/8.00x6.50\"" 576 468
 
 // Common stuff for all drivers...
-Attribute "cupsVersion" "" "2.1"
+Attribute "cupsVersion" "" "2.2"
 Attribute "FileSystem" "" "False"
 Attribute "LandscapeOrientation" "" "Plus90"
 Attribute "TTRasterizer" "" "Type42"
@@ -1168,5 +1168,5 @@ Version "2.1"
 }
 
 //
-// End of "$Id: sample.drv 12789 2015-07-20 14:51:28Z msweet $".
+// End of "$Id$".
 //
index 0943dcc..bf046dd 100644 (file)
@@ -1,19 +1,13 @@
 //
-// "$Id: testcatalog.cxx 1378 2009-04-08 03:17:45Z msweet $"
+// Test program for message catalog class.
 //
-//   Test program for message catalog class.
+// Copyright 2008 by Apple Inc.
 //
-//   Copyright 2008 by Apple Inc.
-//
-//   These coded instructions, statements, and computer programs are the
-//   property of Apple Inc. and are protected by Federal copyright
-//   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-//   which should have been included with this file.  If this file is
-//   file is missing or damaged, see the license at "http://www.cups.org/".
-//
-// Contents:
-//
-//   main() - Open a message catalog 
+// These coded instructions, statements, and computer programs are the
+// property of Apple Inc. and are protected by Federal copyright
+// law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+// which should have been included with this file.  If this file is
+// file is missing or damaged, see the license at "http://www.cups.org/".
 //
 
 //
@@ -24,7 +18,7 @@
 
 
 //
-// 'main()' - Open a message catalog 
+// 'main()' - Open a message catalog
 //
 
 int                                    // O - Exit status
@@ -56,8 +50,3 @@ main(int  argc,                               // I - Number of command-line arguments
   // Return with no errors.
   return (0);
 }
-
-
-//
-// End of "$Id: testcatalog.cxx 1378 2009-04-08 03:17:45Z msweet $".
-//
index e61c288..a6bc874 100644 (file)
@@ -4,8 +4,8 @@ auth.o: auth.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h
 banners.o: banners.c cupsd.h ../cups/cups-private.h \
@@ -14,19 +14,19 @@ banners.o: banners.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h ../cups/dir.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h ../cups/dir.h
 cert.o: cert.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h
 classes.o: classes.c cupsd.h ../cups/cups-private.h \
@@ -35,41 +35,41 @@ classes.o: classes.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 client.o: client.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 colorman.o: colorman.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 conf.o: conf.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h
 dirsvc.o: dirsvc.c cupsd.h ../cups/cups-private.h \
@@ -78,19 +78,19 @@ dirsvc.o: dirsvc.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 env.o: env.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h
 file.o: file.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
@@ -99,8 +99,8 @@ file.o: file.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h ../cups/dir.h
 main.o: main.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
@@ -109,8 +109,8 @@ main.o: main.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h
 ipp.o: ipp.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
@@ -119,8 +119,8 @@ ipp.o: ipp.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h
 listen.o: listen.c cupsd.h ../cups/cups-private.h \
@@ -129,19 +129,19 @@ listen.o: listen.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 job.o: job.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h ../cups/backend.h \
   ../cups/dir.h
@@ -151,8 +151,8 @@ log.o: log.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h \
   client.h policy.h printers.h classes.h job.h colorman.h conf.h \
   banners.h dirsvc.h network.h subscriptions.h
 network.o: network.c ../cups/http-private.h ../config.h \
@@ -161,110 +161,110 @@ network.o: network.c ../cups/http-private.h ../config.h \
   ../cups/cups-private.h ../cups/string-private.h \
   ../cups/debug-private.h ../cups/array-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 policy.o: policy.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 printers.o: printers.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h ../cups/dir.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h ../cups/dir.h
 process.o: process.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 quotas.o: quotas.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 select.o: select.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 server.o: server.c ../cups/http-private.h ../config.h ../cups/language.h \
   ../cups/array.h ../cups/versioning.h ../cups/http.h \
   ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h cupsd.h \
   ../cups/cups-private.h ../cups/string-private.h \
   ../cups/debug-private.h ../cups/array-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 statbuf.o: statbuf.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 subscriptions.o: subscriptions.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 sysman.o: sysman.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
-  sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
-  classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
-  subscriptions.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 filter.o: filter.c ../cups/string-private.h ../config.h \
   ../cups/debug-private.h ../cups/versioning.h mime.h ../cups/array.h \
   ../cups/ipp.h ../cups/http.h ../cups/file.h
@@ -281,8 +281,9 @@ cupsfilter.o: cupsfilter.c ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h mime.h
 cups-deviced.o: cups-deviced.c util.h ../cups/array-private.h \
   ../cups/array.h ../cups/versioning.h ../cups/file-private.h \
   ../cups/cups-private.h ../cups/string-private.h ../config.h \
@@ -290,8 +291,7 @@ cups-deviced.o: cups-deviced.c util.h ../cups/array-private.h \
   ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/dir.h
+  ../cups/thread-private.h ../cups/dir.h
 cups-exec.o: cups-exec.c ../cups/string-private.h ../config.h \
   ../cups/file.h ../cups/versioning.h
 cups-lpd.o: cups-lpd.c ../cups/cups-private.h ../cups/string-private.h \
@@ -300,7 +300,7 @@ cups-lpd.o: cups-lpd.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 testlpd.o: testlpd.c ../cups/cups.h ../cups/file.h ../cups/versioning.h \
   ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
   ../cups/pwg.h ../cups/string-private.h ../config.h
@@ -308,7 +308,7 @@ testmime.o: testmime.c ../cups/string-private.h ../config.h ../cups/dir.h \
   ../cups/versioning.h ../cups/debug-private.h ../cups/ppd-private.h \
   ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
   ../cups/array.h ../cups/language.h ../cups/pwg.h ../cups/ppd.h \
-  ../cups/pwg-private.h mime.h
+  ../cups/raster.h ../cups/pwg-private.h mime.h
 testspeed.o: testspeed.c ../cups/string-private.h ../config.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
@@ -323,8 +323,7 @@ util.o: util.c util.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 cups-driverd.o: cups-driverd.cxx util.h ../cups/array-private.h \
   ../cups/array.h ../cups/versioning.h ../cups/file-private.h \
   ../cups/cups-private.h ../cups/string-private.h ../config.h \
@@ -332,5 +331,5 @@ cups-driverd.o: cups-driverd.cxx util.h ../cups/array-private.h \
   ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/dir.h ../ppdc/ppdc.h
+  ../cups/thread-private.h ../cups/dir.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../cups/raster.h ../ppdc/ppdc.h
index c7d244d..715d88f 100644 (file)
@@ -1,9 +1,7 @@
 #
-# "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $"
-#
 # Scheduler Makefile for CUPS.
 #
-# Copyright 2007-2015 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
 #
 # These coded instructions, statements, and computer programs are the
@@ -149,8 +147,6 @@ install-data:
        $(INSTALL_DIR) -m 755 $(SERVERBIN)/driver
        echo Creating $(SERVERROOT)...
        $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)
-       echo Creating $(SERVERROOT)/interfaces...
-       $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)/interfaces
        echo Creating $(SERVERROOT)/ppd...
        $(INSTALL_DIR) -m 755 -g $(CUPS_GROUP) $(SERVERROOT)/ppd
        if test "x`uname`" != xDarwin; then \
@@ -245,9 +241,11 @@ install-exec:
 #
 
 install-headers:
-       echo Installing header files in $(INCLUDEDIR)/cups...
-       $(INSTALL_DIR) -m 755 $(INCLUDEDIR)/cups
-       $(INSTALL_DATA) mime.h $(INCLUDEDIR)/cups
+       if test "x$(privateinclude)" != x; then \
+               echo Installing private header files into $(PRIVATEINCLUDE)...; \
+               $(INSTALL_DIR) -m 755 $(PRIVATEINCLUDE); \
+               $(INSTALL_DATA) mime.h $(PRIVATEINCLUDE); \
+       fi
 
 
 #
@@ -309,8 +307,10 @@ uninstall:
        $(RM) $(LIBDIR)/libcupsmime.so
        $(RM) $(LIBDIR)/libcupsmime.so.1
        -$(RMDIR) $(LIBDIR)
-       $(RM) $(INCLUDEDIR)/cups/mime.h
-       -$(RMDIR) $(INCLUDEDIR)/cups
+       -if test "x$(privateinclude)" != x; then \
+               $(RM) $(PRIVATEINCLUDE)/mime.h; \
+               $(RMDIR) $(PRIVATEINCLUDE); \
+       fi
        if test "x$(INITDIR)" != x; then \
                echo Uninstalling init scripts...; \
                $(RM) $(BUILDROOT)$(INITDIR)/init.d/cups; \
@@ -351,28 +351,6 @@ uninstall:
 
 
 #
-# Automatic API help files...
-#
-
-apihelp:
-       mxmldoc --section "Programming" \
-               --title "MIME API" \
-               --css ../doc/cups-printable.css \
-               --header api-mime.header --intro api-mime.shtml \
-               mime.h $(LIBOBJS:.o=.c) >../doc/help/api-mime.html
-       mxmldoc --tokens help/api-mime.html api-mime.xml >../doc/help/api-mime.tokens
-       $(RM) api-mime.xml
-
-framedhelp:
-       mxmldoc --framed api-mime \
-               --section "Programming" \
-               --title "MIME API" \
-               --css ../doc/cups-printable.css \
-               --header api-mime.header --intro api-mime.shtml \
-               mime.h $(LIBOBJS:.o=.c)
-
-
-#
 # Make the scheduler executable, "cupsd".
 #
 
@@ -551,8 +529,3 @@ sloc:
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 12519 2015-02-17 13:10:19Z msweet $".
-#
diff --git a/scheduler/api-mime.shtml b/scheduler/api-mime.shtml
deleted file mode 100644 (file)
index 7d3125f..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<!--
-  "$Id: api-array.shtml 7616 2008-05-28 00:34:13Z mike $"
-
-  MIME API introduction for CUPS.
-
-  Copyright 2009 by Apple Inc.
-
-  These coded instructions, statements, and computer programs are the
-  property of Apple Inc. and are protected by Federal copyright
-  law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-  which should have been included with this file.  If this file is
-  file is missing or damaged, see the license at "http://www.cups.org/".
--->
-
-<h2 class='title'><a name='OVERVIEW'>Overview</a></h2>
-
-<p>The MIME API provides file typing and conversion services for CUPS.</p>
index ac9badc..fca183b 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: auth.c 12945 2015-10-26 19:46:02Z msweet $"
- *
  * Authorization routines for the CUPS scheduler.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * This file contains Kerberos support code, copyright 2006 by
@@ -1178,6 +1176,21 @@ cupsdCheckGroup(
     * Group exists, check it...
     */
 
+#ifdef HAVE_GETGROUPLIST
+    if (user)
+    {
+      int      ngroups,                /* Number of groups */
+               groups[2048];           /* Groups that user belongs to */
+
+      ngroups = (int)(sizeof(groups) / sizeof(groups[0]));
+      getgrouplist(username, (int)user->pw_gid, groups, &ngroups);
+
+      for (i = 0; i < ngroups; i ++)
+        if ((int)group->gr_gid == groups[i])
+         return (1);
+    }
+#endif /* HAVE_GETGROUPLIST */
+
     for (i = 0; group->gr_mem[i]; i ++)
       if (!_cups_strcasecmp(username, group->gr_mem[i]))
        return (1);
@@ -1193,7 +1206,7 @@ cupsdCheckGroup(
 
 #ifdef HAVE_MBR_UID_TO_UUID
  /*
-  * Check group membership through MacOS X membership API...
+  * Check group membership through macOS membership API...
   */
 
   if (user && !mbr_uid_to_uuid(user->pw_uid, useruuid))
@@ -2208,8 +2221,3 @@ to64(char          *s,                    /* O - Output string */
     *s++ = itoa64[v & 0x3f];
 }
 #endif /* HAVE_LIBPAM */
-
-
-/*
- * End of "$Id: auth.c 12945 2015-10-26 19:46:02Z msweet $".
- */
index c42c0a2..f82253b 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: auth.h 11776 2014-03-28 19:16:05Z msweet $"
- *
  * Authorization definitions for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -140,8 +138,3 @@ extern cupsd_location_t     *cupsdFindLocation(const char *location);
 extern void            cupsdFreeLocation(cupsd_location_t *loc);
 extern http_status_t   cupsdIsAuthorized(cupsd_client_t *con, const char *owner);
 extern cupsd_location_t        *cupsdNewLocation(const char *location);
-
-
-/*
- * End of "$Id: auth.h 11776 2014-03-28 19:16:05Z msweet $".
- */
index 631a891..33ed9dc 100644 (file)
@@ -1,24 +1,14 @@
 /*
- * "$Id: banners.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Banner routines for the CUPS scheduler.
  *
- *   Banner routines for the CUPS scheduler.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   cupsdFindBanner()  - Find a named banner.
- *   cupsdLoadBanners() - Load all available banner files...
- *   add_banner()       - Add a banner to the array.
- *   compare_banners()  - Compare two banners.
- *   free_banners()     - Free all banners.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -217,8 +207,3 @@ free_banners(void)
   cupsArrayDelete(Banners);
   Banners = NULL;
 }
-
-
-/*
- * End of "$Id: banners.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 19ab6f7..9ae0fda 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: banners.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Banner definitions for the CUPS scheduler.
  *
- *   Banner definitions for the CUPS scheduler.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -38,8 +36,3 @@ VAR cups_array_t      *Banners        VALUE(NULL);
 
 extern cupsd_banner_t  *cupsdFindBanner(const char *name);
 extern void            cupsdLoadBanners(const char *d);
-
-
-/*
- * End of "$Id: banners.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 6d93426..eb34f67 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: cert.c 12972 2015-11-13 20:30:37Z msweet $"
- *
  * Authentication certificate routines for the CUPS scheduler.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -122,7 +120,7 @@ cupsdAddCert(int        pid,                /* I - Process ID */
 
 #  ifdef HAVE_MBR_UID_TO_UUID
      /*
-      * On MacOS X, ACLs use UUIDs instead of GIDs...
+      * On macOS, ACLs use UUIDs instead of GIDs...
       */
 
       acl = acl_init(NumSystemGroups - 1);
@@ -448,8 +446,3 @@ ctcompare(const char *a,            /* I - First string */
 
   return (result);
 }
-
-
-/*
- * End of "$Id: cert.c 12972 2015-11-13 20:30:37Z msweet $".
- */
index 063c5de..a4e4529 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: cert.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Authentication certificate definitions for the CUPS scheduler.
  *
- *   Authentication certificate definitions for the CUPS scheduler.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -46,8 +44,3 @@ extern void           cupsdDeleteCert(int pid);
 extern void            cupsdDeleteAllCerts(void);
 extern cupsd_cert_t    *cupsdFindCert(const char *certificate);
 extern void            cupsdInitCerts(void);
-
-
-/*
- * End of "$Id: cert.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 17add06..e3dc17b 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: classes.c 11781 2014-03-28 20:57:22Z msweet $"
- *
  * Printer class routines for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -803,8 +801,3 @@ cupsdSaveAllClasses(void)
 
   cupsdCloseCreatedConfFile(fp, filename);
 }
-
-
-/*
- * End of "$Id: classes.c 11781 2014-03-28 20:57:22Z msweet $".
- */
index bc0196e..33f1e55 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: classes.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Printer class definitions for the CUPS scheduler.
  *
- *   Printer class definitions for the CUPS scheduler.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 
@@ -28,8 +26,3 @@ extern cupsd_printer_t        *cupsdFindAvailablePrinter(const char *name);
 extern cupsd_printer_t *cupsdFindClass(const char *name);
 extern void            cupsdLoadAllClasses(void);
 extern void            cupsdSaveAllClasses(void);
-
-
-/*
- * End of "$Id: classes.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 6a5e740..42010de 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: client.c 13061 2016-01-26 21:31:40Z msweet $"
- *
  * Client routines for the CUPS scheduler.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -143,7 +141,12 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
   * Save the connected address and port number...
   */
 
-  con->clientaddr = lis->address;
+  addrlen = sizeof(con->clientaddr);
+
+  if (getsockname(httpGetFd(con->http), (struct sockaddr *)&con->clientaddr, &addrlen) || addrlen == 0)
+    con->clientaddr = lis->address;
+
+  cupsdLogClient(con, CUPSD_LOG_DEBUG, "Server address is \"%s\".", httpAddrString(&con->clientaddr, name, sizeof(name)));
 
  /*
   * Check the number of clients on the same address...
@@ -2366,7 +2369,7 @@ cupsdSendHeader(
       * requests when the request requires system group membership - then the
       * client knows the root certificate can/should be used.
       *
-      * Also, for OS X we also look for @AUTHKEY and add an "authkey"
+      * Also, for macOS we also look for @AUTHKEY and add an "authkey"
       * parameter as needed...
       */
 
@@ -4074,8 +4077,3 @@ write_pipe(cupsd_client_t *con)           /* I - Client connection */
 
   cupsdLogClient(con, CUPSD_LOG_DEBUG, "CGI data ready to be sent.");
 }
-
-
-/*
- * End of "$Id: client.c 13061 2016-01-26 21:31:40Z msweet $".
- */
index 5096c4f..d58d111 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: client.h 11717 2014-03-21 16:42:53Z msweet $"
- *
  * Client definitions for the CUPS scheduler.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -81,9 +79,9 @@ typedef struct
   int                  fd;             /* File descriptor for this server */
   http_addr_t          address;        /* Bind address of socket */
   http_encryption_t    encryption;     /* To encrypt or not to encrypt... */
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
-  int                  on_demand;      /* Is this a socket from launchd/systemd? */
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#ifdef HAVE_ONDEMAND
+  int                  on_demand;      /* Is this a socket from launchd/systemd/upstart? */
+#endif /* HAVE_ONDEMAND */
 } cupsd_listener_t;
 
 
@@ -145,8 +143,3 @@ extern void cupsdWriteClient(cupsd_client_t *con);
 extern int     cupsdEndTLS(cupsd_client_t *con);
 extern int     cupsdStartTLS(cupsd_client_t *con);
 #endif /* HAVE_SSL */
-
-
-/*
- * End of "$Id: client.h 11717 2014-03-21 16:42:53Z msweet $".
- */
index 0d90dde..0f1fea0 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: colorman.c 12619 2015-05-06 21:00:19Z msweet $"
- *
  * Color management routines for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -1516,8 +1514,3 @@ colord_unregister_printer(
   colord_delete_device(device_id);
 }
 #endif /* __APPLE__ */
-
-
-/*
- * End of "$Id: colorman.c 12619 2015-05-06 21:00:19Z msweet $".
- */
index 3360fd4..6d1ef1a 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: colorman.h 3833 2012-05-23 22:51:18Z msweet $"
+ * Color management definitions for the CUPS scheduler.
  *
- *   Color management definitions for the CUPS scheduler.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -21,8 +19,3 @@ extern void   cupsdRegisterColor(cupsd_printer_t *p);
 extern void    cupsdStartColor(void);
 extern void    cupsdStopColor(void);
 extern void    cupsdUnregisterColor(cupsd_printer_t *p);
-
-
-/*
- * End of "$Id: colorman.h 3833 2012-05-23 22:51:18Z msweet $".
- */
index f3e6514..088501e 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: conf.c 12819 2015-07-31 13:52:00Z msweet $"
- *
  * Configuration routines for the CUPS scheduler.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -91,9 +89,9 @@ static const cupsd_var_t      cupsd_vars[] =
 #ifdef HAVE_GSSAPI
   { "GSSServiceName",          &GSSServiceName,        CUPSD_VARTYPE_STRING },
 #endif /* HAVE_GSSAPI */
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
   { "IdleExitTimeout",         &IdleExitTimeout,       CUPSD_VARTYPE_TIME },
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
   { "JobKillDelay",            &JobKillDelay,          CUPSD_VARTYPE_TIME },
   { "JobRetryLimit",           &JobRetryLimit,         CUPSD_VARTYPE_INTEGER },
   { "JobRetryInterval",                &JobRetryInterval,      CUPSD_VARTYPE_TIME },
@@ -812,9 +810,9 @@ cupsdReadConfiguration(void)
   DefaultLeaseDuration       = 86400;
   MaxLeaseDuration           = 0;
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
   IdleExitTimeout = 60;
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
  /*
   * Setup environment variables...
@@ -3151,9 +3149,9 @@ read_cupsd_conf(cups_file_t *fp)  /* I - File to read from */
 
         if (lis)
        {
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
          if (!lis->on_demand)
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
          {
            httpAddrString(&lis->address, temp, sizeof(temp));
            cupsdLogMessage(CUPSD_LOG_WARN,
@@ -4244,8 +4242,3 @@ set_policy_defaults(cupsd_policy_t *pol)/* I - Policy */
     cupsdAddString(&(pol->sub_attrs), "notify-user-data");
   }
 }
-
-
-/*
- * End of "$Id: conf.c 12819 2015-07-31 13:52:00Z msweet $".
- */
index 59cb157..80250d9 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: conf.h 12689 2015-06-03 19:49:54Z msweet $"
- *
  * Configuration file definitions for the CUPS scheduler.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -78,7 +76,7 @@ typedef enum
 
 #define PRINTCAP_BSD           0       /* Berkeley LPD format */
 #define PRINTCAP_SOLARIS       1       /* Solaris lpsched format */
-#define PRINTCAP_PLIST         2       /* OS X plist format */
+#define PRINTCAP_PLIST         2       /* macOS plist format */
 
 
 /*
@@ -246,10 +244,10 @@ VAR char          *ServerKeychain         VALUE(NULL);
                                        /* Keychain holding cert + key */
 #endif /* HAVE_SSL */
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
 VAR int                        IdleExitTimeout         VALUE(60);
                                        /* Time after which an idle cupsd will exit */
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
 #ifdef HAVE_AUTHORIZATION_H
 VAR char               *SystemGroupAuthKey     VALUE(NULL);
@@ -259,9 +257,9 @@ VAR char            *SystemGroupAuthKey     VALUE(NULL);
 #ifdef HAVE_GSSAPI
 VAR char               *GSSServiceName         VALUE(NULL);
                                        /* GSS service name */
-int                    HaveServerCreds         VALUE(0);
+VAR int                        HaveServerCreds         VALUE(0);
                                        /* Do we have server credentials? */
-gss_cred_id_t          ServerCreds;    /* Server's GSS credentials */
+VAR gss_cred_id_t      ServerCreds;    /* Server's GSS credentials */
 #endif /* HAVE_GSSAPI */
 
 
@@ -297,8 +295,3 @@ extern int  cupsdLogPage(cupsd_job_t *job, const char *page);
 extern int     cupsdLogRequest(cupsd_client_t *con, http_status_t code);
 extern int     cupsdReadConfiguration(void);
 extern int     cupsdWriteErrorLog(int level, const char *message);
-
-
-/*
- * End of "$Id: conf.h 12689 2015-06-03 19:49:54Z msweet $".
- */
index 85264ed..94e69b4 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: cups-deviced.c 11782 2014-03-28 21:03:43Z msweet $"
- *
  * Device scanning mini-daemon for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -790,8 +788,3 @@ start_backend(const char *name,             /* I - Backend to run */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: cups-deviced.c 11782 2014-03-28 21:03:43Z msweet $".
- */
index 7da6572..9607169 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: cups-driverd.cxx 12733 2015-06-12 01:21:05Z msweet $"
- *
  * PPD/driver support for CUPS.
  *
  * This program handles listing and installing static PPD files, PPD files
@@ -33,7 +31,7 @@
  * Constants...
  */
 
-#define PPD_SYNC       0x50504438      /* Sync word for ppds.dat (PPD8) */
+#define PPD_SYNC       0x50504439      /* Sync word for ppds.dat (PPD9) */
 #define PPD_MAX_LANG   32              /* Maximum languages */
 #define PPD_MAX_PROD   32              /* Maximum products */
 #define PPD_MAX_VERS   32              /* Maximum versions */
@@ -77,7 +75,7 @@ typedef struct                                /**** PPD record ****/
   int          model_number;           /* cupsModelNumber */
   int          type;                   /* ppd-type */
   char         filename[512],          /* Filename */
-               name[512],              /* PPD name */
+               name[256],              /* PPD name */
                languages[PPD_MAX_LANG][6],
                                        /* LanguageVersion/cupsLanguages */
                products[PPD_MAX_PROD][128],
@@ -448,6 +446,12 @@ cat_ppd(const char *name,          /* I - PPD name */
   * Figure out if this is a static or dynamic PPD file...
   */
 
+  if (strstr(name, "../"))
+  {
+    fputs("ERROR: Invalid PPD name.\n", stderr);
+    return (1);
+  }
+
   strlcpy(scheme, name, sizeof(scheme));
   if ((sptr = strchr(scheme, ':')) != NULL)
   {
@@ -906,7 +910,7 @@ get_file(const char *name,          /* I - Name */
        slash > printerDriver))
   {
    /*
-    * Map ppd-name to OS X standard locations...
+    * Map ppd-name to macOS standard locations...
     */
 
     snprintf(buffer, bufsize, "/%s", name);
@@ -1077,7 +1081,7 @@ list_ppds(int        request_id,  /* I - Request ID */
 
 #ifdef __APPLE__
  /*
-  * Load PPDs from standard OS X locations...
+  * Load PPDs from standard macOS locations...
   */
 
   load_ppds("/Library/Printers",
@@ -1715,7 +1719,7 @@ load_drivers(cups_array_t *include,       /* I - Drivers to include */
   char         *argv[3],               /* Arguments for command */
                filename[1024],         /* Name of driver */
                line[2048],             /* Line from driver */
-               name[512],              /* ppd-name */
+               name[256],              /* ppd-name */
                make[128],              /* ppd-make */
                make_and_model[128],    /* ppd-make-and-model */
                device_id[256],         /* ppd-device-id */
@@ -1848,7 +1852,7 @@ load_drivers(cups_array_t *include,       /* I - Drivers to include */
        psversion[0] = '\0';
        strlcpy(type_str, "postscript", sizeof(type_str));
 
-        if (sscanf(line, "\"%511[^\"]\"%127s%*[ \t]\"%127[^\"]\""
+        if (sscanf(line, "\"%255[^\"]\"%127s%*[ \t]\"%127[^\"]\""
                         "%*[ \t]\"%127[^\"]\"%*[ \t]\"%255[^\"]\""
                         "%*[ \t]\"%127[^\"]\"%*[ \t]\"%127[^\"]\""
                         "%*[ \t]\"%127[^\"]\"",
@@ -2379,7 +2383,7 @@ load_ppds(const char *d,          /* I - Actual directory */
   char         filename[1024],         /* Name of PPD or directory */
                line[256],              /* Line from file */
                *ptr,                   /* Pointer into name */
-               name[128];              /* Name of PPD file */
+               name[256];              /* Name of PPD file */
   ppd_info_t   *ppd,                   /* New PPD file */
                key;                    /* Search key */
 
@@ -2922,8 +2926,3 @@ regex_string(const char *s)               /* I - String to compare */
 
   return (NULL);
 }
-
-
-/*
- * End of "$Id: cups-driverd.cxx 12733 2015-06-12 01:21:05Z msweet $".
- */
index e63b163..ee87edb 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: cups-exec.c 11817 2014-04-15 16:31:11Z msweet $"
- *
  * Sandbox helper for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -199,8 +197,3 @@ usage(void)
   fputs("Usage: cups-exec [-g gid] [-n nice-value] [-u uid] /path/to/profile /path/to/program argv0 argv1 ... argvN\n", stderr);
   exit(1);
 }
-
-
-/*
- * End of "$Id: cups-exec.c 11817 2014-04-15 16:31:11Z msweet $".
- */
index 3a67e1c..16b8c23 100644 (file)
@@ -57,9 +57,7 @@
  * Prototypes...
  */
 
-static int     create_job(http_t *http, const char *dest, const char *title,
-                           const char *docname, const char *user,
-                          int num_options, cups_option_t *options);
+static int     create_job(http_t *http, const char *dest, const char *title, const char *user, int num_options, cups_option_t *options);
 static int     get_printer(http_t *http, const char *name, char *dest,
                            size_t destsize, cups_option_t **options,
                            int *accepting, int *shared, ipp_pstate_t *state);
@@ -73,6 +71,7 @@ static int    remove_jobs(const char *name, const char *agent,
 static int     send_state(const char *name, const char *list,
                           int longstatus);
 static char    *smart_gets(char *s, int len, FILE *fp);
+static void    smart_strlcpy(char *dst, const char *src, size_t dstsize);
 
 
 /*
@@ -329,8 +328,7 @@ static int                          /* O - Job ID or -1 on error */
 create_job(http_t        *http,                /* I - HTTP connection */
            const char    *dest,                /* I - Destination name */
           const char    *title,        /* I - job-name */
-          const char    *docname,      /* I - Name of job file */
-           const char    *user,                /* I - requesting-user-name */
+          const char    *user,         /* I - requesting-user-name */
           int           num_options,   /* I - Number of options for job */
           cups_option_t *options)      /* I - Options for job */
 {
@@ -1055,15 +1053,15 @@ recv_print_job(
        switch (line[0])
        {
          case 'J' : /* Job name */
-             strlcpy(title, line + 1, sizeof(title));
+             smart_strlcpy(title, line + 1, sizeof(title));
              break;
 
           case 'N' : /* Document name */
-              strlcpy(docname, line + 1, sizeof(docname));
+              smart_strlcpy(docname, line + 1, sizeof(docname));
               break;
 
          case 'P' : /* User identification */
-             strlcpy(user, line + 1, sizeof(user));
+             smart_strlcpy(user, line + 1, sizeof(user));
              break;
 
          case 'L' : /* Print banner page */
@@ -1125,8 +1123,7 @@ recv_print_job(
       * Create the job...
       */
 
-      if ((id = create_job(http, dest, title, docname, user, num_options,
-                           options)) < 0)
+      if ((id = create_job(http, dest, title, user, num_options, options)) < 0)
         status = 1;
       else
       {
@@ -1148,7 +1145,7 @@ recv_print_job(
          switch (line[0])
          {
            case 'N' : /* Document name */
-               strlcpy(docname, line + 1, sizeof(docname));
+               smart_strlcpy(docname, line + 1, sizeof(docname));
                break;
 
            case 'c' : /* Plot CIF file */
@@ -1619,3 +1616,82 @@ smart_gets(char *s,                      /* I - Pointer to line buffer */
   else
     return (s);
 }
+
+
+/*
+ * 'smart_strlcpy()' - Copy a string and convert from ISO-8859-1 to UTF-8 as needed.
+ */
+
+static void
+smart_strlcpy(char       *dst,         /* I - Output buffer */
+              const char *src,         /* I - Input string */
+              size_t     dstsize)      /* I - Size of output buffer */
+{
+  const unsigned char  *srcptr;        /* Pointer into input string */
+  unsigned char                *dstptr,        /* Pointer into output buffer */
+                       *dstend;        /* End of output buffer */
+  int                  saw_8859 = 0;   /* Saw an extended character that was not UTF-8? */
+
+
+  for (srcptr = (unsigned char *)src, dstptr = (unsigned char *)dst, dstend = dstptr + dstsize - 1; *srcptr;)
+  {
+    if (*srcptr < 0x80)
+      *dstptr++ = *srcptr++;           /* ASCII */
+    else if (saw_8859)
+    {
+     /*
+      * Map ISO-8859-1 (most likely character set for legacy LPD clients) to
+      * UTF-8...
+      */
+
+      if (dstptr > (dstend - 2))
+        break;
+
+      *dstptr++ = 0xc0 | (*srcptr >> 6);
+      *dstptr++ = 0x80 | (*srcptr++ & 0x3f);
+    }
+    else if ((*srcptr & 0xe0) == 0xc0)
+    {
+      if (dstptr > (dstend - 2))
+        break;
+
+      *dstptr++ = *srcptr++;
+      *dstptr++ = *srcptr++;
+    }
+    else if ((*srcptr & 0xf0) == 0xe0)
+    {
+      if (dstptr > (dstend - 3))
+        break;
+
+      *dstptr++ = *srcptr++;
+      *dstptr++ = *srcptr++;
+      *dstptr++ = *srcptr++;
+    }
+    else if ((*srcptr & 0xf8) == 0xf0)
+    {
+      if (dstptr > (dstend - 4))
+        break;
+
+      *dstptr++ = *srcptr++;
+      *dstptr++ = *srcptr++;
+      *dstptr++ = *srcptr++;
+      *dstptr++ = *srcptr++;
+    }
+    else
+    {
+     /*
+      * Orphan UTF-8 sequence, this must be an ISO-8859-1 string...
+      */
+
+      saw_8859 = 1;
+
+      if (dstptr > (dstend - 2))
+        break;
+
+      *dstptr++ = 0xc0 | (*srcptr >> 6);
+      *dstptr++ = 0x80 | (*srcptr++ & 0x3f);
+    }
+  }
+
+  *dstptr = '\0';
+}
index c50e893..aed39c7 100644 (file)
@@ -1,7 +1,5 @@
 #!/bin/sh
 #
-# "$Id: cups.sh.in 11342 2013-10-18 20:36:01Z msweet $"
-#
 # Startup/shutdown script for CUPS.
 #
 # Copyright 2007-2013 by Apple Inc.
@@ -197,8 +195,3 @@ esac
 #
 
 exit 0
-
-
-#
-# End of "$Id: cups.sh.in 11342 2013-10-18 20:36:01Z msweet $".
-#
index ac63585..f797960 100644 (file)
@@ -1,8 +1,6 @@
 <?xml version="1.0"?>
 <!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
 <!--
-    $Id: cups.xml.in 2309 2010-07-08 20:45:48Z msweet $
-
     Service manifest for CUPS.
 
     This service manifest introduces smf(5) services for CUPS.  The services
index f8b2c11..ad37bee 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: cupsd.h 11717 2014-03-21 16:42:53Z msweet $"
- *
  * Main header file for the CUPS scheduler.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -20,6 +18,7 @@
 
 #include <cups/cups-private.h>
 #include <cups/file-private.h>
+#include <cups/ppd-private.h>
 
 #include <limits.h>
 #include <time.h>
@@ -158,10 +157,10 @@ VAR int                   NeedReload      VALUE(RELOAD_ALL),
 VAR void               *DefaultProfile VALUE(0);
                                        /* Default security profile */
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
 VAR int                        OnDemand        VALUE(0);
                                        /* Launched on demand */
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
 
 /*
@@ -225,8 +224,3 @@ extern void         cupsdStopSelect(void);
 /* server.c */
 extern void            cupsdStartServer(void);
 extern void            cupsdStopServer(void);
-
-
-/*
- * End of "$Id: cupsd.h 11717 2014-03-21 16:42:53Z msweet $".
- */
index 81e159d..5f08c53 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: cupsfilter.c 12304 2014-12-09 16:16:28Z msweet $"
- *
  * Filtering program for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -822,7 +820,7 @@ exec_filter(const char *filter,             /* I - Filter to execute */
 
 
  /*
-  * Add special voodoo magic for MacOS X - this allows MacOS X
+  * Add special voodoo magic for macOS - this allows macOS
   * programs to access their bundle resources properly...
   */
 
@@ -1498,8 +1496,3 @@ usage(const char *opt)                    /* I - Incorrect option, if any */
 
   exit(1);
 }
-
-
-/*
- * End of "$Id: cupsfilter.c 12304 2014-12-09 16:16:28Z msweet $".
- */
index 54a08e2..2e8303e 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: dirsvc.c 12458 2015-01-30 16:15:53Z msweet $"
- *
  * Directory services routines for the CUPS scheduler.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -1820,8 +1818,3 @@ update_smb(int onoff)                     /* I - 1 = turn on, 0 = turn off */
   else
     cupsdLogMessage(CUPSD_LOG_INFO, "Unknown SMBConfigFile scheme!");
 }
-
-
-/*
- * End of "$Id: dirsvc.c 12458 2015-01-30 16:15:53Z msweet $".
- */
index 1326f8a..dfc8584 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: dirsvc.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Directory services definitions for the CUPS scheduler.
  *
- *   Directory services definitions for the CUPS scheduler.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -77,8 +75,3 @@ extern void   cupsdStopBrowsing(void);
 #if defined(HAVE_DNSSD) || defined(HAVE_AVAHI)
 extern void    cupsdUpdateDNSSDName(void);
 #endif /* HAVE_DNSSD || HAVE_AVAHI */
-
-
-/*
- * End of "$Id: dirsvc.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 59eab27..a2d0ffc 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: env.c 12700 2015-06-08 18:32:35Z msweet $"
- *
  * Environment management routines for the CUPS scheduler.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -51,7 +49,7 @@ cupsdInitEnv(void)
 
 #if defined(__APPLE__)
  /*
-  * Add special voodoo magic for MacOS X - this allows MacOS X
+  * Add special voodoo magic for macOS - this allows macOS
   * programs to access their bundle resources properly...
   *
   * This string is replaced in cupsdStartProcess()...
@@ -262,8 +260,3 @@ find_env(const char *name)          /* I - Variable name */
 
   return (-1);
 }
-
-
-/*
- * End of "$Id: env.c 12700 2015-06-08 18:32:35Z msweet $".
- */
index ae91b9e..f9a19c3 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: file.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * File functions for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -444,8 +442,3 @@ overwrite_data(int        fd,               /* I - File descriptor */
   return (fsync(fd));
 }
 #endif /* HAVE_REMOVEFILE */
-
-
-/*
- * End of "$Id: file.c 11594 2014-02-14 20:09:01Z msweet $".
- */
index eec9611..9a703ab 100644 (file)
@@ -1,29 +1,14 @@
 /*
- * "$Id: filter.c 10996 2013-05-29 11:51:34Z msweet $"
+ * File type conversion routines for CUPS.
  *
- *   File type conversion routines for CUPS.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   mimeAddFilter()        - Add a filter to the current MIME database.
- *   mimeFilter()           - Find the fastest way to convert from one type to
- *                            another.
- *   mimeFilter2()          - Find the fastest way to convert from one type to
- *                            another, including the file size.
- *   mimeFilterLookup()     - Lookup a filter.
- *   mime_compare_filters() - Compare two filters.
- *   mime_compare_srcs()    - Compare two filter source types.
- *   mime_find_filters()    - Find the filters to convert from one type to
- *                            another.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -497,8 +482,3 @@ mime_find_filters(
 
   return (NULL);
 }
-
-
-/*
- * End of "$Id: filter.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 06a236b..c2b67a0 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ipp.c 13040 2016-01-11 20:29:13Z msweet $"
- *
  * IPP routines for the CUPS scheduler.
  *
  * Copyright 2007-2016 by Apple Inc.
@@ -84,6 +82,7 @@ static void   copy_subscription_attrs(cupsd_client_t *con,
                                        cups_array_t *ra,
                                        cups_array_t *exclude);
 static void    create_job(cupsd_client_t *con, ipp_attribute_t *uri);
+static void    create_local_printer(cupsd_client_t *con);
 static cups_array_t *create_requested_array(ipp_t *request);
 static void    create_subscriptions(cupsd_client_t *con, ipp_attribute_t *uri);
 static void    delete_printer(cupsd_client_t *con, ipp_attribute_t *uri);
@@ -125,8 +124,7 @@ static void send_ipp_status(cupsd_client_t *con, ipp_status_t status,
 static void    set_default(cupsd_client_t *con, ipp_attribute_t *uri);
 static void    set_job_attrs(cupsd_client_t *con, ipp_attribute_t *uri);
 static void    set_printer_attrs(cupsd_client_t *con, ipp_attribute_t *uri);
-static void    set_printer_defaults(cupsd_client_t *con,
-                                    cupsd_printer_t *printer);
+static int     set_printer_defaults(cupsd_client_t *con, cupsd_printer_t *printer);
 static void    start_printer(cupsd_client_t *con, ipp_attribute_t *uri);
 static void    stop_printer(cupsd_client_t *con, ipp_attribute_t *uri);
 static void    url_encode_attr(ipp_attribute_t *attr, char *buffer, size_t bufsize);
@@ -606,6 +604,10 @@ cupsdProcessIPPRequest(
              get_notifications(con);
              break;
 
+         case IPP_OP_CUPS_CREATE_LOCAL_PRINTER :
+             create_local_printer(con);
+             break;
+
          default :
              cupsdAddEvent(CUPSD_EVENT_SERVER_AUDIT, NULL, NULL,
                            "%04X %s Operation %04X (%s) not supported",
@@ -975,8 +977,7 @@ add_class(cupsd_client_t  *con,             /* I - Client connection */
                  pclass->accepting ? "Now" : "No longer");
   }
 
-  if ((attr = ippFindAttribute(con->request, "printer-is-shared",
-                               IPP_TAG_BOOLEAN)) != NULL)
+  if ((attr = ippFindAttribute(con->request, "printer-is-shared", IPP_TAG_BOOLEAN)) != NULL)
   {
     if (pclass->type & CUPS_PRINTER_REMOTE)
     {
@@ -985,17 +986,20 @@ add_class(cupsd_client_t  *con,           /* I - Client connection */
       */
 
       send_ipp_status(con, IPP_BAD_REQUEST, _("Cannot change printer-is-shared for remote queues."));
+      if (!modify)
+       cupsdDeletePrinter(pclass, 0);
+
       return;
     }
 
-    if (pclass->shared && !attr->values[0].boolean)
+    if (pclass->shared && !ippGetBoolean(attr, 0))
       cupsdDeregisterPrinter(pclass, 1);
 
     cupsdLogMessage(CUPSD_LOG_INFO,
                     "Setting %s printer-is-shared to %d (was %d.)",
                     pclass->name, attr->values[0].boolean, pclass->shared);
 
-    pclass->shared = attr->values[0].boolean;
+    pclass->shared = ippGetBoolean(attr, 0);
   }
 
   if ((attr = ippFindAttribute(con->request, "printer-state",
@@ -1007,6 +1011,9 @@ add_class(cupsd_client_t  *con,           /* I - Client connection */
       send_ipp_status(con, IPP_BAD_REQUEST,
                       _("Attempt to set %s printer-state to bad value %d."),
                       pclass->name, attr->values[0].integer);
+      if (!modify)
+       cupsdDeletePrinter(pclass, 0);
+
       return;
     }
 
@@ -1063,12 +1070,18 @@ add_class(cupsd_client_t  *con,         /* I - Client connection */
 
        send_ipp_status(con, IPP_NOT_FOUND,
                        _("The printer or class does not exist."));
+       if (!modify)
+         cupsdDeletePrinter(pclass, 0);
+
        return;
       }
       else if (dtype & CUPS_PRINTER_CLASS)
       {
         send_ipp_status(con, IPP_BAD_REQUEST,
                        _("Nested classes are not allowed."));
+       if (!modify)
+         cupsdDeletePrinter(pclass, 0);
+
         return;
       }
 
@@ -1080,7 +1093,13 @@ add_class(cupsd_client_t  *con,          /* I - Client connection */
     }
   }
 
-  set_printer_defaults(con, pclass);
+  if (!set_printer_defaults(con, pclass))
+  {
+    if (!modify)
+      cupsdDeletePrinter(pclass, 0);
+
+    return;
+  }
 
   if ((attr = ippFindAttribute(con->request, "auth-info-required",
                                IPP_TAG_KEYWORD)) != NULL)
@@ -2214,7 +2233,7 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
   char         srcfile[1024],          /* Source Script/PPD file */
                dstfile[1024];          /* Destination Script/PPD file */
   int          modify;                 /* Non-zero if we are modifying */
-  int          changed_driver,         /* Changed the PPD/interface script? */
+  int          changed_driver,         /* Changed the PPD? */
                need_restart_job,       /* Need to restart job? */
                set_device_uri,         /* Did we set the device URI? */
                set_port_monitor;       /* Did we set the port monitor? */
@@ -2310,6 +2329,9 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
   changed_driver   = 0;
   need_restart_job = 0;
 
+  if ((attr = ippFindAttribute(con->request, "printer-is-temporary", IPP_TAG_BOOLEAN)) != NULL)
+    printer->temporary = ippGetBoolean(attr, 0);
+
   if ((attr = ippFindAttribute(con->request, "printer-location",
                                IPP_TAG_TEXT)) != NULL)
     cupsdSetString(&printer->location, attr->values[0].string.text);
@@ -2339,22 +2361,6 @@ add_printer(cupsd_client_t  *con,        /* I - Client connection */
     http_uri_status_t  uri_status;     /* URI separation status */
     char               old_device_uri[1024];
                                        /* Old device URI */
-    static const char * const uri_status_strings[] =
-    {
-      "URI too large.",
-      "Bad arguments to function.",
-      "Bad resource path.",
-      "Bad port number.",
-      "Bad hostname/address.",
-      "Bad username/password.",
-      "Bad URI scheme.",
-      "Bad URI.",
-      "OK",
-      "Missing URI scheme.",
-      "Unknown URI scheme",
-      "Missing resource path."
-    };
-
 
     need_restart_job = 1;
 
@@ -2365,14 +2371,15 @@ add_printer(cupsd_client_t  *con,       /* I - Client connection */
                                 host, sizeof(host), &port,
                                 resource, sizeof(resource));
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG,
-                   "%s device-uri: %s", printer->name,
-                   uri_status_strings[uri_status - HTTP_URI_STATUS_OVERFLOW]);
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "%s device-uri: %s", printer->name, httpURIStatusString(uri_status));
 
     if (uri_status < HTTP_URI_OK)
     {
       send_ipp_status(con, IPP_NOT_POSSIBLE, _("Bad device-uri \"%s\"."),
                      attr->values[0].string.text);
+      if (!modify)
+        cupsdDeletePrinter(printer, 0);
+
       return;
     }
 
@@ -2393,6 +2400,9 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
                          "To enable, see the FileDevice directive in "
                          "\"%s/cups-files.conf\"."),
                        ServerRoot);
+       if (!modify)
+         cupsdDeletePrinter(printer, 0);
+
        return;
       }
     }
@@ -2411,6 +2421,9 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
 
        send_ipp_status(con, IPP_NOT_POSSIBLE,
                         _("Bad device-uri scheme \"%s\"."), scheme);
+       if (!modify)
+         cupsdDeletePrinter(printer, 0);
+
        return;
       }
     }
@@ -2455,6 +2468,9 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
     {
       send_ipp_status(con, IPP_NOT_POSSIBLE, _("Bad port-monitor \"%s\"."),
                      attr->values[0].string.text);
+      if (!modify)
+        cupsdDeletePrinter(printer, 0);
+
       return;
     }
 
@@ -2486,15 +2502,17 @@ add_printer(cupsd_client_t  *con,       /* I - Client connection */
                  printer->accepting ? "Now" : "No longer");
   }
 
-  if ((attr = ippFindAttribute(con->request, "printer-is-shared",
-                               IPP_TAG_BOOLEAN)) != NULL)
+  if ((attr = ippFindAttribute(con->request, "printer-is-shared", IPP_TAG_BOOLEAN)) != NULL)
   {
-    if (attr->values[0].boolean &&
+    if (ippGetBoolean(attr, 0) &&
         printer->num_auth_info_required == 1 &&
        !strcmp(printer->auth_info_required[0], "negotiate"))
     {
       send_ipp_status(con, IPP_BAD_REQUEST,
                       _("Cannot share a remote Kerberized printer."));
+      if (!modify)
+        cupsdDeletePrinter(printer, 0);
+
       return;
     }
 
@@ -2505,17 +2523,22 @@ add_printer(cupsd_client_t  *con,       /* I - Client connection */
       */
 
       send_ipp_status(con, IPP_BAD_REQUEST, _("Cannot change printer-is-shared for remote queues."));
+      if (!modify)
+        cupsdDeletePrinter(printer, 0);
+
       return;
     }
 
-    if (printer->shared && !attr->values[0].boolean)
+    if (printer->shared && !ippGetBoolean(attr, 0))
       cupsdDeregisterPrinter(printer, 1);
 
     cupsdLogMessage(CUPSD_LOG_INFO,
                     "Setting %s printer-is-shared to %d (was %d.)",
                     printer->name, attr->values[0].boolean, printer->shared);
 
-    printer->shared = attr->values[0].boolean;
+    printer->shared = ippGetBoolean(attr, 0);
+    if (printer->shared && printer->temporary)
+      printer->temporary = 0;
   }
 
   if ((attr = ippFindAttribute(con->request, "printer-state",
@@ -2526,6 +2549,9 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
     {
       send_ipp_status(con, IPP_BAD_REQUEST, _("Bad printer-state value %d."),
                       attr->values[0].integer);
+      if (!modify)
+        cupsdDeletePrinter(printer, 0);
+
       return;
     }
 
@@ -2562,6 +2588,9 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
                      attr->num_values,
                      (int)(sizeof(printer->reasons) /
                            sizeof(printer->reasons[0])));
+      if (!modify)
+        cupsdDeletePrinter(printer, 0);
+
       return;
     }
 
@@ -2595,7 +2624,13 @@ add_printer(cupsd_client_t  *con,        /* I - Client connection */
                   "Printer \"%s\" state changed.", printer->name);
   }
 
-  set_printer_defaults(con, printer);
+  if (!set_printer_defaults(con, printer))
+  {
+    if (!modify)
+      cupsdDeletePrinter(printer, 0);
+
+    return;
+  }
 
   if ((attr = ippFindAttribute(con->request, "auth-info-required",
                                IPP_TAG_KEYWORD)) != NULL)
@@ -2609,7 +2644,7 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
     cupsdSetString(&printer->device_uri, "file:///dev/null");
 
  /*
-  * See if we have an interface script or PPD file attached to the request...
+  * See if we have a PPD file attached to the request...
   */
 
   if (con->filename)
@@ -2633,88 +2668,59 @@ add_printer(cupsd_client_t  *con,       /* I - Client connection */
       * Then see what kind of file it is...
       */
 
-      snprintf(dstfile, sizeof(dstfile), "%s/interfaces/%s", ServerRoot,
-               printer->name);
-
-      if (!strncmp(line, "*PPD-Adobe", 10))
-      {
-       /*
-       * The new file is a PPD file, so remove any old interface script
-       * that might be lying around...
-       */
-
-       unlink(dstfile);
-      }
-      else
+      if (strncmp(line, "*PPD-Adobe", 10))
       {
-       /*
-       * This must be an interface script, so move the file over to the
-       * interfaces directory and make it executable...
-       */
-
-       if (copy_file(srcfile, dstfile, ConfigFilePerm | 0110))
-       {
-          send_ipp_status(con, IPP_INTERNAL_ERROR,
-                         _("Unable to copy interface script - %s"),
-                         strerror(errno));
-         return;
-       }
+       send_ipp_status(con, IPP_STATUS_ERROR_DOCUMENT_FORMAT_NOT_SUPPORTED, _("Bad PPD file."));
+       if (!modify)
+         cupsdDeletePrinter(printer, 0);
 
-       cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "Copied interface script successfully");
+       return;
       }
 
       snprintf(dstfile, sizeof(dstfile), "%s/ppd/%s.ppd", ServerRoot,
                printer->name);
 
-      if (!strncmp(line, "*PPD-Adobe", 10))
-      {
-       /*
-       * The new file is a PPD file, so move the file over to the
-       * ppd directory and make it readable by all...
-       */
-
-       if (copy_file(srcfile, dstfile, ConfigFilePerm))
-       {
-          send_ipp_status(con, IPP_INTERNAL_ERROR,
-                         _("Unable to copy PPD file - %s"),
-                         strerror(errno));
-         return;
-       }
+     /*
+      * The new file is a PPD file, so move the file over to the ppd
+      * directory...
+      */
 
-       cupsdLogMessage(CUPSD_LOG_DEBUG,
-                       "Copied PPD file successfully");
-      }
-      else
+      if (copy_file(srcfile, dstfile, ConfigFilePerm))
       {
-       /*
-       * This must be an interface script, so remove any old PPD file that
-       * may be lying around...
-       */
+       send_ipp_status(con, IPP_INTERNAL_ERROR, _("Unable to copy PPD file - %s"), strerror(errno));
+       if (!modify)
+         cupsdDeletePrinter(printer, 0);
 
-       unlink(dstfile);
+       return;
       }
+
+      cupsdLogMessage(CUPSD_LOG_DEBUG, "Copied PPD file successfully");
     }
   }
-  else if ((attr = ippFindAttribute(con->request, "ppd-name",
-                                    IPP_TAG_NAME)) != NULL)
+  else if ((attr = ippFindAttribute(con->request, "ppd-name", IPP_TAG_NAME)) != NULL)
   {
+    const char *ppd_name = ippGetString(attr, 0, NULL);
+                                       /* ppd-name value */
+
     need_restart_job = 1;
     changed_driver   = 1;
 
-    if (!strcmp(attr->values[0].string.text, "raw"))
+    if (!strcmp(ppd_name, "raw"))
     {
      /*
-      * Raw driver, remove any existing PPD or interface script files.
+      * Raw driver, remove any existing PPD file.
       */
 
-      snprintf(dstfile, sizeof(dstfile), "%s/interfaces/%s", ServerRoot,
-               printer->name);
+      snprintf(dstfile, sizeof(dstfile), "%s/ppd/%s.ppd", ServerRoot, printer->name);
       unlink(dstfile);
+    }
+    else if (strstr(ppd_name, "../"))
+    {
+      send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("Invalid ppd-name value."));
+      if (!modify)
+       cupsdDeletePrinter(printer, 0);
 
-      snprintf(dstfile, sizeof(dstfile), "%s/ppd/%s.ppd", ServerRoot,
-               printer->name);
-      unlink(dstfile);
+      return;
     }
     else
     {
@@ -2722,35 +2728,31 @@ add_printer(cupsd_client_t  *con,       /* I - Client connection */
       * PPD model file...
       */
 
-      snprintf(dstfile, sizeof(dstfile), "%s/interfaces/%s", ServerRoot,
-               printer->name);
-      unlink(dstfile);
-
-      snprintf(dstfile, sizeof(dstfile), "%s/ppd/%s.ppd", ServerRoot,
-               printer->name);
+      snprintf(dstfile, sizeof(dstfile), "%s/ppd/%s.ppd", ServerRoot, printer->name);
 
-      if (copy_model(con, attr->values[0].string.text, dstfile))
+      if (copy_model(con, ppd_name, dstfile))
       {
         send_ipp_status(con, IPP_INTERNAL_ERROR, _("Unable to copy PPD file."));
+       if (!modify)
+         cupsdDeletePrinter(printer, 0);
+
        return;
       }
 
-      cupsdLogMessage(CUPSD_LOG_DEBUG,
-                     "Copied PPD file successfully");
+      cupsdLogMessage(CUPSD_LOG_DEBUG, "Copied PPD file successfully");
     }
   }
 
   if (changed_driver)
   {
    /*
-    * If we changed the PPD/interface script, then remove the printer's cache
-    * file and clear the printer-state-reasons...
+    * If we changed the PPD, then remove the printer's cache file and clear the
+    * printer-state-reasons...
     */
 
     char cache_name[1024];             /* Cache filename for printer attrs */
 
-    snprintf(cache_name, sizeof(cache_name), "%s/%s.data", CacheDir,
-             printer->name);
+    snprintf(cache_name, sizeof(cache_name), "%s/%s.data", CacheDir, printer->name);
     unlink(cache_name);
 
     cupsdSetPrinterReasons(printer, "none");
@@ -2811,7 +2813,8 @@ add_printer(cupsd_client_t  *con, /* I - Client connection */
   */
 
   cupsdSetPrinterAttrs(printer);
-  cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
+  if (!printer->temporary)
+    cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
 
   if (need_restart_job && printer->job)
   {
@@ -4366,7 +4369,7 @@ copy_banner(cupsd_client_t *con,  /* I - Client connection */
 
 
 /*
- * 'copy_file()' - Copy a PPD file or interface script...
+ * 'copy_file()' - Copy a PPD file...
  */
 
 static int                             /* O - 0 = success, -1 = error */
@@ -4452,9 +4455,7 @@ copy_model(cupsd_client_t *con,           /* I - Client connection */
                                        /* cupsProtocol attribute */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG2,
-                 "copy_model(con=%p, from=\"%s\", to=\"%s\")",
-                 con, from, to);
+  cupsdLogMessage(CUPSD_LOG_DEBUG2, "copy_model(con=%p, from=\"%s\", to=\"%s\")", con, from, to);
 
  /*
   * Run cups-driverd to get the PPD file...
@@ -4972,6 +4973,9 @@ copy_printer_attrs(
   if (!ra || cupsArrayFind(ra, "printer-is-shared"))
     ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-shared", (char)printer->shared);
 
+  if (!ra || cupsArrayFind(ra, "printer-is-temporary"))
+    ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-temporary", (char)printer->temporary);
+
   if (!ra || cupsArrayFind(ra, "printer-more-info"))
   {
     httpAssembleURIf(HTTP_URI_CODING_ALL, printer_uri, sizeof(printer_uri),
@@ -5252,6 +5256,264 @@ create_job(cupsd_client_t  *con,        /* I - Client connection */
 
 
 /*
+ * 'create_local_bg_thread()' - Background thread for creating a local print queue.
+ */
+
+static void *                          /* O - Exit status */
+create_local_bg_thread(
+    cupsd_printer_t *printer)          /* I - Printer */
+{
+  cups_file_t  *from,                  /* Source file */
+               *to;                    /* Destination file */
+  char         fromppd[1024],          /* Source PPD */
+               toppd[1024],            /* Destination PPD */
+               scheme[32],             /* URI scheme */
+               userpass[256],          /* User:pass */
+               host[256],              /* Hostname */
+               resource[1024],         /* Resource path */
+               line[1024];             /* Line from PPD */
+  int          port;                   /* Port number */
+  http_encryption_t encryption;                /* Type of encryption to use */
+  http_t       *http;                  /* Connection to printer */
+  ipp_t                *request,               /* Request to printer */
+               *response;              /* Response from printer */
+  ipp_attribute_t *attr;               /* Attribute in response */
+
+
+ /*
+  * Try connecting to the printer...
+  */
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "%s: Generating PPD file from \"%s\"...", printer->name, printer->device_uri);
+
+  if (httpSeparateURI(HTTP_URI_CODING_ALL, printer->device_uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "%s: Bad device URI \"%s\".", printer->name, printer->device_uri);
+    return (NULL);
+  }
+
+  if (!strcmp(scheme, "ipps") || port == 443)
+    encryption = HTTP_ENCRYPTION_ALWAYS;
+  else
+    encryption = HTTP_ENCRYPTION_IF_REQUESTED;
+
+  if ((http = httpConnect2(host, port, NULL, AF_UNSPEC, encryption, 1, 30000, NULL)) == NULL)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "%s: Unable to connect to %s:%d: %s", printer->name, host, port, cupsLastErrorString());
+    return (NULL);
+  }
+
+ /*
+  * Query the printer for its capabilities...
+  */
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "%s: Connected to %s:%d, sending Get-Printer-Attributes request...", printer->name, host, port);
+
+  request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, printer->device_uri);
+  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", NULL, "all");
+
+  response = cupsDoRequest(http, request, resource);
+
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "%s: Get-Printer-Attributes returned %s", printer->name, ippErrorString(cupsLastError()));
+
+  // TODO: Grab printer icon file...
+  httpClose(http);
+
+ /*
+  * Write the PPD for the queue...
+  */
+
+  if (_ppdCreateFromIPP(fromppd, sizeof(fromppd), response))
+  {
+    if ((!printer->info || !*(printer->info)) && (attr = ippFindAttribute(response, "printer-info", IPP_TAG_TEXT)) != NULL)
+      cupsdSetString(&printer->info, ippGetString(attr, 0, NULL));
+
+    if ((!printer->location || !*(printer->location)) && (attr = ippFindAttribute(response, "printer-location", IPP_TAG_TEXT)) != NULL)
+      cupsdSetString(&printer->location, ippGetString(attr, 0, NULL));
+
+    if ((!printer->geo_location || !*(printer->geo_location)) && (attr = ippFindAttribute(response, "printer-geo-location", IPP_TAG_URI)) != NULL)
+      cupsdSetString(&printer->geo_location, ippGetString(attr, 0, NULL));
+
+    if ((from = cupsFileOpen(fromppd, "r")) == NULL)
+    {
+      cupsdLogMessage(CUPSD_LOG_ERROR, "%s: Unable to read generated PPD: %s", printer->name, strerror(errno));
+      return (NULL);
+    }
+
+    snprintf(toppd, sizeof(toppd), "%s/ppd/%s.ppd", ServerRoot, printer->name);
+    if ((to = cupsdCreateConfFile(toppd, ConfigFilePerm)) == NULL)
+    {
+      cupsdLogMessage(CUPSD_LOG_ERROR, "%s: Unable to create PPD for printer: %s", printer->name, strerror(errno));
+      cupsFileClose(from);
+      return (NULL);
+    }
+
+    while (cupsFileGets(from, line, sizeof(line)))
+      cupsFilePrintf(to, "%s\n", line);
+
+    cupsFileClose(from);
+    if (!cupsdCloseCreatedConfFile(to, toppd))
+    {
+      printer->config_time = time(NULL);
+      printer->state       = IPP_PSTATE_IDLE;
+      printer->accepting   = 1;
+
+      cupsdSetPrinterAttrs(printer);
+
+      cupsdAddEvent(CUPSD_EVENT_PRINTER_CONFIG, printer, NULL, "Printer \"%s\" is now available.", printer->name);
+      cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" is now available.", printer->name);
+    }
+  }
+  else
+    cupsdLogMessage(CUPSD_LOG_ERROR, "%s: PPD creation failed.", printer->name);
+
+  return (NULL);
+}
+
+
+/*
+ * 'create_local_printer()' - Create a local (temporary) print queue.
+ */
+
+static void
+create_local_printer(
+    cupsd_client_t *con)               /* I - Client connection */
+{
+  ipp_attribute_t *device_uri,         /* device-uri attribute */
+               *printer_geo_location,  /* printer-geo-location attribute */
+               *printer_info,          /* printer-info attribute */
+               *printer_location,      /* printer-location attribute */
+               *printer_name;          /* printer-name attribute */
+  cupsd_printer_t *printer;            /* New printer */
+  http_status_t        status;                 /* Policy status */
+  char         name[128],              /* Sanitized printer name */
+               *nameptr,               /* Pointer into name */
+               uri[1024];              /* printer-uri-supported value */
+  const char   *ptr;                   /* Pointer into attribute value */
+
+
+ /*
+  * Require local access to create a local printer...
+  */
+
+  if (!httpAddrLocalhost(httpGetAddress(con->http)))
+  {
+    send_ipp_status(con, IPP_STATUS_ERROR_FORBIDDEN, _("Only local users can create a local printer."));
+    return;
+  }
+
+ /*
+  * Check any other policy limits...
+  */
+
+  if ((status = cupsdCheckPolicy(DefaultPolicyPtr, con, NULL)) != HTTP_OK)
+  {
+    send_http_error(con, status, NULL);
+    return;
+  }
+
+ /*
+  * Grab needed attributes...
+  */
+
+  if ((printer_name = ippFindAttribute(con->request, "printer-name", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(printer_name) != IPP_TAG_PRINTER || ippGetValueTag(printer_name) != IPP_TAG_NAME)
+  {
+    if (!printer_name)
+      send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("Missing required attribute \"%s\"."), "printer-name");
+    else if (ippGetGroupTag(printer_name) != IPP_TAG_PRINTER)
+      send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("Attribute \"%s\" is in the wrong group."), "printer-name");
+    else
+      send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("Attribute \"%s\" is the wrong value type."), "printer-name");
+
+    return;
+  }
+
+  for (nameptr = name, ptr = ippGetString(printer_name, 0, NULL); *ptr && nameptr < (name + sizeof(name) - 1); ptr ++)
+  {
+   /*
+    * Sanitize the printer name...
+    */
+
+    if (_cups_isalnum(*ptr))
+      *nameptr++ = *ptr;
+    else if (nameptr == name || nameptr[-1] != '_')
+      *nameptr++ = '_';
+  }
+
+  *nameptr = '\0';
+
+  if ((device_uri = ippFindAttribute(con->request, "device-uri", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(device_uri) != IPP_TAG_PRINTER || ippGetValueTag(device_uri) != IPP_TAG_URI)
+  {
+    if (!device_uri)
+      send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("Missing required attribute \"%s\"."), "device-uri");
+    else if (ippGetGroupTag(device_uri) != IPP_TAG_PRINTER)
+      send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("Attribute \"%s\" is in the wrong group."), "device-uri");
+    else
+      send_ipp_status(con, IPP_STATUS_ERROR_BAD_REQUEST, _("Attribute \"%s\" is the wrong value type."), "device-uri");
+
+    return;
+  }
+
+  printer_geo_location = ippFindAttribute(con->request, "printer-geo-location", IPP_TAG_URI);
+  printer_info         = ippFindAttribute(con->request, "printer-info", IPP_TAG_TEXT);
+  printer_location     = ippFindAttribute(con->request, "printer-location", IPP_TAG_TEXT);
+
+ /*
+  * See if the printer already exists...
+  */
+
+  if ((printer = cupsdFindDest(name)) != NULL)
+  {
+    send_ipp_status(con, IPP_STATUS_ERROR_NOT_POSSIBLE, _("Printer \"%s\" already exists."), name);
+    goto add_printer_attributes;
+  }
+
+ /*
+  * Create the printer...
+  */
+
+  if ((printer = cupsdAddPrinter(name)) == NULL)
+  {
+    send_ipp_status(con, IPP_STATUS_ERROR_INTERNAL, _("Unable to create printer."));
+    return;
+  }
+
+  cupsdSetDeviceURI(printer, ippGetString(device_uri, 0, NULL));
+
+  if (printer_geo_location)
+    cupsdSetString(&printer->geo_location, ippGetString(printer_geo_location, 0, NULL));
+  if (printer_info)
+    cupsdSetString(&printer->info, ippGetString(printer_info, 0, NULL));
+  if (printer_location)
+    cupsdSetString(&printer->location, ippGetString(printer_location, 0, NULL));
+
+  cupsdSetPrinterAttrs(printer);
+
+ /*
+  * Run a background thread to create the PPD...
+  */
+
+  _cupsThreadCreate((_cups_thread_func_t)create_local_bg_thread, printer);
+
+ /*
+  * Return printer attributes...
+  */
+
+  send_ipp_status(con, IPP_STATUS_OK, _("Local printer created."));
+
+  add_printer_attributes:
+
+  ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-accepting-jobs", (char)printer->accepting);
+  ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_ENUM, "printer-state", printer->state);
+  add_printer_state_reasons(con, printer);
+
+  httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), httpIsEncrypted(con->http) ? "ipps" : "ipp", NULL, con->clientname, con->clientport, "/printers/%s", printer->name);
+  ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, uri);
+}
+
+
+/*
  * 'create_requested_array()' - Create an array for the requested-attributes.
  */
 
@@ -5671,6 +5933,7 @@ delete_printer(cupsd_client_t  *con,      /* I - Client connection */
   cups_ptype_t dtype;                  /* Destination type (printer/class) */
   cupsd_printer_t *printer;            /* Printer/class */
   char         filename[1024];         /* Script/PPD filename */
+  int          temporary;              /* Temporary queue? */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "delete_printer(%p[%d], %s)", con,
@@ -5722,13 +5985,6 @@ delete_printer(cupsd_client_t  *con,     /* I - Client connection */
   * Remove any old PPD or script files...
   */
 
-  snprintf(filename, sizeof(filename), "%s/interfaces/%s", ServerRoot,
-           printer->name);
-  unlink(filename);
-  snprintf(filename, sizeof(filename), "%s/interfaces/%s.O", ServerRoot,
-           printer->name);
-  unlink(filename);
-
   snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd", ServerRoot,
            printer->name);
   unlink(filename);
@@ -5748,26 +6004,31 @@ delete_printer(cupsd_client_t  *con,    /* I - Client connection */
 
   cupsdUnregisterColor(printer);
 
+  temporary = printer->temporary;
+
   if (dtype & CUPS_PRINTER_CLASS)
   {
     cupsdLogMessage(CUPSD_LOG_INFO, "Class \"%s\" deleted by \"%s\".",
                     printer->name, get_username(con));
 
     cupsdDeletePrinter(printer, 0);
-    cupsdMarkDirty(CUPSD_DIRTY_CLASSES);
+    if (!temporary)
+      cupsdMarkDirty(CUPSD_DIRTY_CLASSES);
   }
   else
   {
     cupsdLogMessage(CUPSD_LOG_INFO, "Printer \"%s\" deleted by \"%s\".",
                     printer->name, get_username(con));
 
-    if (cupsdDeletePrinter(printer, 0))
+    if (cupsdDeletePrinter(printer, 0) && !temporary)
       cupsdMarkDirty(CUPSD_DIRTY_CLASSES);
 
-    cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
+    if (!temporary)
+      cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
   }
 
-  cupsdMarkDirty(CUPSD_DIRTY_PRINTCAP);
+  if (!temporary)
+    cupsdMarkDirty(CUPSD_DIRTY_PRINTCAP);
 
  /*
   * Return with no errors...
@@ -6195,10 +6456,9 @@ get_jobs(cupsd_client_t  *con,           /* I - Client connection */
   ipp_jstate_t job_state;              /* job-state value */
   int          first_job_id = 1,       /* First job ID */
                first_index = 1,        /* First index */
-               current_index = 0;      /* Current index */
-  int          limit = 0;              /* Maximum number of jobs to return */
-  int          count;                  /* Number of jobs that match */
-  int          need_load_job = 0;      /* Do we need to load the job? */
+               limit = 0,              /* Maximum number of jobs to return */
+               count,                  /* Number of jobs that match */
+               need_load_job = 0;      /* Do we need to load the job? */
   const char   *job_attr;              /* Job attribute requested */
   ipp_attribute_t *job_ids;            /* job-ids attribute */
   cupsd_job_t  *job;                   /* Current job pointer */
@@ -6506,9 +6766,12 @@ get_jobs(cupsd_client_t  *con,           /* I - Client connection */
   }
   else
   {
-    for (count = 0, job = (cupsd_job_t *)cupsArrayFirst(list);
-        (limit <= 0 || count < limit) && job;
-        job = (cupsd_job_t *)cupsArrayNext(list))
+    if (first_index > 1)
+      job = (cupsd_job_t *)cupsArrayIndex(list, first_index - 1);
+    else
+      job = (cupsd_job_t *)cupsArrayFirst(list);
+
+    for (count = 0; (limit <= 0 || count < limit) && job; job = (cupsd_job_t *)cupsArrayNext(list))
     {
      /*
       * Filter out jobs that don't match...
@@ -6540,10 +6803,6 @@ get_jobs(cupsd_client_t  *con,           /* I - Client connection */
       if (job->id < first_job_id)
        continue;
 
-      current_index ++;
-      if (current_index < first_index)
-        continue;
-
       if (need_load_job && !job->attrs)
       {
         cupsdLoadJob(job);
@@ -6736,16 +6995,17 @@ get_ppd(cupsd_client_t  *con,           /* I - Client connection */
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_ppd(%p[%d], %p[%s=%s])", con,
                   con->number, uri, uri->name, uri->values[0].string.text);
 
-  if (!strcmp(uri->name, "ppd-name"))
+  if (!strcmp(ippGetName(uri), "ppd-name"))
   {
    /*
     * Return a PPD file from cups-driverd...
     */
 
-    char       command[1024],  /* cups-driverd command */
-               options[1024],  /* Options to pass to command */
-               ppd_name[1024]; /* ppd-name */
-
+    const char *ppd_name = ippGetString(uri, 0, NULL);
+                                       /* ppd-name value */
+    char       command[1024],          /* cups-driverd command */
+               options[1024],          /* Options to pass to command */
+               oppd_name[1024];        /* Escaped ppd-name */
 
    /*
     * Check policy...
@@ -6758,13 +7018,22 @@ get_ppd(cupsd_client_t  *con,           /* I - Client connection */
     }
 
    /*
+    * Check ppd-name value...
+    */
+
+    if (strstr(ppd_name, "../"))
+    {
+      send_ipp_status(con, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, _("Invalid ppd-name value."));
+      return;
+    }
+
+   /*
     * Run cups-driverd command with the given options...
     */
 
     snprintf(command, sizeof(command), "%s/daemon/cups-driverd", ServerBin);
-    url_encode_string(uri->values[0].string.text, ppd_name, sizeof(ppd_name));
-    snprintf(options, sizeof(options), "get+%d+%s",
-             con->request->request.op.request_id, ppd_name);
+    url_encode_string(ppd_name, oppd_name, sizeof(oppd_name));
+    snprintf(options, sizeof(options), "get+%d+%s", ippGetRequestId(con->request), oppd_name);
 
     if (cupsdSendCommand(con, command, options, 0))
     {
@@ -6782,17 +7051,14 @@ get_ppd(cupsd_client_t  *con,           /* I - Client connection */
       * went wrong...
       */
 
-      send_ipp_status(con, IPP_INTERNAL_ERROR,
-                     _("cups-driverd failed to execute."));
+      send_ipp_status(con, IPP_INTERNAL_ERROR, _("cups-driverd failed to execute."));
     }
   }
-  else if (!strcmp(uri->name, "printer-uri") &&
-           cupsdValidateDest(uri->values[0].string.text, &dtype, &dest))
+  else if (!strcmp(ippGetName(uri), "printer-uri") && cupsdValidateDest(ippGetString(uri, 0, NULL), &dtype, &dest))
   {
     int        i;                      /* Looping var */
     char       filename[1024];         /* PPD filename */
 
-
    /*
     * Check policy...
     */
@@ -6807,14 +7073,12 @@ get_ppd(cupsd_client_t  *con,           /* I - Client connection */
     * See if we need the PPD for a class or remote printer...
     */
 
-    snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd", ServerRoot,
-             dest->name);
+    snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd", ServerRoot, dest->name);
 
     if ((dtype & CUPS_PRINTER_REMOTE) && access(filename, 0))
     {
-      con->response->request.status.status_code = CUPS_SEE_OTHER;
-      ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_URI,
-                   "printer-uri", NULL, dest->uri);
+      send_ipp_status(con, IPP_STATUS_CUPS_SEE_OTHER, _("See remote printer."));
+      ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, dest->uri);
       return;
     }
     else if (dtype & CUPS_PRINTER_CLASS)
@@ -6822,8 +7086,7 @@ get_ppd(cupsd_client_t  *con,             /* I - Client connection */
       for (i = 0; i < dest->num_printers; i ++)
         if (!(dest->printers[i]->type & CUPS_PRINTER_CLASS))
        {
-         snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd", ServerRoot,
-                  dest->printers[i]->name);
+         snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd", ServerRoot, dest->printers[i]->name);
 
           if (!access(filename, 0))
            break;
@@ -6833,9 +7096,8 @@ get_ppd(cupsd_client_t  *con,             /* I - Client connection */
         dest = dest->printers[i];
       else
       {
-        con->response->request.status.status_code = CUPS_SEE_OTHER;
-       ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_URI,
-                    "printer-uri", NULL, dest->printers[0]->uri);
+       send_ipp_status(con, IPP_STATUS_CUPS_SEE_OTHER, _("See remote printer."));
+        ippAddString(con->response, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, dest->printers[0]->uri);
         return;
       }
     }
@@ -6846,9 +7108,7 @@ get_ppd(cupsd_client_t  *con,             /* I - Client connection */
 
     if ((con->file = open(filename, O_RDONLY)) < 0)
     {
-      send_ipp_status(con, IPP_NOT_FOUND,
-                      _("The PPD file \"%s\" could not be opened: %s"),
-                     uri->values[0].string.text, strerror(errno));
+      send_ipp_status(con, IPP_STATUS_ERROR_NOT_FOUND, _("The PPD file \"%s\" could not be opened: %s"), ippGetString(uri, 0, NULL), strerror(errno));
       return;
     }
 
@@ -6856,12 +7116,10 @@ get_ppd(cupsd_client_t  *con,           /* I - Client connection */
 
     con->pipe_pid = 0;
 
-    con->response->request.status.status_code = IPP_OK;
+    ippSetStatusCode(con->response, IPP_STATUS_OK);
   }
   else
-    send_ipp_status(con, IPP_NOT_FOUND,
-                    _("The PPD file \"%s\" could not be found."),
-                    uri->values[0].string.text);
+    send_ipp_status(con, IPP_STATUS_ERROR_NOT_FOUND, _("The PPD file \"%s\" could not be found."), ippGetString(uri, 0, NULL));
 }
 
 
@@ -10358,7 +10616,7 @@ set_printer_attrs(cupsd_client_t  *con, /* I - Client connection */
  * 'set_printer_defaults()' - Set printer default options from a request.
  */
 
-static void
+static int                             /* O - 1 on success, 0 on failure */
 set_printer_defaults(
     cupsd_client_t  *con,              /* I - Client connection */
     cupsd_printer_t *printer)          /* I - Printer */
@@ -10487,7 +10745,7 @@ set_printer_defaults(
        send_ipp_status(con, IPP_NOT_POSSIBLE,
                        _("Unknown printer-op-policy \"%s\"."),
                        attr->values[0].string.text);
-       return;
+       return (0);
       }
     }
     else if (!strcmp(attr->name, "printer-error-policy"))
@@ -10504,7 +10762,7 @@ set_printer_defaults(
        send_ipp_status(con, IPP_NOT_POSSIBLE,
                        _("Unknown printer-error-policy \"%s\"."),
                        attr->values[0].string.text);
-       return;
+       return (0);
       }
 
       cupsdLogMessage(CUPSD_LOG_DEBUG,
@@ -10600,6 +10858,8 @@ set_printer_defaults(
          break;
     }
   }
+
+  return (1);
 }
 
 
@@ -11197,8 +11457,3 @@ validate_user(cupsd_job_t    *job,      /* I - Job */
   return (cupsdCheckPolicy(printer ? printer->op_policy_ptr : DefaultPolicyPtr,
                            con, owner) == HTTP_OK);
 }
-
-
-/*
- * End of "$Id: ipp.c 13040 2016-01-11 20:29:13Z msweet $".
- */
index 0bdb855..0f1d648 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: job.c 13047 2016-01-13 19:16:12Z msweet $"
- *
  * Job management routines for the CUPS scheduler.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -389,16 +387,14 @@ cupsdCheckJobs(void)
         if (pclass)
        {
         /*
-         * Add/update a job-actual-printer-uri attribute for this job
+         * Add/update a job-printer-uri-actual attribute for this job
          * so that we know which printer actually printed the job...
          */
 
-          if ((attr = ippFindAttribute(job->attrs, "job-actual-printer-uri",
-                                      IPP_TAG_URI)) != NULL)
+          if ((attr = ippFindAttribute(job->attrs, "job-printer-uri-actual", IPP_TAG_URI)) != NULL)
             ippSetString(job->attrs, &attr, 0, printer->uri);
          else
-           ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI,
-                        "job-actual-printer-uri", NULL, printer->uri);
+           ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri-actual", NULL, printer->uri);
 
           job->dirty = 1;
           cupsdMarkDirty(CUPSD_DIRTY_JOBS);
@@ -2215,6 +2211,15 @@ cupsdSaveAllJobs(void)
        job;
        job = (cupsd_job_t *)cupsArrayNext(Jobs))
   {
+    if (job->printer && job->printer->temporary)
+    {
+     /*
+      * Don't save jobs on temporary printers...
+      */
+
+      continue;
+    }
+
     cupsFilePrintf(fp, "<Job %d>\n", job->id);
     cupsFilePrintf(fp, "State %d\n", job->state_value);
     cupsFilePrintf(fp, "Created %ld\n", (long)job->creation_time);
@@ -2254,6 +2259,16 @@ cupsdSaveJob(cupsd_job_t *job)           /* I - Job */
   cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p",
                   job, job->id, job->attrs);
 
+  if (job->printer && job->printer->temporary)
+  {
+   /*
+    * Don't save jobs on temporary printers...
+    */
+
+    job->dirty = 0;
+    return;
+  }
+
   snprintf(filename, sizeof(filename), "%s/c%05d", RequestRoot, job->id);
 
   if ((fp = cupsdCreateConfFile(filename, ConfigFilePerm & 0600)) == NULL)
@@ -2809,7 +2824,8 @@ cupsdUnloadCompletedJobs(void)
       if (job->dirty)
         cupsdSaveJob(job);
 
-      unload_job(job);
+      if (!job->dirty)
+        unload_job(job);
     }
 }
 
@@ -3190,7 +3206,7 @@ finalize_job(cupsd_job_t *job,            /* I - Job */
 
    /*
     * Convert the status to an exit code.  Due to the way the W* macros are
-    * implemented on MacOS X (bug?), we have to store the exit status in a
+    * implemented on macOS (bug?), we have to store the exit status in a
     * variable first and then convert...
     */
 
@@ -3529,6 +3545,13 @@ finalize_job(cupsd_job_t *job,           /* I - Job */
   cupsArrayRemove(PrintingJobs, job);
 
  /*
+  * Clear informational messages...
+  */
+
+  if (job->status_level > CUPSD_LOG_ERROR)
+    job->printer->state_message[0] = '\0';
+
+ /*
   * Apply any PPD updates...
   */
 
@@ -4136,7 +4159,15 @@ load_job_cache(const char *filename)     /* I - job.cache filename */
        {
          cupsdLogMessage(CUPSD_LOG_ERROR, "[Job %d] Files have gone away.",
                          jobid);
-         continue;
+
+         /*
+          * job.cache file is out-of-date compared to spool directory; load
+          * that instead...
+          */
+
+         cupsFileClose(fp);
+          load_request_root();
+          return;
        }
       }
 
@@ -5159,7 +5190,7 @@ update_job(cupsd_job_t *job)              /* I - Job to check */
         ptr = message;
 
       if (*ptr)
-        cupsdLogJob(job, loglevel, "%s", ptr);
+        cupsdLogJob(job, loglevel == CUPSD_LOG_INFO ? CUPSD_LOG_DEBUG : loglevel, "%s", ptr);
 
       if (loglevel < CUPSD_LOG_DEBUG &&
           strcmp(job->printer->state_message, ptr))
@@ -5361,8 +5392,3 @@ update_job_attrs(cupsd_job_t *job,        /* I - Job to update */
   job->dirty = 1;
   cupsdMarkDirty(CUPSD_DIRTY_JOBS);
 }
-
-
-/*
- * End of "$Id: job.c 13047 2016-01-13 19:16:12Z msweet $".
- */
index 2e3edc8..658151c 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: job.h 12668 2015-05-27 19:30:32Z msweet $"
- *
  * Print job definitions for the CUPS scheduler.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -177,8 +175,3 @@ extern void         cupsdStopAllJobs(cupsd_jobaction_t action,
 extern int             cupsdTimeoutJob(cupsd_job_t *job);
 extern void            cupsdUnloadCompletedJobs(void);
 extern void            cupsdUpdateJobs(void);
-
-
-/*
- * End of "$Id: job.h 12668 2015-05-27 19:30:32Z msweet $".
- */
index 9fcc631..1103b25 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: listen.c 12178 2014-09-30 18:56:48Z msweet $"
- *
  * Server listening routines for the CUPS scheduler.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -43,9 +41,9 @@ cupsdDeleteAllListeners(void)
   for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
        lis;
        lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
     if (!lis->on_demand)
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
     {
       cupsArrayRemove(Listeners, lis);
       free(lis);
@@ -283,7 +281,7 @@ cupsdStopListening(void)
        lis;
        lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
   {
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
     if (!lis->on_demand && lis->fd != -1)
     {
       httpAddrClose(&(lis->address), lis->fd);
@@ -296,11 +294,6 @@ cupsdStopListening(void)
       httpAddrClose(&(lis->address), lis->fd);
       lis->fd = -1;
     }
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
   }
 }
-
-
-/*
- * End of "$Id: listen.c 12178 2014-09-30 18:56:48Z msweet $".
- */
index 55e8036..0a135a7 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: log.c 12928 2015-10-23 21:31:58Z msweet $"
- *
  * Log file routines for the CUPS scheduler.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -584,9 +582,7 @@ cupsdLogJob(cupsd_job_t *job,               /* I - Job */
   if (TestConfigFile || !ErrorLog)
     return (1);
 
-  if ((level > LogLevel ||
-       (level == CUPSD_LOG_INFO && LogLevel < CUPSD_LOG_DEBUG)) &&
-      LogDebugHistory <= 0)
+  if (level > LogLevel && LogDebugHistory <= 0)
     return (1);
 
 #ifdef HAVE_ASL_H
@@ -702,10 +698,7 @@ cupsdLogJob(cupsd_job_t *job,              /* I - Job */
 
   if (status > 0)
   {
-    if (job &&
-        (level > LogLevel ||
-         (level == CUPSD_LOG_INFO && LogLevel < CUPSD_LOG_DEBUG)) &&
-       LogDebugHistory > 0)
+    if (job && level > LogLevel && LogDebugHistory > 0)
     {
      /*
       * Add message to the job history...
@@ -744,8 +737,7 @@ cupsdLogJob(cupsd_job_t *job,               /* I - Job */
 
       return (1);
     }
-    else if (level <= LogLevel &&
-             (level != CUPSD_LOG_INFO || LogLevel >= CUPSD_LOG_DEBUG))
+    else if (level <= LogLevel)
       return (cupsdWriteErrorLog(level, log_line));
     else
       return (1);
@@ -1506,8 +1498,3 @@ format_log_line(const char *message,      /* I - Printf-style format string */
 
   return (1);
 }
-
-
-/*
- * End of "$Id: log.c 12928 2015-10-23 21:31:58Z msweet $".
- */
index d9691ea..0dcd32d 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: main.c 13087 2016-02-12 18:53:24Z msweet $"
- *
  * Main loop for the CUPS scheduler.
  *
  * Copyright 2007-2016 by Apple Inc.
 
 #ifdef HAVE_LAUNCH_H
 #  include <launch.h>
-#  include <libgen.h>
-#  define CUPS_KEEPALIVE CUPS_CACHEDIR "/org.cups.cupsd"
-                                       /* Name of the launchd KeepAlive file */
-#  ifdef HAVE_LAUNCH_ACTIVATE_SOCKET
-/* Update when we have a public header we can include */
-extern int launch_activate_socket(const char *name, int **fds, size_t *cnt);
-#  endif /* HAVE_LAUNCH_ACTIVATE_SOCKET */
 #endif /* HAVE_LAUNCH_H */
 
 #ifdef HAVE_SYSTEMD
 #  include <systemd/sd-daemon.h>
-#  define CUPS_KEEPALIVE CUPS_CACHEDIR "/org.cups.cupsd"
-                                       /* Name of the systemd path file */
 #endif /* HAVE_SYSTEMD */
 
+#ifdef HAVE_ONDEMAND
+#  define CUPS_KEEPALIVE CUPS_CACHEDIR "/org.cups.cupsd"
+                                       /* Name of the KeepAlive file */
+#endif
+
 #if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO)
 #  include <malloc.h>
 #endif /* HAVE_MALLOC_H && HAVE_MALLINFO */
@@ -73,10 +67,10 @@ static void         sigchld_handler(int sig);
 static void            sighup_handler(int sig);
 static void            sigterm_handler(int sig);
 static long            select_timeout(int fds);
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
 static void            service_checkin(void);
 static void            service_checkout(void);
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 static void            usage(int status) __attribute__((noreturn));
 
 
@@ -109,8 +103,10 @@ main(int  argc,                            /* I - Number of command-line args */
   int                  close_all = 1,  /* Close all file descriptors? */
                        disconnect = 1, /* Disconnect from controlling terminal? */
                        fg = 0,         /* Run in foreground? */
-                       run_as_child = 0;
+                       run_as_child = 0,
                                        /* Running as child process? */
+                       print_profile = 0;
+                                       /* Print the sandbox profile to stdout? */
   int                  fds;            /* Number of ready descriptors */
   cupsd_client_t       *con;           /* Current client */
   cupsd_job_t          *job;           /* Current job */
@@ -131,10 +127,10 @@ main(int  argc,                           /* I - Number of command-line args */
 #else
   time_t               netif_time = 0; /* Time since last network update */
 #endif /* __APPLE__ */
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#if defined(HAVE_ONDEMAND)
   int                  service_idle_exit;
                                        /* Idle exit on select timeout? */
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
 
 #ifdef HAVE_GETEUID
@@ -242,8 +238,8 @@ main(int  argc,                             /* I - Number of command-line args */
              usage(0);
              break;
 
-          case 'l' : /* Started by launchd/systemd... */
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+          case 'l' : /* Started by launchd/systemd/upstart... */
+#if defined(HAVE_ONDEMAND)
              OnDemand   = 1;
              fg         = 1;
              close_all  = 0;
@@ -254,7 +250,7 @@ main(int  argc,                             /* I - Number of command-line args */
               fg         = 0;
              disconnect = 1;
              close_all  = 1;
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
              break;
 
           case 'p' : /* Stop immediately for profiling */
@@ -309,6 +305,13 @@ main(int  argc,                            /* I - Number of command-line args */
              close_all      = 0;
              break;
 
+          case 'T' : /* Print security profile */
+              print_profile = 1;
+              fg            = 1;
+              disconnect    = 0;
+              close_all     = 0;
+              break;
+
          default : /* Unknown option */
               _cupsLangPrintf(stderr, _("cupsd: Unknown option \"%c\" - "
                                        "aborting."), *opt);
@@ -546,6 +549,27 @@ main(int  argc,                            /* I - Number of command-line args */
     printf("\"%s\" is OK.\n", ConfigurationFile);
     return (0);
   }
+  else if (print_profile)
+  {
+    cups_file_t        *fp;                    /* File pointer */
+    const char *profile = cupsdCreateProfile(42, 0);
+                                       /* Profile */
+    char       line[1024];             /* Line from file */
+
+
+    if ((fp = cupsFileOpen(profile, "r")) == NULL)
+    {
+      printf("Unable to open profile file \"%s\": %s\n", profile ? profile : "(null)", strerror(errno));
+      return (1);
+    }
+
+    while (cupsFileGets(fp, line, sizeof(line)))
+      puts(line);
+
+    cupsFileClose(fp);
+
+    return (0);
+  }
 
  /*
   * Clean out old temp files and printer cache data.
@@ -556,7 +580,7 @@ main(int  argc,                             /* I - Number of command-line args */
 
   cupsdCleanFiles(CacheDir, "*.ipp");
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#if defined(HAVE_ONDEMAND)
   if (OnDemand)
   {
    /*
@@ -567,7 +591,7 @@ main(int  argc,                             /* I - Number of command-line args */
     service_checkin();
     service_checkout();
   }
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
  /*
   * Startup the server...
@@ -654,11 +678,11 @@ main(int  argc,                           /* I - Number of command-line args */
   * Send server-started event...
   */
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#if defined(HAVE_ONDEMAND)
   if (OnDemand)
     cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started on demand.");
   else
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
   if (fg)
     cupsdAddEvent(CUPSD_EVENT_SERVER_STARTED, NULL, NULL, "Scheduler started in foreground.");
   else
@@ -726,6 +750,11 @@ main(int  argc,                            /* I - Number of command-line args */
        * Shutdown the server...
        */
 
+#ifdef HAVE_ONDEMAND
+       if (OnDemand)
+         break;
+#endif /* HAVE_ONDEMAND */
+
         DoingShutdown = 1;
 
        cupsdStopServer();
@@ -781,7 +810,7 @@ main(int  argc,                             /* I - Number of command-line args */
     if ((timeout = select_timeout(fds)) > 1 && LastEvent)
       timeout = 1;
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
    /*
     * If no other work is scheduled and we're being controlled by
     * launchd then timeout after 'LaunchdTimeout' seconds of
@@ -800,7 +829,7 @@ main(int  argc,                             /* I - Number of command-line args */
     }
     else
       service_idle_exit = 0;
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
     if ((fds = cupsdDoSelect(timeout)) < 0)
     {
@@ -812,7 +841,6 @@ main(int  argc,                             /* I - Number of command-line args */
       cupsd_printer_t  *p;             /* Current printer */
 #endif /* HAVE_DNSSD || HAVE_AVAHI */
 
-
       if (errno == EINTR)              /* Just interrupted by a signal */
         continue;
 
@@ -897,10 +925,11 @@ main(int  argc,                           /* I - Number of command-line args */
     }
 #endif /* !__APPLE__ */
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
    /*
-    * If no other work was scheduled and we're being controlled by launchd
-    * then timeout after 'LaunchdTimeout' seconds of inactivity...
+    * If no other work was scheduled and we're being controlled by launchd,
+    * systemd, or upstart then timeout after 'LaunchdTimeout' seconds of
+    * inactivity...
     */
 
     if (!fds && service_idle_exit)
@@ -911,7 +940,7 @@ main(int  argc,                             /* I - Number of command-line args */
       stop_scheduler = 1;
       break;
     }
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
    /*
     * Resume listening for new connections as needed...
@@ -1115,14 +1144,14 @@ main(int  argc,                         /* I - Number of command-line args */
 
   cupsdStopServer();
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
  /*
   * Update the keep-alive file as needed...
   */
 
   if (OnDemand)
     service_checkout();
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
  /*
   * Stop all jobs...
@@ -1477,7 +1506,19 @@ process_children(void)
        * filters are done, and if so move to the next file.
        */
 
-       if (job->current_file < job->num_files && job->printer)
+       if (job->state_value >= IPP_JOB_CANCELED)
+       {
+        /*
+         * Remove the job from the active list if there are no processes still
+         * running for it...
+         */
+
+         for (i = 0; job->filters[i] < 0; i++);
+
+         if (!job->filters[i] && job->backend <= 0)
+           cupsArrayRemove(ActiveJobs, job);
+       }
+       else if (job->current_file < job->num_files && job->printer)
        {
          for (i = 0; job->filters[i] < 0; i ++);
 
@@ -1492,18 +1533,6 @@ process_children(void)
            cupsdContinueJob(job);
          }
        }
-       else if (job->state_value >= IPP_JOB_CANCELED)
-       {
-        /*
-         * Remove the job from the active list if there are no processes still
-         * running for it...
-         */
-
-         for (i = 0; job->filters[i] < 0; i++);
-
-         if (!job->filters[i] && job->backend <= 0)
-           cupsArrayRemove(ActiveJobs, job);
-       }
       }
     }
 
@@ -1794,113 +1823,87 @@ sigterm_handler(int sig)               /* I - Signal number */
 }
 
 
-#if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD)
+#ifdef HAVE_ONDEMAND
 /*
- * 'service_checkin()' - Check-in with launchd and collect the listening fds.
+ * 'service_add_listener()' - Bind an open fd as a Listener.
  */
 
 static void
-service_checkin(void)
+service_add_listener(int fd,           /* I - Socket file descriptor */
+                     int idx)          /* I - Listener number, for logging */
 {
-#  ifdef HAVE_LAUNCH_ACTIVATE_SOCKET
-  int                  error;          /* Check-in error, if any */
-  size_t               i,              /* Looping var */
-                       count;          /* Number of listeners */
-  int                  *ld_sockets;    /* Listener sockets */
   cupsd_listener_t     *lis;           /* Listeners array */
   http_addr_t          addr;           /* Address variable */
   socklen_t            addrlen;        /* Length of address */
   char                 s[256];         /* String addresss */
 
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: pid=%d", (int)getpid());
+  addrlen = sizeof(addr);
 
- /*
-  * Check-in with launchd...
-  */
-
-  if ((error = launch_activate_socket("Listeners", &ld_sockets, &count)) != 0)
+  if (getsockname(fd, (struct sockaddr *)&addr, &addrlen))
   {
-    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get listener sockets: %s", strerror(error));
-    exit(EXIT_FAILURE);
-    return; /* anti-compiler-warning */
+    cupsdLogMessage(CUPSD_LOG_ERROR, "service_add_listener: Unable to get local address for listener #%d: %s", idx + 1, strerror(errno));
+    return;
   }
 
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "service_add_listener: Listener #%d at fd %d, \"%s\".", idx + 1, fd, httpAddrString(&addr, s, sizeof(s)));
+
  /*
-  * Try to match the launchd sockets to the cupsd listeners...
+  * Try to match the on-demand socket address to one of the listeners...
   */
 
-  cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: %d listeners.", (int)count);
-
-  for (i = 0; i < count; i ++)
-  {
-   /*
-    * Get the launchd socket address...
-    */
-
-    addrlen = sizeof(addr);
-
-    if (getsockname(ld_sockets[i], (struct sockaddr *)&addr, &addrlen))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get local address for listener #%d: %s", (int)i + 1, strerror(errno));
-      continue;
-    }
-
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Listener #%d at fd %d, \"%s\".", (int)i + 1, ld_sockets[i], httpAddrString(&addr, s, sizeof(s)));
+  for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
+       lis;
+       lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
+    if (httpAddrEqual(&lis->address, &addr))
+      break;
 
-    for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
-        lis;
-        lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
-      if (httpAddrEqual(&lis->address, &addr))
-       break;
+  /*
+   * Add a new listener If there's no match...
+   */
 
-   /*
-    * Add a new listener if there's no match...
-    */
+  if (lis)
+  {
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "service_add_listener: Matched existing listener #%d to %s.", idx + 1, httpAddrString(&(lis->address), s, sizeof(s)));
+  }
+  else
+  {
+    cupsdLogMessage(CUPSD_LOG_DEBUG, "service_add_listener: Adding new listener #%d for %s.", idx + 1, httpAddrString(&addr, s, sizeof(s)));
 
-    if (lis)
+    if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
     {
-      cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Matched existing listener #%d to %s.", (int)i + 1, httpAddrString(&(lis->address), s, sizeof(s)));
+      cupsdLogMessage(CUPSD_LOG_ERROR, "service_add_listener: Unable to allocate listener: %s.", strerror(errno));
+      exit(EXIT_FAILURE);
+      return;
     }
-    else
-    {
-      cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Adding new listener #%d for %s.", (int)i + 1, httpAddrString(&addr, s, sizeof(s)));
 
-      if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
-      {
-       cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to allocate listener: %s", strerror(errno));
-       exit(EXIT_FAILURE);
-      }
+    cupsArrayAdd(Listeners, lis);
 
-      cupsArrayAdd(Listeners, lis);
+    memcpy(&lis->address, &addr, sizeof(lis->address));
+  }
 
-      memcpy(&lis->address, &addr, sizeof(lis->address));
-    }
+  lis->fd        = fd;
+  lis->on_demand = 1;
 
-    lis->fd        = ld_sockets[i];
-    lis->on_demand = 1;
+#  ifdef HAVE_SSL
+  if (httpAddrPort(&(lis->address)) == 443)
+    lis->encryption = HTTP_ENCRYPT_ALWAYS;
+#  endif /* HAVE_SSL */
+}
 
-#    ifdef HAVE_SSL
-    if (httpAddrPort(&(lis->address)) == 443)
-      lis->encryption = HTTP_ENCRYPT_ALWAYS;
-#    endif /* HAVE_SSL */
-  }
 
-  free(ld_sockets);
+/*
+ * 'service_checkin()' - Check-in with launchd and collect the listening fds.
+ */
 
-#  elif defined(HAVE_LAUNCHD)
+static void
+service_checkin(void)
+{
+#  ifdef HAVE_LAUNCHD
+  int                  error;          /* Check-in error, if any */
   size_t               i,              /* Looping var */
                        count;          /* Number of listeners */
-  launch_data_t                ld_msg,         /* Launch data message */
-                       ld_resp,        /* Launch data response */
-                       ld_array,       /* Launch data array */
-                       ld_sockets,     /* Launch data sockets dictionary */
-                       tmp;            /* Launch data */
-  cupsd_listener_t     *lis;           /* Listeners array */
-  http_addr_t          addr;           /* Address variable */
-  socklen_t            addrlen;        /* Length of address */
-  int                  fd;             /* File descriptor */
-  char                 s[256];         /* String addresss */
+  int                  *ld_sockets;    /* Listener sockets */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: pid=%d", (int)getpid());
@@ -1909,133 +1912,27 @@ service_checkin(void)
   * Check-in with launchd...
   */
 
-  ld_msg = launch_data_new_string(LAUNCH_KEY_CHECKIN);
-  if ((ld_resp = launch_msg(ld_msg)) == NULL)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                   "service_checkin: launch_msg(\"" LAUNCH_KEY_CHECKIN
-                   "\") IPC failure");
-    exit(EXIT_FAILURE);
-    return; /* anti-compiler-warning */
-  }
-
-  if (launch_data_get_type(ld_resp) == LAUNCH_DATA_ERRNO)
-  {
-    errno = launch_data_get_errno(ld_resp);
-    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Check-in failed: %s",
-                    strerror(errno));
-    exit(EXIT_FAILURE);
-    return; /* anti-compiler-warning */
-  }
-
- /*
-  * Get the sockets dictionary...
-  */
-
-  if ((ld_sockets = launch_data_dict_lookup(ld_resp, LAUNCH_JOBKEY_SOCKETS))
-          == NULL)
-  {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "service_checkin: No sockets found to answer requests on.");
-    exit(EXIT_FAILURE);
-    return; /* anti-compiler-warning */
-  }
-
- /*
-  * Get the array of listener sockets...
-  */
-
-  if ((ld_array = launch_data_dict_lookup(ld_sockets, "Listeners")) == NULL)
+  if ((error = launch_activate_socket("Listeners", &ld_sockets, &count)) != 0)
   {
-    cupsdLogMessage(CUPSD_LOG_ERROR,
-                    "service_checkin: No sockets found to answer requests on.");
+    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get listener sockets: %s", strerror(error));
     exit(EXIT_FAILURE);
     return; /* anti-compiler-warning */
   }
 
  /*
-  * Add listening fd(s) to the Listener array...
+  * Try to match the launchd sockets to the cupsd listeners...
   */
 
-  if (launch_data_get_type(ld_array) == LAUNCH_DATA_ARRAY)
-  {
-    count = launch_data_array_get_count(ld_array);
-
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: %d listeners.", (int)count);
-
-    for (i = 0; i < count; i ++)
-    {
-     /*
-      * Get the launchd file descriptor and address...
-      */
-
-      if ((tmp = launch_data_array_get_index(ld_array, i)) != NULL)
-      {
-       fd      = launch_data_get_fd(tmp);
-       addrlen = sizeof(addr);
-
-       if (getsockname(fd, (struct sockaddr *)&addr, &addrlen))
-       {
-         cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get local address for listener #%d: %s", (int)i + 1, strerror(errno));
-         continue;
-       }
-
-        cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Listener #%d at fd %d, \"%s\".", (int)i + 1, fd, httpAddrString(&addr, s, sizeof(s)));
-
-       /*
-       * Try to match the launchd socket address to one of the listeners...
-       */
-
-       for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
-            lis;
-            lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
-         if (httpAddrEqual(&lis->address, &addr))
-           break;
-
-       /*
-       * Add a new listener If there's no match...
-       */
-
-       if (lis)
-       {
-         cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Matched existing listener #%d to %s.", (int)i + 1, httpAddrString(&(lis->address), s, sizeof(s)));
-       }
-       else
-       {
-         cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Adding new listener #%d for %s.", (int)i + 1, httpAddrString(&addr, s, sizeof(s)));
-
-         if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
-         {
-           cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to allocate listener: %s.", strerror(errno));
-           exit(EXIT_FAILURE);
-         }
-
-         cupsArrayAdd(Listeners, lis);
-
-         memcpy(&lis->address, &addr, sizeof(lis->address));
-       }
-
-       lis->fd        = fd;
-        lis->on_demand = 1;
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: %d listeners.", (int)count);
 
-#    ifdef HAVE_SSL
-       if (httpAddrPort(&(lis->address)) == 443)
-         lis->encryption = HTTP_ENCRYPT_ALWAYS;
-#    endif /* HAVE_SSL */
-      }
-    }
-  }
+  for (i = 0; i < count; i ++)
+    service_add_listener(ld_sockets[i], (int)i);
 
-  launch_data_free(ld_msg);
-  launch_data_free(ld_resp);
+  free(ld_sockets);
 
-#  else /* HAVE_SYSTEMD */
+#  elif defined(HAVE_SYSTEMD)
   int                  i,              /* Looping var */
                        count;          /* Number of listeners */
-  cupsd_listener_t     *lis;           /* Listeners array */
-  http_addr_t          addr;           /* Address variable */
-  socklen_t            addrlen;        /* Length of address */
-  char                 s[256];         /* String addresss */
 
 
   cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: pid=%d", (int)getpid());
@@ -2058,58 +1955,52 @@ service_checkin(void)
   cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: %d listeners.", count);
 
   for (i = 0; i < count; i ++)
-  {
-   /*
-    * Get the launchd socket address...
-    */
-
-    addrlen = sizeof(addr);
+    service_add_listener(SD_LISTEN_FDS_START + i, i);
 
-    if (getsockname(SD_LISTEN_FDS_START + i, (struct sockaddr *)&addr, &addrlen))
-    {
-      cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get local address for listener #%d: %s", (int)i + 1, strerror(errno));
-      continue;
-    }
+#  elif defined(HAVE_UPSTART)
+  const char           *e;             /* Environment var */
+  int                  fd;             /* File descriptor */
 
-    cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Listener #%d at fd %d, \"%s\".", (int)i + 1, SD_LISTEN_FDS_START + i, httpAddrString(&addr, s, sizeof(s)));
 
-    for (lis = (cupsd_listener_t *)cupsArrayFirst(Listeners);
-        lis;
-        lis = (cupsd_listener_t *)cupsArrayNext(Listeners))
-      if (httpAddrEqual(&lis->address, &addr))
-       break;
+  if (!(e = getenv("UPSTART_EVENTS")))
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: We did not get started via Upstart.");
+    exit(EXIT_FAILURE);
+    return;
+  }
 
-   /*
-    * Add a new listener if there's no match...
-    */
+  if (strcasecmp(e, "socket"))
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: We did not get triggered via an Upstart socket event.");
+    exit(EXIT_FAILURE);
+    return;
+  }
 
-    if (lis)
-    {
-      cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Matched existing listener #%d to %s.", (int)i + 1, httpAddrString(&(lis->address), s, sizeof(s)));
-    }
-    else
-    {
-      cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: Adding new listener #%d for %s.", (int)i + 1, httpAddrString(&addr, s, sizeof(s)));
+  if ((e = getenv("UPSTART_FDS")) == NULL)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to get listener sockets from UPSTART_FDS.");
+    exit(EXIT_FAILURE);
+    return;
+  }
 
-      if ((lis = calloc(1, sizeof(cupsd_listener_t))) == NULL)
-      {
-       cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Unable to allocate listener: %s", strerror(errno));
-       exit(EXIT_FAILURE);
-      }
+  cupsdLogMessage(CUPSD_LOG_DEBUG, "service_checkin: UPSTART_FDS=%s", e);
 
-      cupsArrayAdd(Listeners, lis);
+  fd = (int)strtol(e, NULL, 10);
+  if (fd < 0)
+  {
+    cupsdLogMessage(CUPSD_LOG_ERROR, "service_checkin: Could not parse UPSTART_FDS: %s", strerror(errno));
+    exit(EXIT_FAILURE);
+    return;
+  }
 
-      memcpy(&lis->address, &addr, sizeof(lis->address));
-    }
+ /*
+  * Upstart only supportst a single on-demand socket file descriptor...
+  */
 
-    lis->fd        = SD_LISTEN_FDS_START + i;
-    lis->on_demand = 1;
+  service_add_listener(fd, 0);
 
-#    ifdef HAVE_SSL
-    if (httpAddrPort(&(lis->address)) == 443)
-      lis->encryption = HTTP_ENCRYPT_ALWAYS;
-#    endif /* HAVE_SSL */
-  }
+#  else
+#    error "Error: defined HAVE_ONDEMAND but no launchd/systemd/upstart selection"
 #  endif /* HAVE_LAUNCH_ACTIVATE_SOCKET */
 }
 
@@ -2131,6 +2022,7 @@ service_checkout(void)
 
   if (cupsArrayCount(ActiveJobs) ||    /* Active jobs */
       WebInterface ||                  /* Web interface enabled */
+      NeedReload ||                    /* Doing a reload */
       (Browsing && BrowseLocalProtocols && cupsArrayCount(Printers)))
                                        /* Printers being shared */
   {
@@ -2146,7 +2038,7 @@ service_checkout(void)
     unlink(CUPS_KEEPALIVE);
   }
 }
-#endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */
+#endif /* HAVE_ONDEMAND */
 
 
 /*
@@ -2165,14 +2057,11 @@ usage(int status)                       /* O - Exit status */
   _cupsLangPuts(fp, _("  -f                      Run in the foreground."));
   _cupsLangPuts(fp, _("  -F                      Run in the foreground but detach from console."));
   _cupsLangPuts(fp, _("  -h                      Show this usage message."));
+#ifdef HAVE_ONDEMAND
   _cupsLangPuts(fp, _("  -l                      Run cupsd on demand."));
+#endif /* HAVE_ONDEMAND */
   _cupsLangPuts(fp, _("  -s cups-files.conf      Set cups-files.conf file to use."));
   _cupsLangPuts(fp, _("  -t                      Test the configuration file."));
 
   exit(status);
 }
-
-
-/*
- * End of "$Id: main.c 13087 2016-02-12 18:53:24Z msweet $".
- */
index 078953d..4631c94 100644 (file)
@@ -1,15 +1,13 @@
 /*
- * "$Id: mime-private.h 3411 2011-09-07 22:31:27Z msweet $"
+ * Private MIME type/conversion database definitions for CUPS.
  *
- *   Private MIME type/conversion database definitions for CUPS.
+ * Copyright 2011 by Apple Inc.
  *
- *   Copyright 2011 by Apple Inc.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #ifndef _CUPS_MIME_PRIVATE_H_
@@ -39,7 +37,3 @@ extern void   _mimeError(mime_t *mime, const char *format, ...)
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_MIME_PRIVATE_H_ */
-
-/*
- * End of "$Id: mime-private.h 3411 2011-09-07 22:31:27Z msweet $".
- */
index 29d3ebc..5d2c198 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: mime.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * MIME database file routines for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -932,8 +930,3 @@ mime_load_types(mime_t     *mime,   /* I - MIME database */
 
   cupsFileClose(fp);
 }
-
-
-/*
- * End of "$Id: mime.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index ddd3283..f536a68 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: mime.h 11272 2013-09-10 19:15:36Z msweet $"
+ * MIME type/conversion database definitions for CUPS.
  *
- *   MIME type/conversion database definitions for CUPS.
+ * Copyright 2007-2013 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 #ifndef _CUPS_MIME_H_
@@ -159,7 +157,3 @@ extern void         mimeSetErrorCallback(mime_t *mime, mime_error_cb_t cb,
 }
 #  endif /* __cplusplus */
 #endif /* !_CUPS_MIME_H_ */
-
-/*
- * End of "$Id: mime.h 11272 2013-09-10 19:15:36Z msweet $".
- */
index 18f9b7c..679f92f 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: network.c 11497 2014-01-06 21:59:35Z msweet $"
- *
  * Network interface functions for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -295,8 +293,3 @@ compare_netif(cupsd_netif_t *a,             /* I - First network interface */
 {
   return (strcmp(a->name, b->name));
 }
-
-
-/*
- * End of "$Id: network.c 11497 2014-01-06 21:59:35Z msweet $".
- */
index 411a6d2..8373d8b 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: network.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Network interface definitions for the CUPS scheduler.
  *
- *   Network interface definitions for the CUPS scheduler.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   "LICENSE" which should have been included with this file.  If this
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * "LICENSE" which should have been included with this file.  If this
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -45,8 +43,3 @@ VAR cups_array_t      *NetIFList      VALUE(NULL);
 
 extern cupsd_netif_t   *cupsdNetIFFind(const char *name);
 extern void            cupsdNetIFUpdate(void);
-
-
-/*
- * End of "$Id: network.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index b9883d4..9a68b1a 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: policy.c 11681 2014-03-05 19:07:24Z msweet $"
- *
  * Policy routines for the CUPS scheduler.
  *
  * Copyright 2007-2011, 2014 by Apple Inc.
@@ -500,8 +498,3 @@ hash_op(cupsd_location_t *op)               /* I - Operation */
 {
   return (((op->op >> 6) & 0x40) | (op->op & 0x3f));
 }
-
-
-/*
- * End of "$Id: policy.c 11681 2014-03-05 19:07:24Z msweet $".
- */
index 8af88f5..3e4ad81 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: policy.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Policy definitions for the CUPS scheduler.
  *
- *   Policy definitions for the CUPS scheduler.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 
@@ -56,8 +54,3 @@ extern cups_array_t   *cupsdGetPrivateAttrs(cupsd_policy_t *p,
                                              cupsd_client_t *con,
                                              cupsd_printer_t *printer,
                                              const char *owner);
-
-
-/*
- * End of "$Id: policy.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 61956b7..7aa7bd8 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: printers.c 12733 2015-06-12 01:21:05Z msweet $"
- *
  * Printer routines for the CUPS scheduler.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -50,7 +48,7 @@ static int    compare_printers(void *first, void *second, void *data);
 static void    delete_printer_filters(cupsd_printer_t *p);
 static void    dirty_printer(cupsd_printer_t *p);
 static void    load_ppd(cupsd_printer_t *p);
-static ipp_t   *new_media_col(_pwg_size_t *size, const char *source,
+static ipp_t   *new_media_col(pwg_size_t *size, const char *source,
                               const char *type);
 static void    write_xml_string(cups_file_t *fp, const char *s);
 
@@ -84,6 +82,8 @@ cupsdAddPrinter(const char *name)     /* I - Name of printer */
     return (NULL);
   }
 
+  _cupsRWInit(&p->lock);
+
   cupsdSetString(&p->name, name);
   cupsdSetString(&p->info, name);
   cupsdSetString(&p->hostname, ServerName);
@@ -744,6 +744,42 @@ cupsdDeletePrinter(
   cupsdDeregisterPrinter(p, 1);
 
  /*
+  * Remove support files if this is a temporary queue and deregister color
+  * profiles...
+  */
+
+  if (p->temporary)
+  {
+    char       filename[1024];         /* Script/PPD filename */
+
+   /*
+    * Remove any old PPD or script files...
+    */
+
+    snprintf(filename, sizeof(filename), "%s/interfaces/%s", ServerRoot, p->name);
+    unlink(filename);
+    snprintf(filename, sizeof(filename), "%s/interfaces/%s.O", ServerRoot, p->name);
+    unlink(filename);
+
+    snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd", ServerRoot, p->name);
+    unlink(filename);
+    snprintf(filename, sizeof(filename), "%s/ppd/%s.ppd.O", ServerRoot, p->name);
+    unlink(filename);
+
+    snprintf(filename, sizeof(filename), "%s/%s.png", CacheDir, p->name);
+    unlink(filename);
+
+    snprintf(filename, sizeof(filename), "%s/%s.data", CacheDir, p->name);
+    unlink(filename);
+
+   /*
+    * Unregister color profiles...
+    */
+
+    cupsdUnregisterColor(p);
+  }
+
+ /*
   * Free all memory used by the printer...
   */
 
@@ -1413,10 +1449,10 @@ cupsdSaveAllPrinters(void)
        printer = (cupsd_printer_t *)cupsArrayNext(Printers))
   {
    /*
-    * Skip printer classes...
+    * Skip printer classes and temporary queues...
     */
 
-    if (printer->type & CUPS_PRINTER_CLASS)
+    if ((printer->type & CUPS_PRINTER_CLASS) || printer->temporary)
       continue;
 
    /*
@@ -2157,6 +2193,8 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
   if (!CommonData)
     cupsdCreateCommonData();
 
+  _cupsRWLockWrite(&p->lock);
+
  /*
   * Clear out old filters, if any...
   */
@@ -2344,37 +2382,19 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
     }
     else if (!(p->type & CUPS_PRINTER_REMOTE))
     {
-      char     interface[1024];        /* Interface script */
-
-
-      snprintf(interface, sizeof(interface), "%s/interfaces/%s", ServerRoot,
-              p->name);
-      if (!access(interface, X_OK))
-      {
-       /*
-       * Yes, we have a System V style interface script; use it!
-       */
-
-       snprintf(interface, sizeof(interface), "*/* 0 %s/interfaces/%s",
-                ServerRoot, p->name);
-       add_printer_filter(p, p->filetype, interface);
-      }
-      else
-      {
-       /*
-       * Add a filter from application/vnd.cups-raw to printer/name to
-       * handle "raw" printing by users.
-       */
+     /*
+      * Add a filter from application/vnd.cups-raw to printer/name to
+      * handle "raw" printing by users.
+      */
 
-       add_printer_filter(p, p->filetype, "application/vnd.cups-raw 0 -");
+      add_printer_filter(p, p->filetype, "application/vnd.cups-raw 0 -");
 
-       /*
-       * Add a PostScript filter, since this is still possibly PS printer.
-       */
+     /*
+      * Add a PostScript filter, since this is still possibly PS printer.
+      */
 
-       add_printer_filter(p, p->filetype,
-                          "application/vnd.cups-postscript 0 -");
-      }
+      add_printer_filter(p, p->filetype,
+                        "application/vnd.cups-postscript 0 -");
     }
 
     if (p->pc && p->pc->prefilters)
@@ -2503,6 +2523,8 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
 
   add_printer_defaults(p);
 
+  _cupsRWUnlock(&p->lock);
+
  /*
   * Let the browse protocols reflect the change
   */
@@ -3774,8 +3796,8 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
   int          xdpi,                   /* Horizontal resolution */
                ydpi;                   /* Vertical resolution */
   const char   *resptr;                /* Pointer into resolution keyword */
-  _pwg_size_t  *pwgsize;               /* Current PWG size */
-  _pwg_map_t   *pwgsource,             /* Current PWG source */
+  pwg_size_t   *pwgsize;               /* Current PWG size */
+  pwg_map_t    *pwgsource,             /* Current PWG source */
                *pwgtype;               /* Current PWG type */
   ipp_attribute_t *attr;               /* Attribute data */
   _ipp_value_t *val;                   /* Attribute value */
@@ -3787,6 +3809,12 @@ load_ppd(cupsd_printer_t *p)             /* I - Printer */
                margins[16];            /* media-*-margin-supported values */
   const char   *filter,                /* Current filter */
                *mandatory;             /* Current mandatory attribute */
+  static const char * const pwg_raster_document_types[] =
+               {
+                 "black_1",
+                 "sgray_8",
+                 "srgb_8"
+               };
   static const char * const sides[3] = /* sides-supported values */
                {
                  "one-sided",
@@ -4391,6 +4419,7 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
                     "print-color-mode-supported", 2, NULL, color_modes);
       ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
                    "print-color-mode-default", NULL, "color");
+      ippAddStrings(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "pwg-raster-document-type-supported", 3, NULL, pwg_raster_document_types);
     }
     else
     {
@@ -4398,6 +4427,7 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
                    "print-color-mode-supported", NULL, "monochrome");
       ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
                    "print-color-mode-default", NULL, "monochrome");
+      ippAddStrings(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "pwg-raster-document-type-supported", 2, NULL, pwg_raster_document_types);
     }
 
    /*
@@ -4435,10 +4465,7 @@ load_ppd(cupsd_printer_t *p)             /* I - Printer */
       * Report all supported resolutions...
       */
 
-      attr = ippAddResolutions(p->ppd_attrs, IPP_TAG_PRINTER,
-                               "printer-resolution-supported",
-                               resolution->num_choices, IPP_RES_PER_INCH,
-                              NULL, NULL);
+      attr = ippAddResolutions(p->ppd_attrs, IPP_TAG_PRINTER, "printer-resolution-supported", resolution->num_choices, IPP_RES_PER_INCH, NULL, NULL);
 
       for (i = 0, choice = resolution->choices;
            i < resolution->num_choices;
@@ -4461,9 +4488,10 @@ load_ppd(cupsd_printer_t *p)             /* I - Printer */
         attr->values[i].resolution.units = IPP_RES_PER_INCH;
 
         if (choice->marked)
-         ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER,
-                          "printer-resolution-default", IPP_RES_PER_INCH,
-                          xdpi, ydpi);
+         ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER, "printer-resolution-default", IPP_RES_PER_INCH, xdpi, ydpi);
+
+        if (i == 0)
+         ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER, "pwg-raster-document-resolution-supported", IPP_RES_PER_INCH, xdpi, ydpi);
       }
     }
     else if ((ppd_attr = ppdFindAttr(ppd, "DefaultResolution", NULL)) != NULL &&
@@ -4496,6 +4524,7 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
       ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER,
                       "printer-resolution-supported", IPP_RES_PER_INCH,
                       xdpi, ydpi);
+      ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER, "pwg-raster-document-resolution-supported", IPP_RES_PER_INCH, xdpi, ydpi);
     }
     else
     {
@@ -4509,6 +4538,7 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
       ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER,
                       "printer-resolution-supported", IPP_RES_PER_INCH,
                       300, 300);
+      ippAddResolution(p->ppd_attrs, IPP_TAG_PRINTER, "pwg-raster-document-resolution-supported", IPP_RES_PER_INCH, 300, 300);
     }
 
    /*
@@ -4528,6 +4558,8 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
     {
       p->type |= CUPS_PRINTER_DUPLEX;
 
+      ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD, "pwg-raster-document-sheet-back", NULL, "normal");
+
       ippAddStrings(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
                    "sides-supported", 3, NULL, sides);
 
@@ -4881,32 +4913,13 @@ load_ppd(cupsd_printer_t *p)            /* I - Printer */
   }
   else
   {
-   /*
-    * If we have an interface script, add a filter entry for it...
-    */
-
-    char       interface[1024];        /* Interface script */
-
-
-    snprintf(interface, sizeof(interface), "%s/interfaces/%s", ServerRoot,
-            p->name);
-    if (!access(interface, X_OK))
-    {
-     /*
-      * Yes, we have a System V style interface script; use it!
-      */
-
-      ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT,
-                  "printer-make-and-model", NULL,
-                  "Local System V Printer");
-    }
-    else if (((!strncmp(p->device_uri, "ipp://", 6) ||
-               !strncmp(p->device_uri, "ipps://", 7)) &&
-             (strstr(p->device_uri, "/printers/") != NULL ||
-              strstr(p->device_uri, "/classes/") != NULL)) ||
-            ((strstr(p->device_uri, "._ipp.") != NULL ||
-              strstr(p->device_uri, "._ipps.") != NULL) &&
-             !strcmp(p->device_uri + strlen(p->device_uri) - 5, "/cups")))
+    if (((!strncmp(p->device_uri, "ipp://", 6) ||
+         !strncmp(p->device_uri, "ipps://", 7)) &&
+        (strstr(p->device_uri, "/printers/") != NULL ||
+         strstr(p->device_uri, "/classes/") != NULL)) ||
+       ((strstr(p->device_uri, "._ipp.") != NULL ||
+         strstr(p->device_uri, "._ipps.") != NULL) &&
+        !strcmp(p->device_uri + strlen(p->device_uri) - 5, "/cups")))
     {
      /*
       * Tell the client this is really a hard-wired remote printer.
@@ -4999,7 +5012,7 @@ load_ppd(cupsd_printer_t *p)              /* I - Printer */
  */
 
 static ipp_t *                         /* O - Collection value */
-new_media_col(_pwg_size_t *size,       /* I - media-size/margin values */
+new_media_col(pwg_size_t *size,        /* I - media-size/margin values */
               const char  *source,     /* I - media-source value */
               const char  *type)       /* I - media-type value */
 {
@@ -5075,8 +5088,3 @@ write_xml_string(cups_file_t *fp, /* I - File to write to */
   if (s > start)
     cupsFilePuts(fp, start);
 }
-
-
-/*
- * End of "$Id: printers.c 12733 2015-06-12 01:21:05Z msweet $".
- */
index 27db750..3a27544 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: printers.h 12666 2015-05-25 19:38:09Z msweet $"
- *
  * Printer definitions for the CUPS scheduler.
  *
- * Copyright 2007-2013 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -59,6 +57,7 @@ typedef struct cupsd_job_s cupsd_job_t;
 
 struct cupsd_printer_s
 {
+  _cups_rwlock_t lock;                 /* Concurrency lock for background updates */
   char         *uri,                   /* Printer URI */
                *uuid,                  /* Printer UUID */
                *hostname,              /* Host printer resides on */
@@ -73,6 +72,7 @@ struct cupsd_printer_s
                *error_policy;          /* Error policy */
   cupsd_policy_t *op_policy_ptr;       /* Pointer to operation policy */
   int          shared;                 /* Shared? */
+  int          temporary;              /* Temporary queue? */
   int          accepting;              /* Accepting jobs? */
   int          holding_new_jobs;       /* Holding new jobs for printing? */
   int          in_implicit_class;      /* In an implicit class? */
@@ -191,8 +191,3 @@ extern const char   *cupsdValidateDest(const char *uri,
                                           cups_ptype_t *dtype,
                                           cupsd_printer_t **printer);
 extern void            cupsdWritePrintcap(void);
-
-
-/*
- * End of "$Id: printers.h 12666 2015-05-25 19:38:09Z msweet $".
- */
index 19c7472..aa1fe96 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: process.c 12521 2015-02-17 20:00:17Z msweet $"
- *
  * Process management routines for the CUPS scheduler.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -341,7 +339,7 @@ cupsdCreateProfile(int job_id,              /* I - Job ID or 0 for none */
     /* Only allow SNMP (UDP) and LPD (TCP) off the machine... */
     cupsFilePuts(fp, ")\n");
     cupsFilePuts(fp, "(allow network-outbound\n"
-                    "       (remote udp \"*:161\")"
+                    "       (remote udp \"*:161\")\n"
                     "       (remote tcp \"*:515\"))\n");
     cupsFilePuts(fp, "(allow network-inbound\n"
                     "       (local udp \"localhost:*\"))\n");
@@ -516,7 +514,7 @@ cupsdStartProcess(
   if (envp)
   {
    /*
-    * Add special voodoo magic for OS X - this allows OS X programs to access
+    * Add special voodoo magic for macOS - this allows macOS programs to access
     * their bundle resources properly...
     */
 
@@ -887,8 +885,3 @@ cupsd_requote(char       *dst,              /* I - Destination buffer */
   return (dst);
 }
 #endif /* HAVE_SANDBOX_H */
-
-
-/*
- * End of "$Id: process.c 12521 2015-02-17 20:00:17Z msweet $".
- */
index ae8b88f..21c41f6 100644 (file)
@@ -1,24 +1,14 @@
 /*
- * "$Id: quotas.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Quota routines for the CUPS scheduler.
  *
- *   Quota routines for the CUPS scheduler.
+ * Copyright 2007-2011 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products.
  *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   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/".
- *
- * Contents:
- *
- *   cupsdFindQuota()   - Find a quota record.
- *   cupsdFreeQuotas()  - Free quotas for a printer.
- *   cupsdUpdateQuota() - Update quota data for the specified printer and user.
- *   add_quota()        - Add a quota record for this printer and user.
- *   compare_quotas()   - Compare two quota records...
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -237,8 +227,3 @@ compare_quotas(const cupsd_quota_t *q1,     /* I - First quota record */
 {
   return (_cups_strcasecmp(q1->username, q2->username));
 }
-
-
-/*
- * End of "$Id: quotas.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 357cc40..d8d7e19 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: select.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * Select abstraction functions for the CUPS scheduler.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 2006-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -44,7 +42,7 @@
  *     FreeBSD         YES     YES     NO      YES     NO
  *     HP-UX           YES     YES     NO      NO      NO
  *     Linux           YES     YES     YES     NO      NO
- *     MacOS X         YES     YES     NO      YES     NO
+ *     macOS           YES     YES     NO      YES     NO
  *     NetBSD          YES     YES     NO      YES     NO
  *     OpenBSD         YES     YES     NO      YES     NO
  *     Solaris         YES     YES     NO      NO      YES
@@ -927,8 +925,3 @@ find_fd(int fd)                             /* I - File descriptor */
 
   return (fdptr);
 }
-
-
-/*
- * End of "$Id: select.c 11594 2014-02-14 20:09:01Z msweet $".
- */
index 37001de..eb77dc9 100644 (file)
@@ -1,21 +1,14 @@
 /*
- * "$Id: server.c 12689 2015-06-03 19:49:54Z msweet $"
+ * Server start/stop routines for the CUPS scheduler.
  *
- *   Server start/stop routines for the CUPS scheduler.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   cupsdStartServer() - Start the server.
- *   cupsdStopServer()  - Stop the server.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -180,8 +173,3 @@ cupsdStopServer(void)
 
   started = 0;
 }
-
-
-/*
- * End of "$Id: server.c 12689 2015-06-03 19:49:54Z msweet $".
- */
index b608b15..4ea37be 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: statbuf.c 11594 2014-02-14 20:09:01Z msweet $"
- *
  * Status buffer routines for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -321,8 +319,3 @@ cupsdStatBufUpdate(
 
   return (line);
 }
-
-
-/*
- * End of "$Id: statbuf.c 11594 2014-02-14 20:09:01Z msweet $".
- */
index 68bf206..5bf6bea 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: statbuf.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Status buffer definitions for the CUPS scheduler.
  *
- *   Status buffer definitions for the CUPS scheduler.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2005 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2005 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 
@@ -42,8 +40,3 @@ extern void           cupsdStatBufDelete(cupsd_statbuf_t *sb);
 extern cupsd_statbuf_t *cupsdStatBufNew(int fd, const char *prefix, ...);
 extern char            *cupsdStatBufUpdate(cupsd_statbuf_t *sb, int *loglevel,
                                            char *line, int linelen);
-
-
-/*
- * End of "$Id: statbuf.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index cf8a90d..52e12af 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: subscriptions.c 13040 2016-01-11 20:29:13Z msweet $"
- *
  * Subscription routines for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -1614,8 +1612,3 @@ cupsd_update_notifier(void)
       break;
   }
 }
-
-
-/*
- * End of "$Id: subscriptions.c 13040 2016-01-11 20:29:13Z msweet $".
- */
index 867a1c6..159db2a 100644 (file)
@@ -1,16 +1,14 @@
 /*
- * "$Id: subscriptions.h 10996 2013-05-29 11:51:34Z msweet $"
+ * Subscription definitions for the CUPS scheduler.
  *
- *   Subscription definitions for the CUPS scheduler.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -159,8 +157,3 @@ extern void cupsdExpireSubscriptions(cupsd_printer_t *dest,
 extern void    cupsdLoadAllSubscriptions(void);
 extern void    cupsdSaveAllSubscriptions(void);
 extern void    cupsdStopAllNotifiers(void);
-
-
-/*
- * End of "$Id: subscriptions.h 10996 2013-05-29 11:51:34Z msweet $".
- */
index 63b51a9..4eddd1a 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: sysman.c 12236 2014-11-03 04:08:41Z msweet $"
- *
  * System management functions for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
  * and state files to minimize the number of times the disk has to spin
  * up or flash to be written to.
  *
- * Power management support is currently only implemented on OS X, but
+ * Power management support is currently only implemented on macOS, but
  * essentially we use four functions to let the OS know when it is OK to
  * put the system to sleep, typically when we are not in the middle of
- * printing a job.  And on OS X we can also "sleep print" - basically the
+ * printing a job.  And on macOS we can also "sleep print" - basically the
  * system only wakes up long enough to service network requests and process
  * print jobs.
  */
@@ -1069,8 +1067,3 @@ sysUpdateNames(void)
     cupsdRegisterPrinter(p);
 }
 #endif /* __APPLE__ */
-
-
-/*
- * End of "$Id: sysman.c 12236 2014-11-03 04:08:41Z msweet $".
- */
index 9da386d..651bc05 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: sysman.h 12140 2014-08-30 01:51:22Z msweet $"
- *
  * System management definitions for the CUPS scheduler.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -59,8 +57,3 @@ extern void   cupsdMarkDirty(int what);
 extern void    cupsdSetBusyState(void);
 extern void    cupsdStartSystemMonitor(void);
 extern void    cupsdStopSystemMonitor(void);
-
-
-/*
- * End of "$Id: sysman.h 12140 2014-08-30 01:51:22Z msweet $".
- */
index a614ec4..79b0ab0 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testlpd.c 12644 2015-05-19 21:22:35Z msweet $"
- *
  * cups-lpd test program for CUPS.
  *
  * Copyright 2007-2015 by Apple Inc.
@@ -532,8 +530,3 @@ usage(void)
 
   exit(0);
 }
-
-
-/*
- * End of "$Id: testlpd.c 12644 2015-05-19 21:22:35Z msweet $".
- */
index 0271309..c1f2b60 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testmime.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * MIME test program for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -516,8 +514,3 @@ type_dir(mime_t     *mime,          /* I - MIME database */
 
   cupsDirClose(dir);
 }
-
-
-/*
- * End of "$Id: testmime.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 9b443cb..2034016 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testspeed.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Scheduler speed test for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -372,9 +370,3 @@ usage(void)
        "[-E] hostname[:port]");
   exit(0);
 }
-
-
-
-/*
- * End of "$Id: testspeed.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 97a3a83..2475f34 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: testsub.c 11889 2014-05-22 13:54:15Z msweet $"
- *
  * Scheduler notification tester for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -501,9 +499,3 @@ usage(void)
   puts("Usage: testsub [-E] [-e event ... -e eventN] [-h hostname] URI");
   exit(0);
 }
-
-
-
-/*
- * End of "$Id: testsub.c 11889 2014-05-22 13:54:15Z msweet $".
- */
index a31be2e..ac078bd 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: util.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Mini-daemon utility functions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -158,7 +156,7 @@ cupsdCreateStringsArray(const char *s)      /* I - Comma-delimited strings */
 /*
  * 'cupsdExec()' - Run a program with the correct environment.
  *
- * On OS X, we need to update the CFProcessPath environment variable that
+ * On macOS, we need to update the CFProcessPath environment variable that
  * is passed in the environment so the child can access its bundled resources.
  */
 
@@ -175,7 +173,7 @@ cupsdExec(const char *command,              /* I - Full path to program */
 
 
  /*
-  * Some OS X programs are bundled and need the CFProcessPath environment
+  * Some macOS programs are bundled and need the CFProcessPath environment
   * variable defined.  If the command is a symlink, resolve the link and point
   * to the resolved location, otherwise, use the command path itself.
   */
@@ -452,8 +450,3 @@ cupsdSendIPPTrailer(void)
   putchar(IPP_TAG_END);
   fflush(stdout);
 }
-
-
-/*
- * End of "$Id: util.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 08b495c..241c1e8 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: util.h 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Mini-daemon utility definitions for CUPS.
  *
  * Copyright 2007-2014 by Apple Inc.
@@ -65,7 +63,3 @@ extern void           cupsdSendIPPTrailer(void);
 #  endif /* __cplusplus */
 
 #endif /* !_CUPSD_UTIL_H_ */
-
-/*
- * End of "$Id: util.h 11558 2014-02-06 18:33:34Z msweet $".
- */
index effbf99..a1fc7f6 100644 (file)
@@ -4,86 +4,84 @@ cancel.o: cancel.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 cupsaccept.o: cupsaccept.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 cupsaddsmb.o: cupsaddsmb.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/adminutil.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/adminutil.h
 cupsctl.o: cupsctl.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/adminutil.h
+  ../cups/thread-private.h ../cups/adminutil.h
 cupstestdsc.o: cupstestdsc.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 cupstestppd.o: cupstestppd.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/dir.h ../cups/raster.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/dir.h ../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
 lp.o: lp.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 lpadmin.o: lpadmin.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h
 lpinfo.o: lpinfo.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/adminutil.h
 lpmove.o: lpmove.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 lpoptions.o: lpoptions.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/ppd-private.h ../cups/ppd.h \
+  ../cups/raster.h
 lpstat.o: lpstat.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
index 62b9da7..a27f38b 100644 (file)
@@ -1,6 +1,4 @@
 #
-# "$Id: Makefile 11776 2014-03-28 19:16:05Z msweet $"
-#
 # System V commands makefile for CUPS.
 #
 # Copyright 2007-2014 by Apple Inc.
@@ -276,8 +274,3 @@ lpstat:     lpstat.o ../cups/$(LIBCUPS)
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 11776 2014-03-28 19:16:05Z msweet $".
-#
index 3881102..e72822a 100644 (file)
@@ -1,20 +1,14 @@
 /*
- * "$Id: cancel.c 12247 2014-11-12 16:23:39Z msweet $"
+ * "cancel" command for CUPS.
  *
- *   "cancel" command for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main() - Parse options and cancel jobs.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -37,7 +31,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
   int          job_id;                 /* Job ID */
   int          num_dests;              /* Number of destinations */
   cups_dest_t  *dests;                 /* Destinations */
-  char         *dest,                  /* Destination printer */
+  char         *opt,                   /* Option pointer */
+               *dest,                  /* Destination printer */
                *job,                   /* Job ID pointer */
                *user;                  /* Cancel jobs for a user */
   int          purge;                  /* Purge or cancel jobs? */
@@ -67,102 +62,106 @@ main(int  argc,                           /* I - Number of command-line arguments */
   */
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-' && argv[i][1])
     {
-      switch (argv[i][1])
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'E' : /* Encrypt */
+       switch (*opt)
+       {
+         case 'E' : /* Encrypt */
 #ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 
-           if (http)
-             httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
+             if (http)
+               httpEncryption(http, HTTP_ENCRYPT_REQUIRED);
 #else
-            _cupsLangPrintf(stderr,
-                           _("%s: Sorry, no encryption support."), argv[0]);
+             _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
 #endif /* HAVE_SSL */
-           break;
-
-        case 'U' : /* Username */
-           if (argv[i][2] != '\0')
-             cupsSetUser(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+             break;
+
+         case 'U' : /* Username */
+             if (opt[1] != '\0')
+             {
+               cupsSetUser(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after "
-                                 "\"-U\" option."), argv[0]);
-               return (1);
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
+                 return (1);
+               }
+
+               cupsSetUser(argv[i]);
              }
+             break;
 
-              cupsSetUser(argv[i]);
-           }
-           break;
+         case 'a' : /* Cancel all jobs */
+             op = purge ? IPP_PURGE_JOBS : IPP_CANCEL_JOBS;
+             break;
 
-        case 'a' : /* Cancel all jobs */
-           op = purge ? IPP_PURGE_JOBS : IPP_CANCEL_JOBS;
-           break;
+         case 'h' : /* Connect to host */
+             if (http != NULL)
+             {
+               httpClose(http);
+               http = NULL;
+             }
 
-        case 'h' : /* Connect to host */
-           if (http != NULL)
-           {
-             httpClose(http);
-             http = NULL;
-           }
+             if (opt[1] != '\0')
+             {
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
+                 return (1);
+               }
+               else
+                 cupsSetServer(argv[i]);
+             }
+             break;
 
-           if (argv[i][2] != '\0')
-              cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
+         case 'u' : /* Username */
+             op = IPP_CANCEL_MY_JOBS;
 
-             if (i >= argc)
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected hostname after "
-                                 "\"-h\" option."), argv[0]);
-               return (1);
-              }
+               user = opt + 1;
+               opt += strlen(opt) - 1;
+             }
              else
-                cupsSetServer(argv[i]);
-           }
-           break;
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-u\" option."), argv[0]);
+                 return (1);
+               }
+               else
+                 user = argv[i];
+             }
+             break;
 
-        case 'u' : /* Username */
-           op = IPP_CANCEL_MY_JOBS;
+         case 'x' : /* Purge job(s) */
+             purge = 1;
 
-           if (argv[i][2] != '\0')
-             user = argv[i] + 2;
-           else
-           {
-             i ++;
+             if (op == IPP_CANCEL_JOBS)
+               op = IPP_PURGE_JOBS;
+             break;
 
-             if (i >= argc)
-             {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after "
-                                 "\"-u\" option."), argv[0]);
-               return (1);
-              }
-             else
-               user = argv[i];
-           }
-           break;
-
-        case 'x' : /* Purge job(s) */
-           purge = 1;
-
-           if (op == IPP_CANCEL_JOBS)
-             op = IPP_PURGE_JOBS;
-           break;
-
-       default :
-           _cupsLangPrintf(stderr,
-                           _("%s: Error - unknown option \"%c\"."),
-                           argv[0], argv[i][1]);
-           return (1);
+         default :
+             _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
+             return (1);
+       }
       }
     }
     else
@@ -288,7 +287,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
                      "requesting-user-name", NULL, cupsUser());
 
       if (purge)
-       ippAddBoolean(request, IPP_TAG_OPERATION, "purge-jobs", purge);
+       ippAddBoolean(request, IPP_TAG_OPERATION, "purge-jobs", (char)purge);
 
      /*
       * Do the request and get back a response...
@@ -314,6 +313,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
       ippDelete(response);
     }
+  }
 
   if (num_dests == 0 && op != IPP_CANCEL_JOB)
   {
@@ -354,7 +354,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
       ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
                    "requesting-user-name", NULL, cupsUser());
 
-    ippAddBoolean(request, IPP_TAG_OPERATION, "purge-jobs", purge);
+    ippAddBoolean(request, IPP_TAG_OPERATION, "purge-jobs", (char)purge);
 
    /*
     * Do the request and get back a response...
@@ -380,8 +380,3 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: cancel.c 12247 2014-11-12 16:23:39Z msweet $".
- */
index 67a682c..27f379d 100644 (file)
@@ -1,21 +1,15 @@
 /*
- * "$Id: cupsaccept.c 2873 2010-11-30 03:16:24Z msweet $"
+ * "cupsaccept", "cupsdisable", "cupsenable", and "cupsreject" commands for
+ * CUPS.
  *
- *   "cupsaccept", "cupsdisable", "cupsenable", and "cupsreject" commands for
- *   CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main() - Parse options and accept/reject jobs or disable/enable printers.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -35,6 +29,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
 {
   int          i;                      /* Looping var */
   char         *command,               /* Command to do */
+               *opt,                   /* Option pointer */
                uri[1024],              /* Printer URI */
                *reason;                /* Reason for reject/disable */
   ipp_t                *request;               /* IPP request */
@@ -76,94 +71,90 @@ main(int  argc,                             /* I - Number of command-line arguments */
   */
 
   for (i = 1; i < argc; i ++)
-    if (argv[i][0] == '-')
+  {
+    if (!strcmp(argv[i], "--hold"))
+      op = IPP_HOLD_NEW_JOBS;
+    else if (!strcmp(argv[i], "--release"))
+      op = IPP_RELEASE_HELD_NEW_JOBS;
+    else if (argv[i][0] == '-')
     {
-      switch (argv[i][1])
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'E' : /* Encrypt */
-#ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
-#else
-            _cupsLangPrintf(stderr,
-                           _("%s: Sorry, no encryption support."), command);
-#endif /* HAVE_SSL */
-           break;
-
-        case 'U' : /* Username */
-           if (argv[i][2] != '\0')
-             cupsSetUser(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+       switch (*opt)
+       {
+         case 'E' : /* Encrypt */
+  #ifdef HAVE_SSL
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+  #else
+             _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), command);
+  #endif /* HAVE_SSL */
+             break;
+
+         case 'U' : /* Username */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after "
-                                 "\"-U\" option."), command);
-               return (1);
+               cupsSetUser(opt + 1);
+               opt += strlen(opt) - 1;
              }
-
-              cupsSetUser(argv[i]);
-           }
-           break;
-           
-        case 'c' : /* Cancel jobs */
-           cancel = 1;
-           break;
-
-        case 'h' : /* Connect to host */
-           if (argv[i][2] != '\0')
-             cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), command);
+                 return (1);
+               }
+
+               cupsSetUser(argv[i]);
+             }
+             break;
+             
+         case 'c' : /* Cancel jobs */
+             cancel = 1;
+             break;
+
+         case 'h' : /* Connect to host */
+             if (opt[1] != '\0')
+             {
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected hostname after "
-                                 "\"-h\" option."), command);
-               return (1);
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), command);
+                 return (1);
+               }
+
+               cupsSetServer(argv[i]);
              }
+             break;
 
-              cupsSetServer(argv[i]);
-           }
-           break;
-
-        case 'r' : /* Reason for cancellation */
-           if (argv[i][2] != '\0')
-             reason = argv[i] + 2;
-           else
-           {
-             i ++;
-             if (i >= argc)
+         case 'r' : /* Reason for cancellation */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected reason text after "
-                                 "\"-r\" option."), command);
-               return (1);
+               reason = opt + 1;
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected reason text after \"-r\" option."), command);
+                 return (1);
+               }
+
+               reason = argv[i];
+             }
+             break;
 
-             reason = argv[i];
-           }
-           break;
-
-        case '-' :
-           if (!strcmp(argv[i], "--hold"))
-             op = IPP_HOLD_NEW_JOBS;
-           else if (!strcmp(argv[i], "--release"))
-             op = IPP_RELEASE_HELD_NEW_JOBS;
-           else
-           {
-             _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%s\"."),
-                             command, argv[i]);
+         default :
+             _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), command, *opt);
              return (1);
-           }
-           break;
-
-       default :
-           _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."),
-                           command, argv[i][1]);
-           return (1);
+       }
       }
     }
     else
@@ -229,11 +220,7 @@ main(int  argc,                            /* I - Number of command-line arguments */
        }
       }
     }
+  }
 
   return (0);
 }
-
-
-/*
- * End of "$Id: cupsaccept.c 2873 2010-11-30 03:16:24Z msweet $".
- */
index 48c99ae..7c28a37 100644 (file)
@@ -1,22 +1,14 @@
 /*
- * "$Id: cupsaddsmb.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "cupsaddsmb" command for CUPS.
  *
- *   "cupsaddsmb" command for CUPS.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 2001-2006 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2001-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main()        - Export printers on the command-line.
- *   export_dest() - Export a destination to SAMBA.
- *   usage()       - Show program usage and exit...
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -292,8 +284,3 @@ usage(void)
 
   exit(1);
 }
-
-
-/*
- * End of "$Id: cupsaddsmb.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 09d66ea..c4e2763 100644 (file)
@@ -1,23 +1,16 @@
 /*
- * "$Id: cupsctl.c 10996 2013-05-29 11:51:34Z msweet $"
+ * Scheduler control program for CUPS.
  *
- *   Scheduler control program for CUPS.
+ * Copyright 2007-2012 by Apple Inc.
+ * Copyright 2006-2007 by Easy Software Products.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006-2007 by Easy Software Products.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main()  - Get/set server settings.
- *   usage() - Show program usage.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -220,8 +213,3 @@ usage(const char *opt)                      /* I - Option character/string */
 
   exit(1);
 }
-
-
-/*
- * End of "$Id: cupsctl.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 5e2c809..a8420b8 100644 (file)
@@ -1,26 +1,18 @@
 /*
- * "$Id: cupstestdsc.c 10996 2013-05-29 11:51:34Z msweet $"
+ * DSC test program for CUPS.
  *
- *   DSC test program for CUPS.
+ * Copyright 2007-2010 by Apple Inc.
+ * Copyright 2006 by Easy Software Products, all rights reserved.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 2006 by Easy Software Products, all rights reserved.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * PostScript is a trademark of Adobe Systems, Inc.
  *
- *   PostScript is a trademark of Adobe Systems, Inc.
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   main()  - Main entry for test program.
- *   check() - Check a file for conformance.
- *   usage() - Show program usage.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -195,7 +187,7 @@ check_file(const char *filename)    /* I - File to read from */
        return (1);
       }
       else
-        version = atof(line + 11);
+        version = (float)atof(line + 11);
     }
     else if (level > 0)
     {
@@ -324,7 +316,7 @@ check_file(const char *filename)    /* I - File to read from */
         saw_trailer = 1;
     }
 
-    for (i = 0; !binary && i < bytes; i ++)
+    for (i = 0; !binary && i < (int)bytes; i ++)
     {
       ch = line[i];
 
@@ -435,8 +427,3 @@ usage(void)
 
   exit(1);
 }
-
-
-/*
- * End of "$Id: cupstestdsc.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 9c6be59..8c48d80 100644 (file)
@@ -1,20 +1,18 @@
 /*
- * "$Id: cupstestppd.c 12583 2015-04-03 00:33:05Z msweet $"
+ * PPD test program for CUPS.
  *
- *   PPD test program for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   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
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * PostScript is a trademark of Adobe Systems, Inc.
  *
- *   PostScript is a trademark of Adobe Systems, Inc.
- *
- *   This file is subject to the Apple OS-Developed Software exception.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -3124,7 +3122,7 @@ check_sizes(ppd_file_t *ppd,              /* I - PPD file */
   const char   *prefix;                /* WARN/FAIL prefix */
   ppd_option_t *page_size,             /* PageSize option */
                *page_region;           /* PageRegion option */
-  _pwg_media_t *pwg_media;             /* PWG media */
+  pwg_media_t  *pwg_media;             /* PWG media */
   char         buf[PPD_MAX_NAME];      /* PapeSize name that is supposed to be */
   const char   *ptr;                   /* Pointer into string */
   int          width_2540ths,          /* PageSize width in 2540ths */
@@ -4033,8 +4031,3 @@ valid_utf8(const char *s)         /* I - String to check */
 
   return (1);
 }
-
-
-/*
- * End of "$Id: cupstestppd.c 12583 2015-04-03 00:33:05Z msweet $".
- */
index e6eb028..bc09b4b 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: lp.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * "lp" command for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -41,6 +39,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
   int          job_id;                 /* Job ID */
   char         *printer,               /* Printer name */
                *instance,              /* Instance name */
+               *opt,                   /* Option pointer */
                *val,                   /* Option value */
                *title;                 /* Job title */
   int          priority;               /* Job priority (1-100) */
@@ -86,427 +85,431 @@ main(int  argc,                           /* I - Number of command-line arguments */
   end_options = 0;
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-' && argv[i][1] && !end_options)
-      switch (argv[i][1])
+    {
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'E' : /* Encrypt */
+        switch (*opt)
+       {
+         case 'E' : /* Encrypt */
 #ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 #else
-            _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
-                           argv[0]);
+             _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
 #endif /* HAVE_SSL */
-           break;
+             break;
 
-        case 'U' : /* Username */
-           if (argv[i][2] != '\0')
-             cupsSetUser(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+         case 'U' : /* Username */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after \"-U\" "
-                                 "option."), argv[0]);
-               return (1);
+               cupsSetUser(opt + 1);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
+                 return (1);
+               }
+
+               cupsSetUser(argv[i]);
+             }
+             break;
 
-              cupsSetUser(argv[i]);
-           }
-           break;
+         case 'c' : /* Copy to spool dir (always enabled) */
+             break;
 
-        case 'c' : /* Copy to spool dir (always enabled) */
-           break;
+         case 'd' : /* Destination printer or class */
+             if (opt[1] != '\0')
+             {
+               printer = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-        case 'd' : /* Destination printer or class */
-           if (argv[i][2] != '\0')
-             printer = argv[i] + 2;
-           else
-           {
-             i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected destination after \"-d\" option."), argv[0]);
+                 return (1);
+               }
 
-             if (i >= argc)
-             {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected destination after "
-                                 "\"-d\" option."), argv[0]);
-               return (1);
-              }
-
-             printer = argv[i];
-           }
-
-            if ((instance = strrchr(printer, '/')) != NULL)
-             *instance++ = '\0';
-
-            if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, printer,
-                                         instance)) != NULL)
-           {
-             for (j = 0; j < dest->num_options; j ++)
-               if (cupsGetOption(dest->options[j].name, num_options,
-                                 options) == NULL)
-                 num_options = cupsAddOption(dest->options[j].name,
-                                             dest->options[j].value,
-                                             num_options, &options);
-           }
-           else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
-                    cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
-           {
-             _cupsLangPrintf(stderr,
-                             _("%s: Error - add '/version=1.1' to server "
-                               "name."), argv[0]);
-             return (1);
-           }
-           break;
+               printer = argv[i];
+             }
 
-        case 'f' : /* Form */
-           if (!argv[i][2])
-           {
-             i ++;
+             if ((instance = strrchr(printer, '/')) != NULL)
+               *instance++ = '\0';
 
-             if (i >= argc)
+             if ((dest = cupsGetNamedDest(CUPS_HTTP_DEFAULT, printer,
+                                          instance)) != NULL)
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected form after \"-f\" "
-                                 "option."),
-                               argv[0]);
+               for (j = 0; j < dest->num_options; j ++)
+                 if (cupsGetOption(dest->options[j].name, num_options,
+                                   options) == NULL)
+                   num_options = cupsAddOption(dest->options[j].name,
+                                               dest->options[j].value,
+                                               num_options, &options);
+             }
+             else if (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
+                      cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED)
+             {
+               _cupsLangPrintf(stderr,
+                               _("%s: Error - add '/version=1.1' to server "
+                                 "name."), argv[0]);
                return (1);
-              }
-           }
+             }
+             break;
 
-           _cupsLangPrintf(stderr, _("%s: Warning - form option ignored."),
-                           argv[0]);
-           break;
+         case 'f' : /* Form */
+             if (opt[1] != '\0')
+             {
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-        case 'h' : /* Destination host */
-           if (argv[i][2] != '\0')
-             cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected form after \"-f\" option."), argv[0]);
+                 return (1);
+               }
+             }
 
-             if (i >= argc)
+             _cupsLangPrintf(stderr, _("%s: Warning - form option ignored."), argv[0]);
+             break;
+
+         case 'h' : /* Destination host */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected hostname after "
-                                 "\"-h\" option."), argv[0]);
-               return (1);
-              }
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-             cupsSetServer(argv[i]);
-           }
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
+                 return (1);
+               }
 
-        case 'i' : /* Change job */
-           if (argv[i][2])
-             val = argv[i] + 2;
-           else
-           {
-             i ++;
+               cupsSetServer(argv[i]);
+             }
+             break;
 
-             if (i >= argc)
+         case 'i' : /* Change job */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Expected job ID after \"-i\" option."),
-                               argv[0]);
-               return (1);
-              }
+               val = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-             val = argv[i];
-           }
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Expected job ID after \"-i\" option."), argv[0]);
+                 return (1);
+               }
 
-            if (num_files > 0)
-           {
-             _cupsLangPrintf(stderr,
-                             _("%s: Error - cannot print files and alter "
-                               "jobs simultaneously."), argv[0]);
-             return (1);
-           }
+               val = argv[i];
+             }
+
+             if (num_files > 0)
+             {
+               _cupsLangPrintf(stderr, _("%s: Error - cannot print files and alter jobs simultaneously."), argv[0]);
+               return (1);
+             }
 
-            if (strrchr(val, '-') != NULL)
-             job_id = atoi(strrchr(val, '-') + 1);
-           else
-             job_id = atoi(val);
+             if (strrchr(val, '-') != NULL)
+               job_id = atoi(strrchr(val, '-') + 1);
+             else
+               job_id = atoi(val);
 
-            if (job_id < 0)
-           {
-             _cupsLangPrintf(stderr, _("%s: Error - bad job ID."), argv[0]);
+             if (job_id < 0)
+             {
+               _cupsLangPrintf(stderr, _("%s: Error - bad job ID."), argv[0]);
+               break;
+             }
              break;
-           }
-           break;
 
-       case 'm' : /* Send email when job is done */
+         case 'm' : /* Send email when job is done */
 #ifdef __sun
-       case 'p' : /* Notify on completion */
+         case 'p' : /* Notify on completion */
 #endif /* __sun */
-       case 'w' : /* Write to console or email */
-           {
-             char      email[1024];    /* EMail address */
-
+         case 'w' : /* Write to console or email */
+             {
+               char    email[1024];    /* EMail address */
 
-             snprintf(email, sizeof(email), "mailto:%s@%s", cupsUser(),
-                      httpGetHostname(NULL, buffer, sizeof(buffer)));
-             num_options = cupsAddOption("notify-recipient-uri", email,
-                                         num_options, &options);
-           }
 
-           silent = 1;
-           break;
+               snprintf(email, sizeof(email), "mailto:%s@%s", cupsUser(), httpGetHostname(NULL, buffer, sizeof(buffer)));
+               num_options = cupsAddOption("notify-recipient-uri", email, num_options, &options);
+             }
 
-       case 'n' : /* Number of copies */
-           if (argv[i][2] != '\0')
-             num_copies = atoi(argv[i] + 2);
-           else
-           {
-             i ++;
+             silent = 1;
+             break;
 
-             if (i >= argc)
+         case 'n' : /* Number of copies */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected copies after "
-                                 "\"-n\" option."), argv[0]);
-               return (1);
-              }
-
-             num_copies = atoi(argv[i]);
-           }
+               num_copies = atoi(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-            sprintf(buffer, "%d", num_copies);
-            num_options = cupsAddOption("copies", buffer, num_options,
-                                       &options);
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected copies after \"-n\" option."), argv[0]);
+                 return (1);
+               }
 
-       case 'o' : /* Option */
-           if (argv[i][2] != '\0')
-             num_options = cupsParseOptions(argv[i] + 2, num_options,
-                                            &options);
-           else
-           {
-             i ++;
+               num_copies = atoi(argv[i]);
+             }
 
-             if (i >= argc)
+             if (num_copies < 1)
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected option=value after "
-                                 "\"-o\" option."), argv[0]);
+               _cupsLangPrintf(stderr, _("%s: Error - copies must be 1 or more."), argv[0]);
                return (1);
-              }
+             }
 
-             num_options = cupsParseOptions(argv[i], num_options, &options);
-           }
-           break;
+             sprintf(buffer, "%d", num_copies);
+             num_options = cupsAddOption("copies", buffer, num_options,
+                                         &options);
+             break;
+
+         case 'o' : /* Option */
+             if (opt[1] != '\0')
+             {
+               num_options = cupsParseOptions(opt + 1, num_options, &options);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected option=value after \"-o\" option."), argv[0]);
+                 return (1);
+               }
+
+               num_options = cupsParseOptions(argv[i], num_options, &options);
+             }
+             break;
 
 #ifndef __sun
-       case 'p' : /* Queue priority */
+         case 'p' : /* Queue priority */
 #endif /* !__sun */
-       case 'q' : /* Queue priority */
-           if (argv[i][2] != '\0')
-             priority = atoi(argv[i] + 2);
-           else
-           {
-             if ((i + 1) >= argc)
-             {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected priority after "
-                                 "\"-%c\" option."), argv[0], argv[i][1]);
-               return (1);
-              }
-
-             i ++;
-
-             priority = atoi(argv[i]);
-           }
-
-           /*
-           * For 100% Solaris compatibility, need to add:
-           *
-           *   priority = 99 * (39 - priority) / 39 + 1;
-           *
-           * However, to keep CUPS lp the same across all platforms
-           * we will break compatibility this far...
-           */
-
-           if (priority < 1 || priority > 100)
-           {
-             _cupsLangPrintf(stderr,
-                             _("%s: Error - priority must be between 1 and "
-                               "100."), argv[0]);
-             return (1);
-           }
+         case 'q' : /* Queue priority */
+             if (opt[1] != '\0')
+             {
+               priority = atoi(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               if ((i + 1) >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected priority after \"-%c\" option."), argv[0], *opt);
+                 return (1);
+               }
 
-            sprintf(buffer, "%d", priority);
-            num_options = cupsAddOption("job-priority", buffer, num_options,
-                                       &options);
-           break;
+               i ++;
 
-       case 's' : /* Silent */
-           silent = 1;
-           break;
+               priority = atoi(argv[i]);
+             }
 
-       case 't' : /* Title */
-           if (argv[i][2] != '\0')
-             title = argv[i] + 2;
-           else
-           {
-             i ++;
+            /*
+             * For 100% Solaris compatibility, need to add:
+             *
+             *   priority = 99 * (39 - priority) / 39 + 1;
+             *
+             * However, to keep CUPS lp the same across all platforms
+             * we will break compatibility this far...
+             */
 
-             if (i >= argc)
+             if (priority < 1 || priority > 100)
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected title after "
-                                 "\"-t\" option."), argv[0]);
+               _cupsLangPrintf(stderr, _("%s: Error - priority must be between 1 and 100."), argv[0]);
                return (1);
-              }
+             }
 
-             title = argv[i];
-           }
-           break;
+             sprintf(buffer, "%d", priority);
+             num_options = cupsAddOption("job-priority", buffer, num_options,
+                                         &options);
+             break;
 
-        case 'y' : /* mode-list */
-           if (!argv[i][2])
-           {
-             i ++;
+         case 's' : /* Silent */
+             silent = 1;
+             break;
 
-             if (i >= argc)
+         case 't' : /* Title */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected mode list after "
-                                 "\"-y\" option."), argv[0]);
-               return (1);
-              }
-           }
+               title = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-           _cupsLangPrintf(stderr,
-                           _("%s: Warning - mode option ignored."), argv[0]);
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected title after \"-t\" option."), argv[0]);
+                 return (1);
+               }
 
-        case 'H' : /* Hold job */
-           if (argv[i][2])
-             val = argv[i] + 2;
-           else
-           {
-             i ++;
+               title = argv[i];
+             }
+             break;
 
-             if (i >= argc)
+         case 'y' : /* mode-list */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected hold name after "
-                                 "\"-H\" option."), argv[0]);
-               return (1);
-              }
-
-             val = argv[i];
-           }
-
-           if (!strcmp(val, "hold"))
-              num_options = cupsAddOption("job-hold-until", "indefinite",
-                                         num_options, &options);
-           else if (!strcmp(val, "resume") ||
-                    !strcmp(val, "release"))
-              num_options = cupsAddOption("job-hold-until", "no-hold",
-                                         num_options, &options);
-           else if (!strcmp(val, "immediate"))
-           {
-              num_options = cupsAddOption("job-hold-until", "no-hold",
-                                         num_options, &options);
-              num_options = cupsAddOption("job-priority", "100",
-                                         num_options, &options);
-           }
-           else if (!strcmp(val, "restart"))
-           {
-             if (job_id < 1)
-             {
-               _cupsLangPrintf(stderr,
-                               _("%s: Need job ID (\"-i jobid\") before "
-                                 "\"-H restart\"."), argv[0]);
-               return (1);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-             if (restart_job(argv[0], job_id))
-               return (1);
-           }
-           else
-              num_options = cupsAddOption("job-hold-until", val,
-                                         num_options, &options);
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected mode list after \"-y\" option."), argv[0]);
+                 return (1);
+               }
+             }
 
-        case 'P' : /* Page list */
-           if (argv[i][2])
-             val = argv[i] + 2;
-           else
-           {
-             i ++;
+             _cupsLangPrintf(stderr, _("%s: Warning - mode option ignored."), argv[0]);
+             break;
 
-             if (i >= argc)
+         case 'H' : /* Hold job */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected page list after "
-                                 "\"-P\" option."), argv[0]);
-               return (1);
-              }
+               val = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-             val = argv[i];
-           }
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected hold name after \"-H\" option."), argv[0]);
+                 return (1);
+               }
 
-            num_options = cupsAddOption("page-ranges", val, num_options,
-                                       &options);
-            break;
+               val = argv[i];
+             }
 
-        case 'S' : /* character set */
-           if (!argv[i][2])
-           {
-             i ++;
+             if (!strcmp(val, "hold"))
+               num_options = cupsAddOption("job-hold-until", "indefinite", num_options, &options);
+             else if (!strcmp(val, "resume") || !strcmp(val, "release"))
+               num_options = cupsAddOption("job-hold-until", "no-hold", num_options, &options);
+             else if (!strcmp(val, "immediate"))
+             {
+               num_options = cupsAddOption("job-hold-until", "no-hold", num_options, &options);
+               num_options = cupsAddOption("job-priority", "100", num_options, &options);
+             }
+             else if (!strcmp(val, "restart"))
+             {
+               if (job_id < 1)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Need job ID (\"-i jobid\") before \"-H restart\"."), argv[0]);
+                 return (1);
+               }
+
+               if (restart_job(argv[0], job_id))
+                 return (1);
+             }
+             else
+               num_options = cupsAddOption("job-hold-until", val, num_options, &options);
+             break;
 
-             if (i >= argc)
+         case 'P' : /* Page list */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected character set after "
-                                 "\"-S\" option."), argv[0]);
-               return (1);
-              }
-           }
+               val = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-           _cupsLangPrintf(stderr,
-                           _("%s: Warning - character set option ignored."),
-                           argv[0]);
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected page list after \"-P\" option."), argv[0]);
+                 return (1);
+               }
 
-        case 'T' : /* Content-Type */
-           if (!argv[i][2])
-           {
-             i ++;
+               val = argv[i];
+             }
 
-             if (i >= argc)
+             num_options = cupsAddOption("page-ranges", val, num_options, &options);
+             break;
+
+         case 'S' : /* character set */
+             if (opt[1] != '\0')
+             {
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected character set after \"-S\" option."), argv[0]);
+                 return (1);
+               }
+             }
+
+             _cupsLangPrintf(stderr, _("%s: Warning - character set option ignored."), argv[0]);
+             break;
+
+         case 'T' : /* Content-Type */
+             if (opt[1] != '\0')
+             {
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected content type after \"-T\" option."), argv[0]);
+                 return (1);
+               }
+             }
+
+             _cupsLangPrintf(stderr, _("%s: Warning - content type option ignored."), argv[0]);
+             break;
+
+         case '-' : /* Stop processing options */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected content type after "
-                                 "\"-T\" option."), argv[0]);
+               _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%s\"."), argv[0], argv[i]);
                return (1);
-              }
-           }
-
-           _cupsLangPrintf(stderr,
-                           _("%s: Warning - content type option ignored."),
-                           argv[0]);
-           break;
-
-        case '-' : /* Stop processing options */
-            if (argv[i][2])
-            {
-             _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%s\"."),
-                             argv[0], argv[i]);
-             return (1);
-           }
+             }
 
-           end_options = 1;
-           break;
+             end_options = 1;
+             break;
 
-       default :
-           _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."),
-                           argv[0], argv[i][1]);
-           return (1);
+         default :
+             _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], *opt);
+             return (1);
+       }
       }
+    }
     else if (!strcmp(argv[i], "-"))
     {
       if (num_files || job_id)
@@ -527,8 +530,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
 
       if (access(argv[i], R_OK) != 0)
       {
-        _cupsLangPrintf(stderr, _("%s: Error - unable to access \"%s\" - %s"),
-                       argv[0], argv[i], strerror(errno));
+        _cupsLangPrintf(stderr, _("%s: Error - unable to access \"%s\" - %s"), argv[0], argv[i], strerror(errno));
         return (1);
       }
 
@@ -544,8 +546,10 @@ main(int  argc,                            /* I - Number of command-line arguments */
       }
     }
     else
-      _cupsLangPrintf(stderr, _("%s: Error - too many files - \"%s\"."),
-                      argv[0], argv[i]);
+    {
+      _cupsLangPrintf(stderr, _("%s: Error - too many files - \"%s\"."), argv[0], argv[i]);
+    }
+  }
 
  /*
   * See if we are altering an existing job...
@@ -755,8 +759,3 @@ set_job_attrs(const char    *command,       /* I - Command name */
 
   return (0);
 }
-
-
-/*
- * End of "$Id: lp.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index c181d2b..1344b59 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: lpadmin.c 12603 2015-05-06 01:42:51Z msweet $"
- *
  * "lpadmin" command for CUPS.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -20,6 +18,7 @@
 #define _CUPS_NO_DEPRECATED
 #define _PPD_DEPRECATED
 #include <cups/cups-private.h>
+#include <cups/ppd-private.h>
 
 
 /*
@@ -55,10 +54,11 @@ main(int  argc,                     /* I - Number of command-line arguments */
   http_t       *http;          /* Connection to server */
   char         *printer,       /* Destination printer */
                *pclass,        /* Printer class name */
+               *opt,           /* Option pointer */
                *val;           /* Pointer to allow/deny value */
   int          num_options;    /* Number of options */
   cups_option_t        *options;       /* Options */
-  char         *file,          /* New PPD file/interface script */
+  char         *file,          /* New PPD file */
                evefile[1024] = "";
                                /* IPP Everywhere PPD */
   const char   *ppd_name,      /* ppd-name value */
@@ -74,549 +74,518 @@ main(int  argc,                   /* I - Number of command-line arguments */
   file        = NULL;
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-')
-      switch (argv[i][1])
+    {
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'c' : /* Add printer to class */
-           if (!http)
-           {
-              http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+       switch (*opt)
+       {
+         case 'c' : /* Add printer to class */
+             if (!http)
+             {
+               http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+
+               if (http == NULL)
+               {
+                 _cupsLangPrintf(stderr, _("lpadmin: Unable to connect to server: %s"), strerror(errno));
+                 return (1);
+               }
+             }
 
-             if (http == NULL)
+             if (printer == NULL)
              {
-               _cupsLangPrintf(stderr,
-                               _("lpadmin: Unable to connect to server: %s"),
-                               strerror(errno));
+               _cupsLangPuts(stderr,
+                             _("lpadmin: Unable to add a printer to the class:\n"
+                               "         You must specify a printer name first."));
                return (1);
              }
-            }
-
-           if (printer == NULL)
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Unable to add a printer to the class:\n"
-                             "         You must specify a printer name "
-                             "first."));
-             return (1);
-           }
 
-           if (argv[i][2])
-             pclass = argv[i] + 2;
-           else
-           {
-             i ++;
+             if (opt[1] != '\0')
+             {
+               pclass = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-             if (i >= argc)
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected class name after \"-c\" option."));
+                 return (1);
+               }
+
+               pclass = argv[i];
+             }
+
+             if (!validate_name(pclass))
              {
                _cupsLangPuts(stderr,
-                             _("lpadmin: Expected class name after \"-c\" "
-                               "option."));
+                             _("lpadmin: Class name can only contain printable "
+                               "characters."));
                return (1);
              }
 
-             pclass = argv[i];
-           }
-
-            if (!validate_name(pclass))
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Class name can only contain printable "
-                             "characters."));
-             return (1);
-           }
+             if (add_printer_to_class(http, printer, pclass))
+               return (1);
+             break;
 
-           if (add_printer_to_class(http, printer, pclass))
-             return (1);
-           break;
+         case 'd' : /* Set as default destination */
+             if (!http)
+             {
+               http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
 
-        case 'd' : /* Set as default destination */
-           if (!http)
-           {
-              http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+               if (http == NULL)
+               {
+                 _cupsLangPrintf(stderr, _("lpadmin: Unable to connect to server: %s"), strerror(errno));
+                 return (1);
+               }
+             }
 
-             if (http == NULL)
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("lpadmin: Unable to connect to server: %s"),
-                               strerror(errno));
-               return (1);
+               printer = opt + 1;
+               opt += strlen(opt) - 1;
              }
-            }
+             else
+             {
+               i ++;
 
-           if (argv[i][2])
-             printer = argv[i] + 2;
-           else
-           {
-             i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected printer name after \"-d\" option."));
+                 return (1);
+               }
 
-             if (i >= argc)
+               printer = argv[i];
+             }
+
+             if (!validate_name(printer))
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected printer name after \"-d\" "
-                               "option."));
+               _cupsLangPuts(stderr, _("lpadmin: Printer name can only contain printable characters."));
                return (1);
              }
 
-             printer = argv[i];
-           }
-
-            if (!validate_name(printer))
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Printer name can only contain "
-                             "printable characters."));
-             return (1);
-           }
-
-            if (default_printer(http, printer))
-             return (1);
+             if (default_printer(http, printer))
+               return (1);
 
-           i = argc;
-           break;
+             i = argc;
+             break;
 
-        case 'h' : /* Connect to host */
-           if (http)
-           {
-             httpClose(http);
-             http = NULL;
-           }
-
-           if (argv[i][2] != '\0')
-             cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
+         case 'h' : /* Connect to host */
+             if (http)
+             {
+               httpClose(http);
+               http = NULL;
+             }
 
-             if (i >= argc)
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected hostname after \"-h\" "
-                               "option."));
-               return (1);
-              }
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-              cupsSetServer(argv[i]);
-           }
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected hostname after \"-h\" option."));
+                 return (1);
+               }
 
-        case 'i' : /* Use the specified interface script */
-           if (argv[i][2])
-             file = argv[i] + 2;
-           else
-           {
-             i ++;
+               cupsSetServer(argv[i]);
+             }
+             break;
 
-             if (i >= argc)
+         case 'P' : /* Use the specified PPD file */
+         case 'i' : /* Use the specified PPD file */
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected interface after \"-i\" "
-                               "option."));
-               return (1);
+               file = opt + 1;
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-             file = argv[i];
-           }
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("lpadmin: Expected PPD after \"-%c\" option."), argv[i - 1][1]);
+                 return (1);
+               }
 
-        case 'E' : /* Enable the printer */
-           if (printer == NULL)
-           {
+               file = argv[i];
+             }
+             break;
+
+         case 'E' : /* Enable the printer/enable encryption */
+             if (printer == NULL)
+             {
 #ifdef HAVE_SSL
-             cupsSetEncryption(HTTP_ENCRYPTION_REQUIRED);
+               cupsSetEncryption(HTTP_ENCRYPTION_REQUIRED);
 
-             if (http)
-               httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
+               if (http)
+                 httpEncryption(http, HTTP_ENCRYPTION_REQUIRED);
 #else
-              _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."),
-                             argv[0]);
+               _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
 #endif /* HAVE_SSL */
-             break;
-           }
-
-           if (!http)
-           {
-              http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+               break;
+             }
 
-             if (http == NULL)
+             if (!http)
              {
-               _cupsLangPrintf(stderr,
-                               _("lpadmin: Unable to connect to server: %s"),
-                               strerror(errno));
-               return (1);
+               http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+
+               if (http == NULL)
+               {
+                 _cupsLangPrintf(stderr,
+                                 _("lpadmin: Unable to connect to server: %s"),
+                                 strerror(errno));
+                 return (1);
+               }
              }
-            }
 
-            if (enable_printer(http, printer))
-             return (1);
-            break;
-
-        case 'm' : /* Use the specified standard script/PPD file */
-           if (argv[i][2])
-             num_options = cupsAddOption("ppd-name", argv[i] + 2, num_options,
-                                         &options);
-           else
-           {
-             i ++;
+             if (enable_printer(http, printer))
+               return (1);
+             break;
 
-             if (i >= argc)
+         case 'm' : /* Use the specified standard script/PPD file */
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected model after \"-m\" "
-                               "option."));
-               return (1);
+               num_options = cupsAddOption("ppd-name", opt + 1, num_options, &options);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-             num_options = cupsAddOption("ppd-name", argv[i], num_options,
-                                         &options);
-           }
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected model after \"-m\" option."));
+                 return (1);
+               }
 
-        case 'o' : /* Set option */
-           if (argv[i][2])
-             num_options = cupsParseOptions(argv[i] + 2, num_options, &options);
-           else
-           {
-             i ++;
+               num_options = cupsAddOption("ppd-name", argv[i], num_options, &options);
+             }
+             break;
 
-             if (i >= argc)
+         case 'o' : /* Set option */
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected name=value after \"-o\" "
-                               "option."));
-               return (1);
+               num_options = cupsParseOptions(opt + 1, num_options, &options);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-             num_options = cupsParseOptions(argv[i], num_options, &options);
-           }
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected name=value after \"-o\" option."));
+                 return (1);
+               }
 
-        case 'p' : /* Add/modify a printer */
-           if (argv[i][2])
-             printer = argv[i] + 2;
-           else
-           {
-             i ++;
+               num_options = cupsParseOptions(argv[i], num_options, &options);
+             }
+             break;
 
-             if (i >= argc)
+         case 'p' : /* Add/modify a printer */
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected printer after \"-p\" "
-                               "option."));
-               return (1);
+               printer = opt + 1;
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-             printer = argv[i];
-           }
-
-            if (!validate_name(printer))
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Printer name can only contain "
-                             "printable characters."));
-             return (1);
-           }
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected printer after \"-p\" option."));
+                 return (1);
+               }
 
-        case 'r' : /* Remove printer from class */
-           if (!http)
-           {
-              http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+               printer = argv[i];
+             }
 
-             if (http == NULL)
+             if (!validate_name(printer))
              {
-               _cupsLangPrintf(stderr,
-                               _("lpadmin: Unable to connect to server: %s"),
-                               strerror(errno));
+               _cupsLangPuts(stderr, _("lpadmin: Printer name can only contain printable characters."));
                return (1);
              }
-            }
-
-           if (printer == NULL)
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Unable to remove a printer from the "
-                             "class:\n"
-                             "         You must specify a printer name "
-                             "first."));
-             return (1);
-           }
+             break;
 
-           if (argv[i][2])
-             pclass = argv[i] + 2;
-           else
-           {
-             i ++;
+         case 'r' : /* Remove printer from class */
+             if (!http)
+             {
+               http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+
+               if (http == NULL)
+               {
+                 _cupsLangPrintf(stderr,
+                                 _("lpadmin: Unable to connect to server: %s"),
+                                 strerror(errno));
+                 return (1);
+               }
+             }
 
-             if (i >= argc)
+             if (printer == NULL)
              {
                _cupsLangPuts(stderr,
-                             _("lpadmin: Expected class after \"-r\" "
-                               "option."));
+                             _("lpadmin: Unable to remove a printer from the class:\n"
+                               "         You must specify a printer name first."));
                return (1);
              }
 
-             pclass = argv[i];
-           }
-
-            if (!validate_name(pclass))
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Class name can only contain printable "
-                             "characters."));
-             return (1);
-           }
+             if (opt[1] != '\0')
+             {
+               pclass = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-            if (delete_printer_from_class(http, printer, pclass))
-             return (1);
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected class after \"-r\" option."));
+                 return (1);
+               }
 
-        case 'R' : /* Remove option */
-           if (!http)
-           {
-              http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+               pclass = argv[i];
+             }
 
-             if (http == NULL)
+             if (!validate_name(pclass))
              {
-               _cupsLangPrintf(stderr,
-                               _("lpadmin: Unable to connect to server: %s"),
-                               strerror(errno));
+               _cupsLangPuts(stderr, _("lpadmin: Class name can only contain printable characters."));
                return (1);
              }
-            }
-
-           if (printer == NULL)
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Unable to delete option:\n"
-                             "         You must specify a printer name "
-                             "first."));
-             return (1);
-           }
 
-           if (argv[i][2])
-             val = argv[i] + 2;
-           else
-           {
-             i ++;
+             if (delete_printer_from_class(http, printer, pclass))
+               return (1);
+             break;
 
-             if (i >= argc)
+         case 'R' : /* Remove option */
+             if (!http)
+             {
+               http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+
+               if (http == NULL)
+               {
+                 _cupsLangPrintf(stderr, _("lpadmin: Unable to connect to server: %s"), strerror(errno));
+                 return (1);
+               }
+             }
+
+             if (printer == NULL)
              {
                _cupsLangPuts(stderr,
-                             _("lpadmin: Expected name after \"-R\" "
-                               "option."));
+                             _("lpadmin: Unable to delete option:\n"
+                               "         You must specify a printer name first."));
                return (1);
              }
 
-             val = argv[i];
-           }
-
-            if (delete_printer_option(http, printer, val))
-             return (1);
-           break;
-
-        case 'U' : /* Username */
-           if (argv[i][2] != '\0')
-             cupsSetUser(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after "
-                                 "\"-U\" option."), argv[0]);
-               return (1);
+               val = opt + 1;
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-              cupsSetUser(argv[i]);
-           }
-           break;
-
-        case 'u' : /* Allow/deny users */
-           if (argv[i][2])
-             val = argv[i] + 2;
-           else
-           {
-             i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected name after \"-R\" option."));
+                 return (1);
+               }
 
-             if (i >= argc)
-             {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected allow/deny:userlist after "
-                               "\"-u\" option."));
-               return (1);
+               val = argv[i];
              }
 
-              val = argv[i];
-           }
-
-            if (!_cups_strncasecmp(val, "allow:", 6))
-             num_options = cupsAddOption("requesting-user-name-allowed",
-                                         val + 6, num_options, &options);
-            else if (!_cups_strncasecmp(val, "deny:", 5))
-             num_options = cupsAddOption("requesting-user-name-denied",
-                                         val + 5, num_options, &options);
-            else
-           {
-             _cupsLangPrintf(stderr,
-                             _("lpadmin: Unknown allow/deny option \"%s\"."),
-                             val);
-             return (1);
-           }
-           break;
+             if (delete_printer_option(http, printer, val))
+               return (1);
+             break;
 
-        case 'v' : /* Set the device-uri attribute */
-           if (argv[i][2])
-             num_options = cupsAddOption("device-uri", argv[i] + 2,
-                                         num_options, &options);
-           else
-           {
-             i ++;
+         case 'U' : /* Username */
+             if (opt[1] != '\0')
+             {
+               cupsSetUser(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
+                 return (1);
+               }
+
+               cupsSetUser(argv[i]);
+             }
+             break;
 
-             if (i >= argc)
+         case 'u' : /* Allow/deny users */
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected device URI after \"-v\" "
-                               "option."));
-               return (1);
+               val = opt + 1;
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-             num_options = cupsAddOption("device-uri", argv[i],
-                                         num_options, &options);
-           }
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected allow/deny:userlist after \"-u\" option."));
+                 return (1);
+               }
 
-        case 'x' : /* Delete a printer */
-           if (!http)
-           {
-              http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+               val = argv[i];
+             }
 
-             if (http == NULL)
+             if (!_cups_strncasecmp(val, "allow:", 6))
+               num_options = cupsAddOption("requesting-user-name-allowed", val + 6, num_options, &options);
+             else if (!_cups_strncasecmp(val, "deny:", 5))
+               num_options = cupsAddOption("requesting-user-name-denied", val + 5, num_options, &options);
+             else
              {
-               _cupsLangPrintf(stderr,
-                               _("lpadmin: Unable to connect to server: %s"),
-                               strerror(errno));
+               _cupsLangPrintf(stderr, _("lpadmin: Unknown allow/deny option \"%s\"."), val);
                return (1);
              }
-            }
-
-           if (argv[i][2])
-             printer = argv[i] + 2;
-           else
-           {
-             i ++;
+             break;
 
-             if (i >= argc)
+         case 'v' : /* Set the device-uri attribute */
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected printer or class after "
-                               "\"-x\" option."));
-               return (1);
+               num_options = cupsAddOption("device-uri", opt + 1, num_options, &options);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-             printer = argv[i];
-           }
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected device URI after \"-v\" option."));
+                 return (1);
+               }
 
-            if (!validate_name(printer))
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Printer name can only contain "
-                             "printable characters."));
-             return (1);
-           }
+               num_options = cupsAddOption("device-uri", argv[i], num_options, &options);
+             }
+             break;
 
-            if (delete_printer(http, printer))
-             return (1);
+         case 'x' : /* Delete a printer */
+             if (!http)
+             {
+               http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL);
+
+               if (http == NULL)
+               {
+                 _cupsLangPrintf(stderr,
+                                 _("lpadmin: Unable to connect to server: %s"),
+                                 strerror(errno));
+                 return (1);
+               }
+             }
 
-           i = argc;
-           break;
+             if (opt[1] != '\0')
+             {
+               printer = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-        case 'D' : /* Set the printer-info attribute */
-           if (argv[i][2])
-             num_options = cupsAddOption("printer-info", argv[i] + 2,
-                                         num_options, &options);
-           else
-           {
-             i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected printer or class after \"-x\" option."));
+                 return (1);
+               }
 
-             if (i >= argc)
+               printer = argv[i];
+             }
+
+             if (!validate_name(printer))
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected description after "
-                               "\"-D\" option."));
+               _cupsLangPuts(stderr, _("lpadmin: Printer name can only contain printable characters."));
                return (1);
              }
 
-             num_options = cupsAddOption("printer-info", argv[i],
-                                         num_options, &options);
-           }
-           break;
+             if (delete_printer(http, printer))
+               return (1);
 
-        case 'I' : /* Set the supported file types (ignored) */
-           i ++;
+             i = argc;
+             break;
 
-           if (i >= argc)
-           {
-             _cupsLangPuts(stderr,
-                           _("lpadmin: Expected file type(s) after \"-I\" "
-                             "option."));
-             return (1);
-           }
+         case 'D' : /* Set the printer-info attribute */
+             if (opt[1] != '\0')
+             {
+               num_options = cupsAddOption("printer-info", opt + 1, num_options, &options);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-           _cupsLangPuts(stderr,
-                         _("lpadmin: Warning - content type list ignored."));
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected description after \"-D\" option."));
+                 return (1);
+               }
+
+               num_options = cupsAddOption("printer-info", argv[i], num_options, &options);
+             }
+             break;
 
-        case 'L' : /* Set the printer-location attribute */
-           if (argv[i][2])
-             num_options = cupsAddOption("printer-location", argv[i] + 2,
-                                         num_options, &options);
-           else
-           {
+         case 'I' : /* Set the supported file types (ignored) */
              i ++;
 
              if (i >= argc)
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected location after \"-L\" "
-                               "option."));
+               _cupsLangPuts(stderr, _("lpadmin: Expected file type(s) after \"-I\" option."));
                return (1);
              }
 
-             num_options = cupsAddOption("printer-location", argv[i],
-                                         num_options, &options);
-           }
-           break;
-
-        case 'P' : /* Use the specified PPD file */
-           if (argv[i][2])
-             file = argv[i] + 2;
-           else
-           {
-             i ++;
+             _cupsLangPuts(stderr, _("lpadmin: Warning - content type list ignored."));
+             break;
 
-             if (i >= argc)
+         case 'L' : /* Set the printer-location attribute */
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpadmin: Expected PPD after \"-P\" option."));
-               return (1);
+               num_options = cupsAddOption("printer-location", opt + 1, num_options, &options);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
 
-             file = argv[i];
-           }
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("lpadmin: Expected location after \"-L\" option."));
+                 return (1);
+               }
+
+               num_options = cupsAddOption("printer-location", argv[i], num_options, &options);
+             }
+             break;
 
-       default :
-           _cupsLangPrintf(stderr,
-                           _("lpadmin: Unknown option \"%c\"."), argv[i][1]);
-           return (1);
+         default :
+             _cupsLangPrintf(stderr, _("lpadmin: Unknown option \"%c\"."), *opt);
+             return (1);
+       }
       }
+    }
     else
     {
-      _cupsLangPrintf(stderr, _("lpadmin: Unknown argument \"%s\"."),
-                      argv[i]);
+      _cupsLangPrintf(stderr, _("lpadmin: Unknown argument \"%s\"."), argv[i]);
       return (1);
     }
+  }
 
  /*
   * Set options as needed...
@@ -1614,8 +1583,3 @@ validate_name(const char *name)           /* I - Name to check */
 
   return ((ptr - name) < 128);
 }
-
-
-/*
- * End of "$Id: lpadmin.c 12603 2015-05-06 01:42:51Z msweet $".
- */
index 6816615..16bdf0f 100644 (file)
@@ -1,23 +1,14 @@
 /*
- * "$Id: lpinfo.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "lpinfo" command for CUPS.
  *
- *   "lpinfo" command for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main()         - Parse options and show information.
- *   device_cb      - Device callback.
- *   show_devices() - Show available devices.
- *   show_models()  - Show available PPDs.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -25,6 +16,7 @@
  */
 
 #include <cups/cups-private.h>
+#include <cups/adminutil.h>
 
 
 /*
@@ -56,7 +48,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
 {
   int          i;                      /* Looping var */
   int          long_status;            /* Long listing? */
-  const char   *device_id,             /* 1284 device ID */
+  const char   *opt,                   /* Option pointer */
+               *device_id,             /* 1284 device ID */
                *language,              /* Language */
                *make_model,            /* Make and model */
                *product,               /* Product */
@@ -77,195 +70,175 @@ main(int  argc,                           /* I - Number of command-line arguments */
   timeout         = CUPS_TIMEOUT_DEFAULT;
 
   for (i = 1; i < argc; i ++)
-    if (argv[i][0] == '-')
-      switch (argv[i][1])
+  {
+    if (!strcmp(argv[i], "--device-id"))
+    {
+      i ++;
+
+      if (i < argc)
+       device_id = argv[i];
+      else
+      {
+       _cupsLangPuts(stderr, _("lpinfo: Expected 1284 device ID string after \"--device-id\"."));
+       return (1);
+      }
+    }
+    else if (!strncmp(argv[i], "--device-id=", 12) && argv[i][12])
+    {
+      device_id = argv[i] + 12;
+    }
+    else if (!strcmp(argv[i], "--exclude-schemes"))
+    {
+      i ++;
+
+      if (i < argc)
+       exclude_schemes = argv[i];
+      else
+      {
+       _cupsLangPuts(stderr, _("lpinfo: Expected scheme list after \"--exclude-schemes\"."));
+       return (1);
+      }
+    }
+    else if (!strncmp(argv[i], "--exclude-schemes=", 18) && argv[i][18])
+    {
+      exclude_schemes = argv[i] + 18;
+    }
+    else if (!strcmp(argv[i], "--include-schemes"))
+    {
+      i ++;
+
+      if (i < argc)
+       include_schemes = argv[i];
+      else
+      {
+       _cupsLangPuts(stderr, _("lpinfo: Expected scheme list after \"--include-schemes\"."));
+       return (1);
+      }
+    }
+    else if (!strncmp(argv[i], "--include-schemes=", 18) && argv[i][18])
+    {
+      include_schemes = argv[i] + 18;
+    }
+    else if (!strcmp(argv[i], "--language"))
+    {
+      i ++;
+      if (i < argc)
+       language = argv[i];
+      else
+      {
+       _cupsLangPuts(stderr, _("lpinfo: Expected language after \"--language\"."));
+       return (1);
+      }
+    }
+    else if (!strncmp(argv[i], "--language=", 11) && argv[i][11])
+    {
+      language = argv[i] + 11;
+    }
+    else if (!strcmp(argv[i], "--make-and-model"))
+    {
+      i ++;
+      if (i < argc)
+       make_model= argv[i];
+      else
+      {
+       _cupsLangPuts(stderr, _("lpinfo: Expected make and model after \"--make-and-model\"."));
+       return (1);
+      }
+    }
+    else if (!strncmp(argv[i], "--make-and-model=", 17) && argv[i][17])
+    {
+      make_model = argv[i] + 17;
+    }
+    else if (!strcmp(argv[i], "--product"))
+    {
+      i ++;
+      if (i < argc)
+       product = argv[i];
+      else
+      {
+       _cupsLangPuts(stderr, _("lpinfo: Expected product string after \"--product\"."));
+       return (1);
+      }
+    }
+    else if (!strncmp(argv[i], "--product=", 10) && argv[i][10])
+    {
+      product = argv[i] + 10;
+    }
+    else if (!strcmp(argv[i], "--timeout"))
+    {
+      i ++;
+      if (i < argc)
+       timeout = atoi(argv[i]);
+      else
+      {
+       _cupsLangPuts(stderr, _("lpinfo: Expected timeout after \"--timeout\"."));
+       return (1);
+      }
+    }
+    else if (!strncmp(argv[i], "--timeout=", 10) && argv[i][10])
+    {
+      timeout = atoi(argv[i] + 10);
+    }
+    else if (argv[i][0] == '-')
+    {
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'E' : /* Encrypt */
+       switch (*opt)
+       {
+         case 'E' : /* Encrypt */
 #ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 #else
-            _cupsLangPrintf(stderr,
-                           _("%s: Sorry, no encryption support."),
-                           argv[0]);
+             _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
 #endif /* HAVE_SSL */
-           break;
-
-        case 'h' : /* Connect to host */
-           if (argv[i][2] != '\0')
-             cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
-
-             if (i >= argc)
-             {
-               _cupsLangPuts(stderr,
-                             _("Error: need hostname after \"-h\" option."));
-               return (1);
-              }
-
-             cupsSetServer(argv[i]);
-           }
-           break;
-
-        case 'l' : /* Show long listing */
-           long_status = 1;
-           break;
+             break;
 
-        case 'm' : /* Show models */
-            if (show_models(long_status, device_id, language, make_model,
-                           product, include_schemes, exclude_schemes))
-             return (1);
-           break;
-           
-        case 'v' : /* Show available devices */
-            if (show_devices(long_status, timeout, include_schemes,
-                            exclude_schemes))
-             return (1);
-           break;
-
-        case '-' : /* --something */
-            if (!strcmp(argv[i], "--device-id"))
-           {
-             i ++;
-
-             if (i < argc)
-               device_id = argv[i];
-             else
-             {
-               _cupsLangPuts(stderr,
-                             _("lpinfo: Expected 1284 device ID string "
-                               "after \"--device-id\"."));
-               return (1);
-             }
-           }
-           else if (!strncmp(argv[i], "--device-id=", 12) && argv[i][12])
-           {
-             device_id = argv[i] + 12;
-           }
-            else if (!strcmp(argv[i], "--exclude-schemes"))
-           {
-             i ++;
-
-             if (i < argc)
-               exclude_schemes = argv[i];
-             else
-             {
-               _cupsLangPuts(stderr,
-                             _("lpinfo: Expected scheme list after "
-                               "\"--exclude-schemes\"."));
-               return (1);
-             }
-           }
-           else if (!strncmp(argv[i], "--exclude-schemes=", 18) && argv[i][18])
-           {
-             exclude_schemes = argv[i] + 18;
-           }
-            else if (!strcmp(argv[i], "--include-schemes"))
-           {
-             i ++;
-
-             if (i < argc)
-               include_schemes = argv[i];
-             else
+         case 'h' : /* Connect to host */
+             if (opt[1] != '\0')
              {
-               _cupsLangPuts(stderr,
-                             _("lpinfo: Expected scheme list after "
-                               "\"--include-schemes\"."));
-               return (1);
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
              }
-           }
-           else if (!strncmp(argv[i], "--include-schemes=", 18) && argv[i][18])
-           {
-             include_schemes = argv[i] + 18;
-           }
-            else if (!strcmp(argv[i], "--language"))
-           {
-             i ++;
-             if (i < argc)
-               language = argv[i];
              else
              {
-               _cupsLangPuts(stderr,
-                             _("lpinfo: Expected language after "
-                               "\"--language\"."));
-               return (1);
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("Error: need hostname after \"-h\" option."));
+                 return (1);
+               }
+
+               cupsSetServer(argv[i]);
              }
-           }
-           else if (!strncmp(argv[i], "--language=", 11) && argv[i][11])
-           {
-             language = argv[i] + 11;
-           }
-            else if (!strcmp(argv[i], "--make-and-model"))
-           {
-             i ++;
-             if (i < argc)
-               make_model= argv[i];
-             else
-             {
-               _cupsLangPuts(stderr,
-                             _("lpinfo: Expected make and model after "
-                               "\"--make-and-model\"."));
+             break;
+
+         case 'l' : /* Show long listing */
+             long_status = 1;
+             break;
+
+         case 'm' : /* Show models */
+             if (show_models(long_status, device_id, language, make_model, product, include_schemes, exclude_schemes))
                return (1);
-             }
-           }
-           else if (!strncmp(argv[i], "--make-and-model=", 17) && argv[i][17])
-           {
-             make_model = argv[i] + 17;
-           }
-            else if (!strcmp(argv[i], "--product"))
-           {
-             i ++;
-             if (i < argc)
-               product = argv[i];
-             else
-             {
-               _cupsLangPuts(stderr,
-                             _("lpinfo: Expected product string after "
-                               "\"--product\"."));
+             break;
+             
+         case 'v' : /* Show available devices */
+             if (show_devices(long_status, timeout, include_schemes, exclude_schemes))
                return (1);
-             }
-           }
-           else if (!strncmp(argv[i], "--product=", 10) && argv[i][10])
-           {
-             product = argv[i] + 10;
-           }
-            else if (!strcmp(argv[i], "--timeout"))
-           {
-             i ++;
-             if (i < argc)
-               timeout = atoi(argv[i]);
-             else
-             {
-               _cupsLangPuts(stderr,
-                             _("lpinfo: Expected timeout after "
-                               "\"--timeout\"."));
-               return (1);
-             }
-           }
-           else if (!strncmp(argv[i], "--timeout=", 10) && argv[i][10])
-           {
-             timeout = atoi(argv[i] + 10);
-           }
-           else
-           {
-             _cupsLangPrintf(stderr, _("lpinfo: Unknown option \"%s\"."),
-                             argv[i]);
-             return (1);
-           }
-           break;
+             break;
 
-       default :
-           _cupsLangPrintf(stderr, _("lpinfo: Unknown option \"%c\"."),
-                           argv[i][1]);
-           return (1);
+         default :
+             _cupsLangPrintf(stderr, _("%s: Unknown option \"%c\"."), argv[0], *opt);
+             return (1);
+       }
       }
+    }
     else
     {
-      _cupsLangPrintf(stderr, _("lpinfo: Unknown argument \"%s\"."),
-                      argv[i]);
+      _cupsLangPrintf(stderr, _("%s: Unknown argument \"%s\"."), argv[0], argv[i]);
       return (1);
     }
+  }
 
   return (0);
 }
@@ -491,8 +464,3 @@ show_models(
 
   return (0);
 }
-
-
-/*
- * End of "$Id: lpinfo.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index aff9d6d..a3c4f01 100644 (file)
@@ -1,21 +1,14 @@
 /*
- * "$Id: lpmove.c 10996 2013-05-29 11:51:34Z msweet $"
+ * "lpmove" command for CUPS.
  *
- *   "lpmove" command for CUPS.
+ * Copyright 2007-2016 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
  *
- *   Copyright 2007-2010 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * Contents:
- *
- *   main()     - Parse options and move jobs.
- *   move_job() - Move a job.
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  */
 
 /*
@@ -43,7 +36,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
 {
   int          i;                      /* Looping var */
   http_t       *http;                  /* Connection to server */
-  const char   *job;                   /* Job name */
+  const char   *opt,                   /* Option pointer */
+               *job;                   /* Job name */
   int          jobid;                  /* Job ID */
   int          num_dests;              /* Number of destinations */
   cups_dest_t  *dests;                 /* Destinations */
@@ -61,43 +55,48 @@ main(int  argc,                             /* I - Number of command-line arguments */
   src       = NULL;
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-')
-      switch (argv[i][1])
+    {
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'E' : /* Encrypt */
+       switch (*opt)
+       {
+         case 'E' : /* Encrypt */
 #ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 
 #else
-            _cupsLangPrintf(stderr,
-                           _("%s: Sorry, no encryption support."),
-                           argv[0]);
+             _cupsLangPrintf(stderr, _("%s: Sorry, no encryption support."), argv[0]);
 #endif /* HAVE_SSL */
-           break;
-
-        case 'h' : /* Connect to host */
-           if (argv[i][2] != '\0')
-             cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
+             break;
 
-             if (i >= argc)
+         case 'h' : /* Connect to host */
+             if (opt[1] != '\0')
+             {
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
              {
-               _cupsLangPuts(stderr,
-                             _("Error: need hostname after \"-h\" option."));
-               return (1);
-              }
-
-             cupsSetServer(argv[i]);
-           }
-           break;
-
-       default :
-           _cupsLangPrintf(stderr, _("lpmove: Unknown option \"%c\"."),
-                           argv[i][1]);
-           return (1);
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPuts(stderr, _("Error: need hostname after \"-h\" option."));
+                 return (1);
+               }
+
+               cupsSetServer(argv[i]);
+             }
+             break;
+
+         default :
+             _cupsLangPrintf(stderr, _("%s: Unknown option \"%c\"."), argv[0], *opt);
+             return (1);
+       }
       }
+    }
     else if (!jobid && !src)
     {
       if (num_dests == 0)
@@ -119,6 +118,7 @@ main(int  argc,                             /* I - Number of command-line arguments */
       _cupsLangPrintf(stderr, _("lpmove: Unknown argument \"%s\"."), argv[i]);
       return (1);
     }
+  }
 
   if ((!jobid && !src) || !dest)
   {
@@ -206,8 +206,3 @@ move_job(http_t     *http,          /* I - HTTP connection to server */
   else
     return (0);
 }
-
-
-/*
- * End of "$Id: lpmove.c 10996 2013-05-29 11:51:34Z msweet $".
- */
index 1ddff29..56b4f60 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: lpoptions.c 11558 2014-02-06 18:33:34Z msweet $"
- *
  * Printer option program for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -18,6 +16,7 @@
  */
 
 #include <cups/cups-private.h>
+#include <cups/ppd-private.h>
 
 
 /*
@@ -44,7 +43,8 @@ main(int  argc,                               /* I - Number of command-line arguments */
   int          num_dests;              /* Number of destinations */
   cups_dest_t  *dests;                 /* Destinations */
   cups_dest_t  *dest;                  /* Current destination */
-  char         *printer,               /* Printer name */
+  char         *opt,                   /* Option pointer */
+               *printer,               /* Printer name */
                *instance,              /* Instance name */
                *option;                /* Current option */
 
@@ -63,272 +63,256 @@ main(int  argc,                           /* I - Number of command-line arguments */
   changes     = 0;
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-')
     {
-      switch (argv[i][1])
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'd' : /* -d printer */
-           if (argv[i][2])
-             printer = argv[i] + 2;
-           else
-           {
-             i ++;
-             if (i >= argc)
-               usage();
-
-             printer = argv[i];
-           }
-
-            if ((instance = strrchr(printer, '/')) != NULL)
-             *instance++ = '\0';
-
-           if (num_dests == 0)
-             num_dests = cupsGetDests(&dests);
-
-            if (num_dests == 0 || !dests ||
-               (dest = cupsGetDest(printer, instance, num_dests,
-                                   dests)) == NULL)
-           {
-             _cupsLangPuts(stderr, _("lpoptions: Unknown printer or class."));
-             return (1);
-           }
+       switch (*opt)
+       {
+         case 'd' : /* -d printer */
+             if (opt[1] != '\0')
+             {
+               printer = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+                 usage();
 
-          /*
-           * Set the default destination...
-           */
+               printer = argv[i];
+             }
 
-           for (j = 0; j < num_dests; j ++)
-             dests[j].is_default = 0;
+             if ((instance = strrchr(printer, '/')) != NULL)
+               *instance++ = '\0';
 
-           dest->is_default = 1;
+             if (num_dests == 0)
+               num_dests = cupsGetDests(&dests);
 
-           cupsSetDests(num_dests, dests);
+             if (num_dests == 0 || !dests || (dest = cupsGetDest(printer, instance, num_dests, dests)) == NULL)
+             {
+               _cupsLangPuts(stderr, _("lpoptions: Unknown printer or class."));
+               return (1);
+             }
 
-           for (j = 0; j < dest->num_options; j ++)
-             if (cupsGetOption(dest->options[j].name, num_options,
-                               options) == NULL)
-               num_options = cupsAddOption(dest->options[j].name,
-                                           dest->options[j].value,
-                                           num_options, &options);
-           break;
+            /*
+             * Set the default destination...
+             */
 
-       case 'h' : /* -h server */
-           if (argv[i][2])
-             cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
-               usage();
+             for (j = 0; j < num_dests; j ++)
+               dests[j].is_default = 0;
 
-             cupsSetServer(argv[i]);
-           }
-           break;
+             dest->is_default = 1;
 
-        case 'E' : /* Encrypt connection */
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
-           break;
+             cupsSetDests(num_dests, dests);
 
-       case 'l' : /* -l (list options) */
-            if (dest == NULL)
-           {
-             if (num_dests == 0)
-               num_dests = cupsGetDests(&dests);
+             for (j = 0; j < dest->num_options; j ++)
+               if (cupsGetOption(dest->options[j].name, num_options,
+                                 options) == NULL)
+                 num_options = cupsAddOption(dest->options[j].name,
+                                             dest->options[j].value,
+                                             num_options, &options);
+             break;
 
-             if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL)
-               dest = dests;
-           }
+         case 'h' : /* -h server */
+             if (opt[1] != '\0')
+             {
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+                 usage();
 
-            if (dest == NULL)
-             _cupsLangPuts(stderr, _("lpoptions: No printers."));
-           else
-             list_options(dest);
+               cupsSetServer(argv[i]);
+             }
+             break;
 
-            changes = -1;
-           break;
+         case 'E' : /* Encrypt connection */
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             break;
 
-       case 'o' : /* -o option[=value] */
-            if (dest == NULL)
-           {
-             if (num_dests == 0)
-               num_dests = cupsGetDests(&dests);
+         case 'l' : /* -l (list options) */
+             if (dest == NULL)
+             {
+               if (num_dests == 0)
+                 num_dests = cupsGetDests(&dests);
 
-             if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL)
-               dest = dests;
+               if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL)
+                 dest = dests;
+             }
 
              if (dest == NULL)
-              {
                _cupsLangPuts(stderr, _("lpoptions: No printers."));
-                return (1);
-              }
-
-             for (j = 0; j < dest->num_options; j ++)
-               if (cupsGetOption(dest->options[j].name, num_options, options) == NULL)
-                 num_options = cupsAddOption(dest->options[j].name,
-                                             dest->options[j].value,
-                                             num_options, &options);
-           }
-
-           if (argv[i][2])
-             num_options = cupsParseOptions(argv[i] + 2, num_options, &options);
-           else
-           {
-             i ++;
-             if (i >= argc)
-               usage();
-
-             num_options = cupsParseOptions(argv[i], num_options, &options);
-           }
+             else
+               list_options(dest);
 
-           changes = 1;
-           break;
+             changes = -1;
+             break;
 
-       case 'p' : /* -p printer */
-           if (argv[i][2])
-             printer = argv[i] + 2;
-           else
-           {
-             i ++;
-             if (i >= argc)
-               usage();
-
-             printer = argv[i];
-           }
+         case 'o' : /* -o option[=value] */
+             if (dest == NULL)
+             {
+               if (num_dests == 0)
+                 num_dests = cupsGetDests(&dests);
+
+               if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL)
+                 dest = dests;
+
+               if (dest == NULL)
+               {
+                 _cupsLangPuts(stderr, _("lpoptions: No printers."));
+                 return (1);
+               }
+
+               for (j = 0; j < dest->num_options; j ++)
+                 if (cupsGetOption(dest->options[j].name, num_options, options) == NULL)
+                   num_options = cupsAddOption(dest->options[j].name,
+                                               dest->options[j].value,
+                                               num_options, &options);
+             }
 
-            if ((instance = strrchr(printer, '/')) != NULL)
-             *instance++ = '\0';
+             if (opt[1] != '\0')
+             {
+               num_options = cupsParseOptions(opt + 1, num_options, &options);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+                 usage();
 
-           if (num_dests == 0)
-             num_dests = cupsGetDests(&dests);
+               num_options = cupsParseOptions(argv[i], num_options, &options);
+             }
 
-            if ((dest = cupsGetDest(printer, instance, num_dests, dests)) == NULL)
-           {
-             num_dests = cupsAddDest(printer, instance, num_dests, &dests);
-             dest      = cupsGetDest(printer, instance, num_dests, dests);
+             changes = 1;
+             break;
 
-              if (dest == NULL)
+         case 'p' : /* -p printer */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("lpoptions: Unable to add printer or "
-                                 "instance: %s"),
-                               strerror(errno));
-               return (1);
+               printer = opt + 1;
+               opt += strlen(opt) - 1;
              }
-           }
+             else
+             {
+               i ++;
+               if (i >= argc)
+                 usage();
 
-           for (j = 0; j < dest->num_options; j ++)
-             if (cupsGetOption(dest->options[j].name, num_options, options) == NULL)
-               num_options = cupsAddOption(dest->options[j].name,
-                                           dest->options[j].value,
-                                           num_options, &options);
-           break;
+               printer = argv[i];
+             }
+
+             if ((instance = strrchr(printer, '/')) != NULL)
+               *instance++ = '\0';
 
-       case 'r' : /* -r option (remove) */
-            if (dest == NULL)
-           {
              if (num_dests == 0)
                num_dests = cupsGetDests(&dests);
 
-             if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL)
-               dest = dests;
-
-             if (dest == NULL)
-              {
-               _cupsLangPuts(stderr, _("lpoptions: No printers."));
-                return (1);
-              }
+             if ((dest = cupsGetDest(printer, instance, num_dests, dests)) == NULL)
+             {
+               num_dests = cupsAddDest(printer, instance, num_dests, &dests);
+               dest      = cupsGetDest(printer, instance, num_dests, dests);
+
+               if (dest == NULL)
+               {
+                 _cupsLangPrintf(stderr, _("lpoptions: Unable to add printer or instance: %s"), strerror(errno));
+                 return (1);
+               }
+             }
 
              for (j = 0; j < dest->num_options; j ++)
-               if (cupsGetOption(dest->options[j].name, num_options,
-                                 options) == NULL)
+               if (cupsGetOption(dest->options[j].name, num_options, options) == NULL)
                  num_options = cupsAddOption(dest->options[j].name,
-                                             dest->options[j].value,
-                                             num_options, &options);
-           }
-
-           if (argv[i][2])
-             option = argv[i] + 2;
-           else
-           {
-             i ++;
-             if (i >= argc)
-               usage();
+                                             dest->options[j].value,
+                                             num_options, &options);
+             break;
 
-             option = argv[i];
-           }
-
-            for (j = 0; j < num_options; j ++)
-             if (!_cups_strcasecmp(options[j].name, option))
+         case 'r' : /* -r option (remove) */
+             if (dest == NULL)
              {
-              /*
-               * Remove this option...
-               */
-
-               num_options --;
-
-               if (j < num_options)
-                 memmove(options + j, options + j + 1, sizeof(cups_option_t) * (size_t)(num_options - j));
-               break;
-              }
-
-           changes = 1;
-           break;
-
-        case 'x' : /* -x printer */
-           if (argv[i][2])
-             printer = argv[i] + 2;
-           else
-           {
-             i ++;
-             if (i >= argc)
-               usage();
-
-             printer = argv[i];
-           }
+               if (num_dests == 0)
+                 num_dests = cupsGetDests(&dests);
+
+               if ((dest = cupsGetDest(NULL, NULL, num_dests, dests)) == NULL)
+                 dest = dests;
+
+               if (dest == NULL)
+               {
+                 _cupsLangPuts(stderr, _("lpoptions: No printers."));
+                 return (1);
+               }
+
+               for (j = 0; j < dest->num_options; j ++)
+                 if (cupsGetOption(dest->options[j].name, num_options,
+                                   options) == NULL)
+                   num_options = cupsAddOption(dest->options[j].name,
+                                               dest->options[j].value,
+                                               num_options, &options);
+             }
 
-            if ((instance = strrchr(printer, '/')) != NULL)
-             *instance++ = '\0';
+             if (opt[1] != '\0')
+             {
+               option = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+                 usage();
 
-           if (num_dests == 0)
-             num_dests = cupsGetDests(&dests);
+               option = argv[i];
+             }
 
-            if ((dest = cupsGetDest(printer, instance, num_dests,
-                                   dests)) != NULL)
-           {
-              cupsFreeOptions(dest->num_options, dest->options);
+              num_options = cupsRemoveOption(option, num_options, &options);
 
-             /*
-             * If we are "deleting" the default printer, then just set the
-             * number of options to 0; if it is also the system default
-             * then cupsSetDests() will remove it for us...
-             */
+             changes = 1;
+             break;
 
-             if (dest->is_default)
+         case 'x' : /* -x printer */
+             if (opt[1] != '\0')
              {
-               dest->num_options = 0;
-               dest->options     = NULL;
+               printer = opt + 1;
+               opt += strlen(opt) - 1;
              }
              else
              {
-               num_dests --;
+               i ++;
+               if (i >= argc)
+                 usage();
 
-               j = dest - dests;
-               if (j < num_dests)
-                 memmove(dest, dest + 1, (size_t)(num_dests - j) * sizeof(cups_dest_t));
+               printer = argv[i];
              }
-           }
 
-           cupsSetDests(num_dests, dests);
-           dest    = NULL;
-           changes = -1;
-           break;
+             if ((instance = strrchr(printer, '/')) != NULL)
+               *instance++ = '\0';
+
+             if (num_dests == 0)
+               num_dests = cupsGetDests(&dests);
+
+              num_dests = cupsRemoveDest(printer, instance, num_dests, &dests);
 
-       default :
-           usage();
+             cupsSetDests(num_dests, dests);
+             dest    = NULL;
+             changes = -1;
+             break;
+
+         default :
+             usage();
+       }
       }
     }
     else
+    {
       usage();
+    }
+  }
 
   if (num_dests == 0)
     num_dests = cupsGetDests(&dests);
@@ -544,8 +528,3 @@ usage(void)
 
   exit(1);
 }
-
-
-/*
- * End of "$Id: lpoptions.c 11558 2014-02-06 18:33:34Z msweet $".
- */
index 9c076cb..c13739f 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: lpstat.c 12124 2014-08-28 15:37:22Z msweet $"
- *
  * "lpstat" command for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -50,6 +48,7 @@ main(int  argc,                               /* I - Number of command-line arguments */
 {
   int          i,                      /* Looping var */
                status;                 /* Exit status */
+  char         *opt;                   /* Option pointer */
   int          num_dests;              /* Number of user destinations */
   cups_dest_t  *dests;                 /* User destinations */
   int          long_status;            /* Long status report? */
@@ -73,395 +72,394 @@ main(int  argc,                           /* I - Number of command-line arguments */
   op          = 0;
 
   for (i = 1; i < argc; i ++)
+  {
     if (argv[i][0] == '-')
-      switch (argv[i][1])
+    {
+      for (opt = argv[i] + 1; *opt; opt ++)
       {
-        case 'D' : /* Show description */
-           long_status = 1;
-           break;
+       switch (argv[i][1])
+       {
+         case 'D' : /* Show description */
+             long_status = 1;
+             break;
 
-        case 'E' : /* Encrypt */
+         case 'E' : /* Encrypt */
 #ifdef HAVE_SSL
-           cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
+             cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
 #else
-            _cupsLangPrintf(stderr,
-                           _("%s: Sorry, no encryption support."),
-                           argv[0]);
+             _cupsLangPrintf(stderr,
+                             _("%s: Sorry, no encryption support."),
+                             argv[0]);
 #endif /* HAVE_SSL */
-           break;
+             break;
 
-       case 'H' : /* Show server and port */
-           if (cupsServer()[0] == '/')
-             _cupsLangPuts(stdout, cupsServer());
-           else
-             _cupsLangPrintf(stdout, "%s:%d", cupsServer(), ippPort());
-           op = 'H';
-            break;
-
-        case 'P' : /* Show paper types */
-           op = 'P';
-           break;
-
-        case 'R' : /* Show ranking */
-           ranking = 1;
-           break;
-
-        case 'S' : /* Show charsets */
-           op = 'S';
-           if (!argv[i][2])
-             i ++;
-           break;
-
-        case 'U' : /* Username */
-           if (argv[i][2])
-             cupsSetUser(argv[i] + 2);
-           else
-           {
-             i ++;
-             if (i >= argc)
+         case 'H' : /* Show server and port */
+             if (cupsServer()[0] == '/')
+               _cupsLangPuts(stdout, cupsServer());
+             else
+               _cupsLangPrintf(stdout, "%s:%d", cupsServer(), ippPort());
+             op = 'H';
+             break;
+
+         case 'P' : /* Show paper types */
+             op = 'P';
+             break;
+
+         case 'R' : /* Show ranking */
+             ranking = 1;
+             break;
+
+         case 'S' : /* Show charsets */
+             op = 'S';
+             if (!argv[i][2])
+               i ++;
+             break;
+
+         case 'U' : /* Username */
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected username after "
-                                 "\"-U\" option."),
-                               argv[0]);
-               return (1);
+               cupsSetUser(opt + 1);
+               opt += strlen(opt) - 1;
              }
+             else
+             {
+               i ++;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected username after \"-U\" option."), argv[0]);
+                 return (1);
+               }
 
-              cupsSetUser(argv[i]);
-           }
-           break;
+               cupsSetUser(argv[i]);
+             }
+             break;
 
-        case 'W' : /* Show which jobs? */
-           if (argv[i][2])
-             which = argv[i] + 2;
-           else
-           {
-             i ++;
+         case 'W' : /* Show which jobs? */
+             if (opt[1] != '\0')
+             {
+               which = opt + 1;
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option."), argv[0]);
+                 return (1);
+               }
 
-             if (i >= argc)
+               which = argv[i];
+             }
+
+             if (strcmp(which, "completed") && strcmp(which, "not-completed") && strcmp(which, "all"))
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - need \"completed\", "
-                                 "\"not-completed\", or \"all\" after "
-                                 "\"-W\" option."),
-                               argv[0]);
+               _cupsLangPrintf(stderr, _("%s: Error - need \"completed\", \"not-completed\", or \"all\" after \"-W\" option."), argv[0]);
                return (1);
-              }
+             }
+             break;
 
-             which = argv[i];
-           }
+         case 'a' : /* Show acceptance status */
+             op = 'a';
 
-            if (strcmp(which, "completed") && strcmp(which, "not-completed") &&
-               strcmp(which, "all"))
-           {
-             _cupsLangPrintf(stderr,
-                             _("%s: Error - need \"completed\", "
-                               "\"not-completed\", or \"all\" after "
-                               "\"-W\" option."),
-                             argv[0]);
-             return (1);
-           }
-           break;
+             if (opt[1] != '\0')
+             {
+               check_dest(argv[0], opt + 1, &num_dests, &dests);
 
-        case 'a' : /* Show acceptance status */
-           op = 'a';
+               status |= show_accepting(opt + 1, num_dests, dests);
+               opt += strlen(opt) - 1;
+             }
+             else if ((i + 1) < argc && argv[i + 1][0] != '-')
+             {
+               i ++;
 
-           if (argv[i][2])
-           {
-              check_dest(argv[0], argv[i] + 2, &num_dests, &dests);
+               check_dest(argv[0], argv[i], &num_dests, &dests);
 
-             status |= show_accepting(argv[i] + 2, num_dests, dests);
-           }
-           else if ((i + 1) < argc && argv[i + 1][0] != '-')
-           {
-             i ++;
+               status |= show_accepting(argv[i], num_dests, dests);
+             }
+             else
+             {
+               if (num_dests <= 1)
+               {
+                 cupsFreeDests(num_dests, dests);
+                 num_dests = cupsGetDests(&dests);
+
+                 if (num_dests == 0 && (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST || cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
+                 {
+                   _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
+                   return (1);
+                 }
+               }
 
-              check_dest(argv[0], argv[i], &num_dests, &dests);
+               status |= show_accepting(NULL, num_dests, dests);
+             }
+             break;
 
-             status |= show_accepting(argv[i], num_dests, dests);
-           }
-           else
-           {
-              if (num_dests <= 1)
+         case 'c' : /* Show classes and members */
+             op = 'c';
+
+             if (opt[1] != '\0')
              {
-               cupsFreeDests(num_dests, dests);
-               num_dests = cupsGetDests(&dests);
+               check_dest(argv[0], opt + 1, &num_dests, &dests);
+
+               status |= show_classes(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else if ((i + 1) < argc && argv[i + 1][0] != '-')
+             {
+               i ++;
+
+               check_dest(argv[0], argv[i], &num_dests, &dests);
+
+               status |= show_classes(argv[i]);
+             }
+             else
+               status |= show_classes(NULL);
+             break;
+
+         case 'd' : /* Show default destination */
+             op = 'd';
+
+             if (num_dests != 1 || !dests[0].is_default)
+             {
+               cupsFreeDests(num_dests, dests);
+
+               dests     = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
+               num_dests = dests ? 1 : 0;
 
                if (num_dests == 0 &&
                    (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
                     cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
                {
-                 _cupsLangPrintf(stderr,
-                                 _("%s: Error - add '/version=1.1' to server "
-                                   "name."), argv[0]);
+                 _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
                  return (1);
                }
              }
 
-             status |= show_accepting(NULL, num_dests, dests);
-           }
-           break;
-
-        case 'c' : /* Show classes and members */
-           op = 'c';
-
-           if (argv[i][2])
-           {
-              check_dest(argv[0], argv[i] + 2, &num_dests, &dests);
+             show_default(dests);
+             break;
 
-             status |= show_classes(argv[i] + 2);
-           }
-           else if ((i + 1) < argc && argv[i + 1][0] != '-')
-           {
-             i ++;
+         case 'f' : /* Show forms */
+             op   = 'f';
+             if (opt[1] != '\0')
+             {
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
+               if (i >= argc)
+                 return (1);
+             }
+             break;
 
-              check_dest(argv[0], argv[i], &num_dests, &dests);
+         case 'h' : /* Connect to host */
+             if (opt[1] != '\0')
+             {
+               cupsSetServer(opt + 1);
+               opt += strlen(opt) - 1;
+             }
+             else
+             {
+               i ++;
 
-             status |= show_classes(argv[i]);
-           }
-           else
-             status |= show_classes(NULL);
-           break;
+               if (i >= argc)
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - expected hostname after \"-h\" option."), argv[0]);
+                 return (1);
+               }
 
-        case 'd' : /* Show default destination */
-           op = 'd';
+               cupsSetServer(argv[i]);
+             }
+             break;
 
-            if (num_dests != 1 || !dests[0].is_default)
-           {
-             cupsFreeDests(num_dests, dests);
+         case 'l' : /* Long status or long job status */
+             long_status = 2;
+             break;
 
-             dests     = cupsGetNamedDest(CUPS_HTTP_DEFAULT, NULL, NULL);
-             num_dests = dests ? 1 : 0;
+         case 'o' : /* Show jobs by destination */
+             op = 'o';
 
-             if (num_dests == 0 &&
-                 (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
-                  cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
+             if (opt[1])
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - add '/version=1.1' to server "
-                                 "name."), argv[0]);
-               return (1);
+               check_dest(argv[0], opt + 1, &num_dests, &dests);
+
+               status |= show_jobs(opt + 1, NULL, long_status, ranking, which);
+               opt += strlen(opt) - 1;
              }
-           }
+             else if ((i + 1) < argc && argv[i + 1][0] != '-')
+             {
+               i ++;
 
-            show_default(dests);
-           break;
+               check_dest(argv[0], argv[i], &num_dests, &dests);
 
-        case 'f' : /* Show forms */
-           op   = 'f';
-           if (!argv[i][2])
-             i ++;
-           break;
+               status |= show_jobs(argv[i], NULL, long_status, ranking, which);
+             }
+             else
+               status |= show_jobs(NULL, NULL, long_status, ranking, which);
+             break;
 
-        case 'h' : /* Connect to host */
-           if (argv[i][2])
-             cupsSetServer(argv[i] + 2);
-           else
-           {
-             i ++;
+         case 'p' : /* Show printers */
+             op = 'p';
 
-             if (i >= argc)
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - expected hostname after "
-                                 "\"-h\" option."),
-                               argv[0]);
-               return (1);
-              }
+               check_dest(argv[0], opt + 1, &num_dests, &dests);
 
-             cupsSetServer(argv[i]);
-           }
-           break;
+               status |= show_printers(opt + 1, num_dests, dests,
+                                       long_status);
+               opt += strlen(opt) - 1;
+             }
+             else if ((i + 1) < argc && argv[i + 1][0] != '-')
+             {
+               i ++;
 
-        case 'l' : /* Long status or long job status */
-           long_status = 2;
-           break;
+               check_dest(argv[0], argv[i], &num_dests, &dests);
 
-        case 'o' : /* Show jobs by destination */
-           op = 'o';
+               status |= show_printers(argv[i], num_dests, dests, long_status);
+             }
+             else
+             {
+               if (num_dests <= 1)
+               {
+                 cupsFreeDests(num_dests, dests);
+                 num_dests = cupsGetDests(&dests);
+
+                 if (num_dests == 0 &&
+                     (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
+                      cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
+                 {
+                   _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
+                   return (1);
+                 }
+               }
 
-           if (argv[i][2])
-           {
-              check_dest(argv[0], argv[i] + 2, &num_dests, &dests);
+               status |= show_printers(NULL, num_dests, dests, long_status);
+             }
+             break;
 
-             status |= show_jobs(argv[i] + 2, NULL, long_status, ranking,
-                                 which);
-           }
-           else if ((i + 1) < argc && argv[i + 1][0] != '-')
-           {
-             i ++;
+         case 'r' : /* Show scheduler status */
+             op = 'r';
 
-              check_dest(argv[0], argv[i], &num_dests, &dests);
+             show_scheduler();
+             break;
 
-             status |= show_jobs(argv[i], NULL, long_status, ranking, which);
-           }
-           else
-             status |= show_jobs(NULL, NULL, long_status, ranking, which);
-           break;
+         case 's' : /* Show summary */
+             op = 's';
 
-        case 'p' : /* Show printers */
-           op = 'p';
+             if (num_dests <= 1)
+             {
+               cupsFreeDests(num_dests, dests);
+               num_dests = cupsGetDests(&dests);
 
-           if (argv[i][2])
-           {
-              check_dest(argv[0], argv[i] + 2, &num_dests, &dests);
+               if (num_dests == 0 &&
+                   (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
+                    cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
+               {
+                 _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
+                 return (1);
+               }
+             }
 
-             status |= show_printers(argv[i] + 2, num_dests, dests,
-                                     long_status);
-           }
-           else if ((i + 1) < argc && argv[i + 1][0] != '-')
-           {
-             i ++;
+             show_default(cupsGetDest(NULL, NULL, num_dests, dests));
+             status |= show_classes(NULL);
+             status |= show_devices(NULL, num_dests, dests);
+             break;
 
-              check_dest(argv[0], argv[i], &num_dests, &dests);
+         case 't' : /* Show all info */
+             op = 't';
 
-             status |= show_printers(argv[i], num_dests, dests, long_status);
-           }
-           else
-           {
-              if (num_dests <= 1)
+             if (num_dests <= 1)
              {
-               cupsFreeDests(num_dests, dests);
+               cupsFreeDests(num_dests, dests);
                num_dests = cupsGetDests(&dests);
 
                if (num_dests == 0 &&
                    (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
                     cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
                {
-                 _cupsLangPrintf(stderr,
-                                 _("%s: Error - add '/version=1.1' to server "
-                                   "name."), argv[0]);
+                 _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
                  return (1);
                }
              }
 
+             show_scheduler();
+             show_default(cupsGetDest(NULL, NULL, num_dests, dests));
+             status |= show_classes(NULL);
+             status |= show_devices(NULL, num_dests, dests);
+             status |= show_accepting(NULL, num_dests, dests);
              status |= show_printers(NULL, num_dests, dests, long_status);
-           }
-           break;
-
-        case 'r' : /* Show scheduler status */
-           op = 'r';
-
-           show_scheduler();
-           break;
-
-        case 's' : /* Show summary */
-           op = 's';
+             status |= show_jobs(NULL, NULL, long_status, ranking, which);
+             break;
 
-            if (num_dests <= 1)
-           {
-             cupsFreeDests(num_dests, dests);
-             num_dests = cupsGetDests(&dests);
+         case 'u' : /* Show jobs by user */
+             op = 'u';
 
-             if (num_dests == 0 &&
-                 (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
-                  cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
+             if (opt[1] != '\0')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - add '/version=1.1' to server "
-                                 "name."), argv[0]);
-               return (1);
+               status |= show_jobs(NULL, opt + 1, long_status, ranking, which);
+               opt += strlen(opt) - 1;
              }
-           }
-
-           show_default(cupsGetDest(NULL, NULL, num_dests, dests));
-           status |= show_classes(NULL);
-           status |= show_devices(NULL, num_dests, dests);
-           break;
-
-        case 't' : /* Show all info */
-           op = 't';
-
-            if (num_dests <= 1)
-           {
-             cupsFreeDests(num_dests, dests);
-             num_dests = cupsGetDests(&dests);
-
-             if (num_dests == 0 &&
-                 (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
-                  cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
+             else if ((i + 1) < argc && argv[i + 1][0] != '-')
              {
-               _cupsLangPrintf(stderr,
-                               _("%s: Error - add '/version=1.1' to server "
-                                 "name."), argv[0]);
-               return (1);
+               i ++;
+               status |= show_jobs(NULL, argv[i], long_status, ranking, which);
              }
-           }
-
-           show_scheduler();
-           show_default(cupsGetDest(NULL, NULL, num_dests, dests));
-           status |= show_classes(NULL);
-           status |= show_devices(NULL, num_dests, dests);
-           status |= show_accepting(NULL, num_dests, dests);
-           status |= show_printers(NULL, num_dests, dests, long_status);
-           status |= show_jobs(NULL, NULL, long_status, ranking, which);
-           break;
-
-        case 'u' : /* Show jobs by user */
-           op = 'u';
-
-           if (argv[i][2])
-             status |= show_jobs(NULL, argv[i] + 2, long_status, ranking,
-                                 which);
-           else if ((i + 1) < argc && argv[i + 1][0] != '-')
-           {
-             i ++;
-             status |= show_jobs(NULL, argv[i], long_status, ranking, which);
-           }
-           else
-             status |= show_jobs(NULL, NULL, long_status, ranking, which);
-           break;
+             else
+               status |= show_jobs(NULL, NULL, long_status, ranking, which);
+             break;
 
-        case 'v' : /* Show printer devices */
-           op = 'v';
+         case 'v' : /* Show printer devices */
+             op = 'v';
 
-           if (argv[i][2])
-           {
-              check_dest(argv[0], argv[i] + 2, &num_dests, &dests);
+             if (opt[1] != '\0')
+             {
+               check_dest(argv[0], opt + 1, &num_dests, &dests);
 
-             status |= show_devices(argv[i] + 2, num_dests, dests);
-           }
-           else if ((i + 1) < argc && argv[i + 1][0] != '-')
-           {
-             i ++;
+               status |= show_devices(opt + 1, num_dests, dests);
+               opt += strlen(opt) - 1;
+             }
+             else if ((i + 1) < argc && argv[i + 1][0] != '-')
+             {
+               i ++;
 
-              check_dest(argv[0], argv[i], &num_dests, &dests);
+               check_dest(argv[0], argv[i], &num_dests, &dests);
 
-             status |= show_devices(argv[i], num_dests, dests);
-           }
-           else
-           {
-             if (num_dests <= 1)
+               status |= show_devices(argv[i], num_dests, dests);
+             }
+             else
              {
-               cupsFreeDests(num_dests, dests);
-               num_dests = cupsGetDests(&dests);
-
-               if (num_dests == 0 &&
-                   (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
-                    cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
+               if (num_dests <= 1)
                {
-                 _cupsLangPrintf(stderr,
-                                 _("%s: Error - add '/version=1.1' to server "
-                                   "name."), argv[0]);
-                 return (1);
+                 cupsFreeDests(num_dests, dests);
+                 num_dests = cupsGetDests(&dests);
+
+                 if (num_dests == 0 &&
+                     (cupsLastError() == IPP_STATUS_ERROR_BAD_REQUEST ||
+                      cupsLastError() == IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED))
+                 {
+                   _cupsLangPrintf(stderr, _("%s: Error - add '/version=1.1' to server name."), argv[0]);
+                   return (1);
+                 }
                }
-             }
 
-             status |= show_devices(NULL, num_dests, dests);
-           }
-           break;
+               status |= show_devices(NULL, num_dests, dests);
+             }
+             break;
 
-       default :
-           _cupsLangPrintf(stderr,
-                           _("%s: Error - unknown option \"%c\"."),
-                           argv[0], argv[i][1]);
-           return (1);
+         default :
+             _cupsLangPrintf(stderr, _("%s: Error - unknown option \"%c\"."), argv[0], argv[i][1]);
+             return (1);
+       }
       }
+    }
     else
     {
       status |= show_jobs(argv[i], NULL, long_status, ranking, which);
       op = 'o';
     }
+  }
 
   if (!op)
     status |= show_jobs(NULL, cupsUser(), long_status, ranking, which);
@@ -546,7 +544,7 @@ check_dest(const char  *command,    /* I  - Command name */
 
     for (pptr = printer; !isspace(*dptr & 255) && *dptr != ',' && *dptr;)
     {
-      if ((pptr - printer) < (sizeof(printer) - 1))
+      if ((size_t)(pptr - printer) < (sizeof(printer) - 1))
         *pptr++ = *dptr++;
       else
       {
@@ -1835,11 +1833,7 @@ show_printers(const char  *printers,     /* I - Destinations */
          {
            _cupsLangPuts(stdout, _("\tConnection: direct"));
 
-           if (make_model && strstr(make_model, "System V Printer"))
-             _cupsLangPrintf(stdout,
-                             _("\tInterface: %s/interfaces/%s"),
-                             cg->cups_serverroot, printer);
-           else if (make_model && !strstr(make_model, "Raw Printer"))
+           if (make_model && !strstr(make_model, "Raw Printer"))
              _cupsLangPrintf(stdout,
                              _("\tInterface: %s/ppd/%s.ppd"),
                              cg->cups_serverroot, printer);
@@ -1958,11 +1952,7 @@ show_printers(const char  *printers,     /* I - Destinations */
              {
                _cupsLangPuts(stdout, _("\tConnection: direct"));
 
-               if (make_model && strstr(make_model, "System V Printer"))
-                 _cupsLangPrintf(stdout,
-                                 _("\tInterface: %s/interfaces/%s"),
-                                 cg->cups_serverroot, printer);
-               else if (make_model && !strstr(make_model, "Raw Printer"))
+               if (make_model && !strstr(make_model, "Raw Printer"))
                  _cupsLangPrintf(stdout,
                                  _("\tInterface: %s/ppd/%s.ppd"),
                                  cg->cups_serverroot, printer);
@@ -2031,8 +2021,3 @@ show_scheduler(void)
   else
     _cupsLangPuts(stdout, _("scheduler is not running"));
 }
-
-
-/*
- * End of "$Id: lpstat.c 12124 2014-08-28 15:37:22Z msweet $".
- */
index 77732b7..90a7f3b 100644 (file)
@@ -1,6 +1,4 @@
 #
-# "$Id: Makefile 11928 2014-06-13 00:08:32Z msweet $"
-#
 # Template makefile for CUPS.
 #
 # Copyright 2007-2014 by Apple Inc.
@@ -197,8 +195,3 @@ uninstall-languages:
        done
 
 uninstall-langbundle:
-
-
-#
-# End of "$Id: Makefile 11928 2014-06-13 00:08:32Z msweet $".
-#
index 51e454f..d19f433 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Class List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Queue Name <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Queue Name <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Description</TH><TH>Location</TH><TH>Members</TH><TH>Status</TH></TR>
+<TR><TH>Queue Name</TH><TH>Description</TH><TH>Location</TH><TH>Members</TH><TH>Status</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 4b1fb3e..dc2cf10 100644 (file)
@@ -8,17 +8,17 @@
 <TR>
 <TH CLASS="label">Name:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Darf alle druckbaren Zeichen ausser "/", "#", und Leerzeichen enthalten)</SMALL></TD>
+<SMALL>(Darf alle druckbaren Zeichen außer "/", "#", und Leerzeichen enthalten)</SMALL></TD>
 </TR>
 <TR>
 <TH CLASS="label">Beschreibung:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")</SMALL></TD>
+<SMALL>(Menschenlesbare Beschreibung wie etwa "HP LaserJet mit Duplexer")</SMALL></TD>
 </TR>
 <TR>
 <TH CLASS="label">Ort:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Für Menschen lesbarer Ort wie "Lab 1")</SMALL></TD>
+<SMALL>(Menschenlesbarer Ort wie etwa "Labor 1")</SMALL></TD>
 </TR>
 <TR>
 <TH CLASS="label">Mitglieder:</TH>
index 8cc2b17..e618a73 100644 (file)
@@ -14,7 +14,7 @@
 <TR>
 <TH CLASS="label">Name:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Darf druckbare Zeichen enthalten ausser "/", "#", und Leerzeichen)</SMALL></TD>
+<SMALL>(Darf alle druckbaren Zeichen außer "/", "#", und Leerzeichen enthalten)</SMALL></TD>
 </TR>
 <TR>
 <TH CLASS="label">Beschreibung:</TH>
@@ -33,7 +33,7 @@
 <TR>
 <TH CLASS="label">Freigabe:</TH>
 <TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Gebe diesen Drucker frei</TD>
+Drucker im Netzwerk freigeben</TD>
 </TR>
 <TR>
 <TD></TD>
index 4097e33..c6c4d70 100644 (file)
@@ -2,13 +2,13 @@
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
 
-<H2 CLASS="title">RSS Subskription hinzufügen</H2>
+<H2 CLASS="title">RSS-Abonnement hinzufügen</H2>
 
-<TABLE SUMMARY="Forumlar zum Hinzufügen einer RSS Subskription">
+<TABLE SUMMARY="Formular zum Hinzufügen eines RSS-Abonnements">
 <TR>
 <TH CLASS="label">Name:</TH>
 <TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Darf alle druckbaren Zeichen ausser Leerzeichen, "/", "?", und "#" enthalten)</SMALL></TD>
+<SMALL>(Darf alle druckbaren Zeichen außer Leerzeichen, "/", "?" und "#" enthalten)</SMALL></TD>
 </TR>
 <TR>
 <TH CLASS="label">Warteschlange:</TH>
@@ -19,7 +19,7 @@
 <TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Auftrag erstellt<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Auftrag abgeschlossen<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Auftrag angehalten<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Auftrags Parameter Geändert</TD>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Auftragsparameter geändert</TD>
 <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
 <TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Warteschlange angehalten<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Warteschlange hinzugefügt<BR>
@@ -29,7 +29,7 @@
 <TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Server gestartet<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Server angehalten<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Server neu gestartet<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Server Sicherheits Prüfung</TD>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Server-Sicherheitsprüfung</TD>
 </TR>
 <TR>
 <TH CLASS="label">Maximale Ereignisse in Durchführung:</TH>
@@ -37,7 +37,7 @@
 </TR>
 <TR>
 <TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription hinzufügen"></TD>
+<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="RSS-Abonnement hinzufügen"></TD>
 </TR>
 </TABLE>
 
index 965d072..fb2851a 100644 (file)
@@ -3,23 +3,23 @@
     <H2 CLASS="title">Drucker</H2>
 
     <P>
-    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Füge Drucker hinzu"></FORM>
-    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Finde neue Drucker"></FORM>
-    <FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Drucker"></FORM>
-    {have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exportiere Drucker nach Samba"></FORM>:}
+    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Drucker hinzufügen"></FORM>
+    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Neue Drucker suchen"></FORM>
+    <FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Drucker verwalten"></FORM>
+    {have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Drucker für Samba freigeben"></FORM>:}
     </P>
 
     <H2 CLASS="title">Klassen</H2>
 
     <P>
     <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Klasse hinzufügen"></FORM>
-    <FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Klasse managen"></FORM>
+    <FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Klassen verwalten"></FORM>
     </P>
 
     <H2 CLASS="title">Aufträge</H2>
 
     <P>
-    <FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aufträge managen"></FORM>
+    <FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aufträge verwalten"></FORM>
     </P>
   </div>
   <div class="halves">
@@ -27,9 +27,9 @@
 
     <P>
     <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Konfigurationsdatei bearbeiten"></FORM>
-    <FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Zugriffs-Log zeigen"></FORM>
-    <FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Fehler-Log zeigen"></FORM>
-    <FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Seiten-Log zeigen"></FORM>
+    <FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Zugriffsprotokoll anzeigen"></FORM>
+    <FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Fehlerprotokoll anzeigen"></FORM>
+    <FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Seitenprotokoll anzeigen"></FORM>
     </P>
 
     {SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
     <P><A HREF="/admin/">Erweitert <SMALL>&#x25bc;</SMALL></A><BR>
     <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
     <INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-    <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Drucker dieses Systems im Netz freigeben<BR>
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max clients\:
+    <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Mit diesem System verbundene Drucker freigeben<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale Anzahl an Clients\:
     <INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Erlaube Druck aus dem Internet<BR>
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Mache die Web-Schnittstelle bekannt<BR>
-    <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube Fernwartung<BR>
-    {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Benutze Kerberos-Authentifizierung (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-    <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Erlaube Benutzern beliebige Aufträge abzubrechen (nicht nur die Eigenen)<BR>
-    <INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Behalte die Auftragshistorie<BR>
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale Auftragsanzehl (0 für unbegrenzt)\:
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Drucken aus dem Internet zulassen<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Weboberfläche im Netzwerk bekanntmachen<BR>
+    <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Fernwartung zulassen<BR>
+    {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Kerberos-Authentifizierung verwenden (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+    <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Benutzern erlauben beliebige Aufträge abzubrechen (nicht nur die eigenen)<BR>
+    <INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Auftragsverlauf behalten<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale Auftragsanzahl (0 für unbegrenzt)\:
     <INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Behalte Metadaten\:
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Metadaten aufbewahren\:
     <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Behalte Dokumente\:
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dokumente aufbewahren\:
     <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-    <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting<BR>
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale logDateigrösse\:
+    <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Mehr Informationen zur Fehlersuche speichern<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale Protokoll-Dateigröße\:
     <INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
 
-    :<P><B>Server Einstellungen:</B></P>
+    :<P><B>Server-Einstellungen:</B></P>
 
     <P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Erweitert <SMALL>&#x25b6;</SMALL></A><BR>
     <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-    <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Drucker dieses Systems im Netz freigeben<BR>
-    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Erlaube den Druck aus dem Internet<BR>
-    <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube Fernwartung<BR>
-    {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Benutze Kerberos Authentifizierung (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-    <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Erlaube Benutzern alle Aufträge zu löschen (nicht nur die eigenen)<BR>
-    <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Speichere debugging Information zur Fehlersuche</P>
+    <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Mit diesem System verbundene Drucker freigeben<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Drucken aus dem Internet zulassen<BR>
+    <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Fernwartung zulassen<BR>
+    {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Kerberos-Authentifizierung verwenden (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+    <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Benutzern erlauben beliebige Aufträge abzubrechen (nicht nur die eigenen)<BR>
+    <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Mehr Informationen zur Fehlersuche speichern</P>
 
     }
-    <P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Ändere Eintellungen"></P>
+    <P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Einstellungen ändern"></P>
 
     </FORM>}
   </div>
 </div>
 
 <div class="row">
-  <H2 CLASS="title">RSS Subskriptionen</H2>
+  <H2 CLASS="title">RSS-Abonnements</H2>
 
   <P>
-  <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription hinzufügen"></FORM>
+  <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="RSS-Abonnement hinzufügen"></FORM>
   </P>
 
-  {notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subskriptionen">
-  <THEAD><TR><TH>Name</TH><TH>Ereignisse</TH><TH>Queue Name</TH></TR></THEAD>
+  {notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS-Abonnements">
+  <THEAD><TR><TH>Name</TH><TH>Ereignis</TH><TH>Warteschlange</TH></TR></THEAD>
   <TBODY>{[notify_subscription_id]
   <TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-  <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription kündigen"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:All Queues}</TD></TR>}
+  <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="RSS-Abonnement beenden"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Alle Warteschlangen}</TD></TR>}
   </TBODY>
   </TABLE>:}
-</div>
\ No newline at end of file
+</div>
index 4aaf8ea..6e3b6f3 100644 (file)
 <TH CLASS="label">Lokale Drucker\:</TH>
 <TD>
 {[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unbekannt?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unbekannt?({device_make_and_model}):}<BR>
+VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
 :}}
 </TD>
 </TR>
 <TR>
-<TH CLASS="label">Entdeckte Netzwerkdrucker\:</TH>
+<TH CLASS="label">Gefundene Netzwerkdrucker\:</TH>
 <TD>
 {[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
-VALUE="{device_uri}{?device_make_and_model!Unbekannt?|{device_make_and_model}:}">
-{device_info} {?device_make_and_model!Unbekannt?({device_make_and_model}):}<BR>
+VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
+{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
 :}:}}
 </TD>
 </TR>
@@ -46,4 +46,4 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
 </TABLE>
 
 </FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Suche nach Druckern...</P>}
+ALT="Beschäftigungsanzeige"> Suche nach Druckern…</P>}
index 194453c..8ba15aa 100644 (file)
@@ -1,4 +1,4 @@
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt4/5)}</H2>
+<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 4/5)}</H2>
 
 <FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <TR>
 <TH CLASS="label">Freigabe:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-Diesen Drucker {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz freigeben</TD>
+Drucker {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netzwerk freigeben</TD>
 </TR>
 <TR>
-<TH CLASS="label">Marke:</TH>
+<TH CLASS="label">Hersteller:</TH>
 <TD>
 <SELECT NAME="PPD_MAKE" SIZE="10">
 {[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
@@ -48,13 +48,13 @@ Diesen Drucker {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz
 <TD>&nbsp;</TD>
 </TR>
 <TR>
-<TH CLASS="label">Or Provide a PPD File:</TH>
+<TH CLASS="label">Oder PPD-Datei bereitstellen:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
 TYPE="FILE" NAME="PPD_FILE"></TD>
 </TR>
 <TR>
 <TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Add Printer:Modify Printer}"></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Drucker hinzufügen:Drucker ändern}"></TD>
 </TR>
 </TABLE>
 
index 174b9c6..cb9b6f3 100644 (file)
@@ -28,7 +28,7 @@
 <TR>
 <TH CLASS="label">Freigabe:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-Dieser Drucker ist {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz freigeben</TD>
+Drucker {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netzwerk freigeben</TD>
 </TR>
 <TR>
 <TH CLASS="label">Hersteller:</TH>
@@ -44,7 +44,7 @@ Dieser Drucker ist {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im
 </TD>
 </TR>
 <TR>
-<TH CLASS="label">Oder stelle eine PPD Datei zur Verfügung:</TH>
+<TH CLASS="label">Oder PPD-Datei bereitstellen:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
 TYPE="FILE" NAME="PPD_FILE"></TD>
 </TR>
index d410884..430a397 100644 (file)
@@ -11,7 +11,7 @@
 <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
 </TR>
 <TR>
-<TH CLASS="label">Baud Rate:</TH>
+<TH CLASS="label">Baudrate:</TH>
 <TD><SELECT NAME="BAUDRATE">
 {[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
 </SELECT></TD>
@@ -25,7 +25,7 @@
 </SELECT></TD>
 </TR>
 <TR>
-<TH CLASS="label">Daten Bits:</TH>
+<TH CLASS="label">Datenbits:</TH>
 <TD><SELECT NAME="BITS">
 <OPTION {?bits=8?SELECTED:}>8
 <OPTION {?bits=7?SELECTED:}>7
@@ -34,7 +34,7 @@
 <TR>
 <TH CLASS="label">Flusskontrolle:</TH>
 <TD><SELECT NAME="FLOW">
-<OPTION VALUE="none" {?flow=none?SELECTED:}>None
+<OPTION VALUE="none" {?flow=none?SELECTED:}>Keine
 <OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Software)
 <OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Hardware)
 <OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Hardware)
index bbdc5e4..2096a32 100644 (file)
@@ -1,4 +1,4 @@
-<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt2/5)}</H2>
+<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 2/5)}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
@@ -8,7 +8,7 @@
 
 <TABLE>
 <TR>
-<TH CLASS="label">Verbindung-URI:</TH>
+<TH CLASS="label">Verbindung:</TH>
 <TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
 </TR>
 <TR>
@@ -27,7 +27,8 @@
     socket://hostname:9100
 </PRE>
 
-<P>See <A HREF="/help/network.html" TARGET="_blank">"Netzwerkdrucker"</A> für die korrekte URI ihres Druckers.</P>
+<P>Beispiele und gängige URIs finden sich in der Hilfe unter
+<A HREF="/help/network.html" TARGET="_blank">"Netzwerkdrucker"</A>.</P>
 
 </TD>
 </TR>
index 0cbdd78..9e72535 100644 (file)
@@ -1,6 +1,5 @@
 <H2 CLASS="title">Klasse {printer_name} löschen</H2>
 
-<P><B>Warnung:</B> Sind sie sicher dass sie die Klasse
-{printer_name} löschen wollen?</P>
+<P><B>Warnung:</B> Sind Sie sicher, dass Sie die Klasse {printer_name} wirklich löschen möchten?</P>
 
 <P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Klasse löschen"></FORM></P>
index 658defa..7a2c497 100644 (file)
@@ -1,4 +1,4 @@
 <H2 CLASS="title">Klasse {printer_name} ändern</H2>
 
-<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> wurde
+<P>Die Klasse <A HREF="/classes/{printer_name}">{printer_name}</A> wurde
 erfolgreich geändert.
index c0d9a95..eecb47b 100644 (file)
@@ -1,15 +1,15 @@
 <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}},
-{printer_is_accepting_jobs=0?Aufträge werden ablehnt:Aufträge werden akzeptiert},
-{server_is_sharing_printers=0?Keine (Server):{printer_is_shared=0?Keine:}} Netzfreigabe{default_name={printer_name}?, Standarddrucker:})</H2>
+({printer_state=3?Leerlauf:{printer_state=4?Beschäftigt:Angehalten}},
+{printer_is_accepting_jobs=0?Aufträge ablehnen:Aufträge annehmen},
+{server_is_sharing_printers=0?keine:{printer_is_shared=0?keine:}} Netzwerkfreigabe{default_name={printer_name}?, Standardklasse:})</H2>
 
 <FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
 <OPTION VALUE="">Wartung</OPTION>
-<OPTION VALUE="print-test-page">Drucke Testseite</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Klasse starten</OPTION>:<OPTION VALUE="stop-class">Klasse stoppen</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aufträge akzeptieren</OPTION>:<OPTION VALUE="reject-jobs">Aufträge ablehnen</OPTION>}
+<OPTION VALUE="print-test-page">Testseite drucken</OPTION>
+{printer_state=5?<OPTION VALUE="start-class">Klasse starten</OPTION>:<OPTION VALUE="stop-class">Klasse anhalten</OPTION>}
+{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aufträge annehmen</OPTION>:<OPTION VALUE="reject-jobs">Aufträge ablehnen</OPTION>}
 <OPTION VALUE="move-jobs">Alle Aufträge verschieben</OPTION>
 <OPTION VALUE="purge-jobs">Alle Aufträge abbrechen</OPTION>
 </SELECT>
@@ -25,7 +25,7 @@
 <OPTION VALUE="modify-class">Klasse ändern</OPTION>
 <OPTION VALUE="delete-class">Klasse löschen</OPTION>
 <OPTION VALUE="set-class-options">Standardeinstellungen festlegen</OPTION>
-<OPTION VALUE="set-as-default">Als Standard festlegen</OPTION>
+<OPTION VALUE="set-as-default">Als Standardklasse festlegen</OPTION>
 <OPTION VALUE="set-allowed-users">Erlaubte Benutzer festlegen</OPTION>
 </SELECT>
 <INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
@@ -34,7 +34,7 @@
 <TABLE SUMMARY="{printer_name}">
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Beschreibung:</TH><TD>{printer_info}</TD></TR>
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Ort:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Mitglieder:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Mitglieder:</TH><TD>{?member_uris=?Keine:{member_uris}}</TD></TR>
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Standardeinstellungen:</TH><TD>job-sheets={job_sheets_default}
 media={media_default?{media_default}:unbekannt}
 {sides_default?sides={sides_default}:}</TD></TR>
index c04d02b..4d2a3fd 100644 (file)
@@ -1,11 +1,11 @@
 {#printer_name=0?:
-<TABLE CLASS="list" SUMMARY="Class List">
+<TABLE CLASS="list" SUMMARY="Klassenliste">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Wartweschlange <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Warteschlange <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Mitglieder</TH><TH>Status</TH></TR>
+<TR><TH>Klasse</TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Mitglieder</TH><TH>Status</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Keine:{member_uris}}</TD><TD>{printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
+<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Keine:{member_uris}}</TD><TD>{printer_state=3?Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
 }
 </TBODY>
 </TABLE></DIV>}
index 126389b..fd793b3 100644 (file)
@@ -1,7 +1,7 @@
 <H2 CLASS="title">{title} auf {printer_name}</H2>
 
 <P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
-ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Drucker Befehlsauftrag
+ALIGN="ABSMIDDLE" ALT="Beschäftigungsanzeige"> }Drucker Befehlsauftrag
 {job_state=3?unerledigt:{job_state=4?gehalten:
 {job_state=5?verarbeite:{job_state=6?gestoppt:
 {job_state=7?gelöscht:{job_state=8?abgebrochen:beendet}}}}}}{job_state=9?:{job_printer_state_message?,
index 5c289cb..6d8279c 100644 (file)
@@ -14,7 +14,7 @@ function reset_config()
 <TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
 
 <P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Änderungen speichern">
-<INPUT TYPE="BUTTON" VALUE="Standard Konfigurationsdatei verwenden"
+<INPUT TYPE="BUTTON" VALUE="Standardkonfigurationsdatei verwenden"
 onClick="reset_config();"></P>
 
 </FORM>
index 698ee97..9267c50 100644 (file)
@@ -1,4 +1,4 @@
-<H2 CLASS="title">{?title} {?printer_name} Error</H2>
+<H2 CLASS="title">{?title} {?printer_name} Fehler</H2>
 
 <P>Fehler:</P>
 
index 4974aa6..e0b8352 100644 (file)
@@ -20,7 +20,7 @@
       /* Show an error if cookies are disabled */
       function check_cookies() {
        if (!navigator.cookieEnabled) {
-             document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
+             document.getElementById('body').innerHTML = 'Diese Seite verwendet Cookies um gängigen Cross-Site-Scripting-Angriffen vorzubeugen. Bitte aktivieren Sie Cookies in Ihrem Browser.';
        }
       }
     --></SCRIPT>
@@ -30,7 +30,7 @@
     <div class="header">
       <ul>
        <li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
-       <li><a href="/">Home</a></li>
+       <li><a href="/">Startseite</a></li>
        <li><a {SECTION=admin?class="active" :}href="/admin">Verwaltung</a></li>
        <li><a {SECTION=classes?class="active" :}href="/classes/">Klassen</a></li>
        <li><a {SECTION=help?class="active" :}href="/help/">Hilfe</a></li>
index 45df8de..4cc0229 100644 (file)
@@ -14,7 +14,7 @@ AUTOSAVE="org.cups.help" RESULTS="20">
 <DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Inhalt">
 <TR><TD>
 
-<H3 CLASS="title">Online Hilfe Dokumente</H3>
+<H3 CLASS="title">Hilfebereiche</H3>
 
 <P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Alle Dokumente</A></P>
 <HR>
@@ -32,10 +32,10 @@ AUTOSAVE="org.cups.help" RESULTS="20">
 <HR NOSHADE>:}
 {HELPTITLE?<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Druckversion anzeigen"></FORM>:
 
-<H1>CUPS Hilfeseiten</H1>
+<H1>CUPS-Hilfesystem</H1>
 
-<P>Dies ist das CUPS online Hilfesystem. Geben Sie Ihren Suchbegriff oben ein oder klicken Sie auf einen der Dokumentationslinks um sich die Online Hilfe Informationen anzeigen zu lassen.</P>
+<P>Dies ist das CUPS-Hilfesystem. Geben Sie Ihren Suchbegriff bzw. Ihre Suchbegriffe oben ein oder klicken Sie auf einen der Dokumentationslinks um einen bestimmten Bereich der Dokumentation anzuzeigen.</P>
 
-<P>Wenn Sie noch unerfahren im Umgang mit CUPS sind, lesen Sie die "<a href="/help/overview.html">CUPS Übersicht</a>". Erfahrene Benutzer sollten "<a href="/help/whatsnew.html">Was ist neu in CUPS 2.0</a>" lesen.</P>
+<P>Wenn Sie noch unerfahren im Umgang mit CUPS sind, lesen Sie die "<a href="/help/overview.html">CUPS-Übersicht</a>". Erfahrene Benutzer sollten "<a href="/help/whatsnew.html">Was ist neu in CUPS 2.0</a>" lesen.</P>
 
-<P>Die <A HREF="http://www.cups.org/">CUPS Webseite</A> bietet ebenfalls viele Angebote inklusive Diskussionsforen für Benutzer, Antworten auf häufig gestellte Fragen, und ein Formular für Fehlerberichte und Wünsche.</P>}
+<P>Die <A HREF="https://www.cups.org/">CUPS-Webseite</A> bietet ebenfalls viele Informationen, einschließlich Diskussionsforen für Benutzer, Antworten auf häufig gestellte Fragen sowie ein Formular für Fehlerberichte und Wünsche.</P>}
index 4855f6b..51226ab 100644 (file)
@@ -1,5 +1,5 @@
 {?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aktive Aufträge anzeigen"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Fertige Aufträge anzeigen"></FORM>}
+{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Beendete Aufträge anzeigen"></FORM>}
 {?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Alle Aufträge anzeigen"></FORM>}
 
 <P ALIGN="CENTER">{total=0?Keine Aufträge:Zeige {#job_id} von {total} {?which_jobs=?aktiven:{which_jobs=all?:beendeten}} {total=1?Auftrag:Aufträgen}}.</P>
index d24c3a1..107982a 100644 (file)
@@ -1,19 +1,19 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Auftragsliste">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Name</TH><TH>Benutzer</TH><TH>Grösse</TH><TH>Seiten</TH><TH>Status</TH><TH>Steuerung</TH></TR>
+<TR><TH>ID</TH><TH>Name</TH><TH>Benutzer</TH><TH>Größe</TH><TH>Seiten</TH><TH>Status</TH><TH>Steuerung</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
 <TR VALIGN="TOP">
 <TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
 <TD>{?job_name=?Unbekannt:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?Einbehalten:{job_originating_user_name}}&nbsp;</TD>
+<TD>{?job_originating_user_name=?Zurückbehalten:{job_originating_user_name}}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
 <TD>{job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?unerledigt seit<BR>{time_at_creation}:{job_state=4?angehalten seit<BR>{time_at_creation}:
-{job_state=5?verarbeitet seit<BR>{time_at_processing}:{job_state=6?gestoppt:
-{job_state=7?gelöscht am<BR>{time_at_completed}:{job_state=8?abgebrochen:beendet am<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+<TD>{job_state=3?unerledigt seit<BR>{?time_at_creation=?Unknown:{time_at_creation}}:{job_state=4?angehalten seit<BR>{?time_at_creation=?Unknown:{time_at_creation}}:
+{job_state=5?verarbeitet seit<BR>{?time_at_processing=?Unknown:{time_at_processing}}:{job_state=6?angehalten:
+{job_state=7?gelöscht am<BR>{?time_at_completed=?Unknown:{time_at_completed}}:{job_state=8?abgebrochen:beendet am<BR>{?time_at_completed=?Unknown:{time_at_completed}}}}}}}}&nbsp;{job_printer_state_message?<BR>
 <EM>"{job_printer_state_message}"</EM>:}</TD>
 <TD>
 {job_preserved>0?{job_state>5?
index 72b4bc5..638e6cb 100644 (file)
@@ -1,4 +1,4 @@
-<H2 CLASS="title">Modify {printer_name}</H2>
+<H2 CLASS="title">{printer_name} ändern</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 
 <TABLE>
 <TR>
-<TH CLASS="label">Description:</TH>
+<TH CLASS="label">Beschreibung:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Human-readable description such as "HP LaserJet with Duplexer")</SMALL></TD>
+<SMALL>(Menschenlesbare Beschreibung wie etwa "HP LaserJet mit Duplexer")</SMALL></TD>
 </TR>
 <TR>
-<TH CLASS="label">Location:</TH>
+<TH CLASS="label">Ort:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Human-readable location such as "Lab 1")</SMALL></TD>
+<SMALL>(Menschenlesbarer Ort wie etwa "Labor 1")</SMALL></TD>
 </TR>
 <TR>
-<TH CLASS="label">Connection:</TH>
+<TH CLASS="label">Verbindung:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
 </TR>
 <TR>
-<TH CLASS="label">Sharing:</TH>
+<TH CLASS="label">Freigabe:</TH>
 <TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Share This Printer</TD>
+Drucker im Netzwerk freigeben</TD>
 </TR>
 <TR>
 <TR>
 <TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continue"></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
 </TR>
 </TABLE>
 
index a5f1214..3d017ce 100644 (file)
@@ -1,3 +1,3 @@
 <H2 CLASS="title">Einstellungen ändern</H2>
 
-<P>Der Server wurde nicht neu gestartet, da die Konfiguration nicht geändert wurde...</P>
+<P>Der Server wurde nicht neu gestartet, da die Konfiguration nicht geändert wurde</P>
index e1f2435..ae019a4 100644 (file)
@@ -1,7 +1,7 @@
-<P><B>Fehler:</B> die folgenden Optionen stehen im Konflikt:</P>
+<P><B>Fehler:</B> Die folgenden Optionen stehen im Konflikt:</P>
 
 <UL>
 {[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
 }</UL>
 
-<P>Bitte ändern sie eine oder mehrere Einstellungen um die Konflikte zu lösen.</P>
+<P>Bitte ändern Sie eine oder mehrere Einstellungen um die Konflikte zu lösen.</P>
index 1467b36..fe4133e 100644 (file)
@@ -10,7 +10,7 @@
 <OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimeter</OPTION>
 <OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Zentimeter</OPTION>
 <OPTION VALUE="in"{paramvalue=in? SELECTED:}>Zoll</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Fuss</OPTION>
+<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Fuß</OPTION>
 <OPTION VALUE="m"{paramvalue=m? SELECTED:}>Meter</OPTION>
 </SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
 }</TABLE>
index 1164045..298f92e 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Seitenverwaltung">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Vorherige anzeigen"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Nächste anzeigen &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Vorherige anzeigen"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Nächste anzeigen &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Letzte anzeigen &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index 4babd47..a9d4bc6 100644 (file)
@@ -1,5 +1,5 @@
-<H2 CLASS="title">Aufträge von {is_class?Klasse:Drucker} {printer_name} akzeptieren</H2>
+<H2 CLASS="title">Aufträge für {is_class?Klasse:Drucker} {printer_name} annehmen</H2>
 
-<P>{is_class?Klasse:Drucker} <A
+<P>{is_class?Die Klasse:Der Drucker} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-aktzeptiert jetzt Aufträge.</P>
+nimmt jetzt Aufträge an.</P>
index b8735ab..42a32f8 100644 (file)
@@ -1,8 +1,5 @@
-<H2 CLASS="title">Delete Printer {printer_name}</H2>
-
 <H2 CLASS="title">Drucker {printer_name} löschen</H2>
 
-<P><B>Warnung:</B> Sind Sie sicher, dass Sie den Drucker
-{printer_name} löschen wollen?</P>
+<P><B>Warnung:</B> Sind Sie sicher, dass Sie den Drucker {printer_name} wirklich löschen möchten?</P>
 
 <P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Drucker löschen"></FORM></P>
index 3b35ee9..8459fad 100644 (file)
@@ -1,9 +1,9 @@
 <H2 CLASS="title">{is_class?Klasse:Drucker} {printer_name} als Standard festlegen</H2>
 
-<P>{is_class?Klasse:Drucker} <A
+<P>{is_class?Die Klasse:Der Drucker} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wurde zum Standarddrucker für diesen Server gemacht.</P>
+wurde {is_class?zur Standardklasse:zum Standarddrucker} gemacht.</P>
 
-<BLOCKQUOTE><B>Notiz:</B> Die Einstellungen des Standarddruckers
+<BLOCKQUOTE><B>Hinweis:</B> Die Einstellungen {is_class?der Standardklasse:des Standarddruckers}
 welche von Benutzern mittels dem <TT>lpoptions</TT> Befehl gesetzt wurden,
 überschreiben diese Einstellung.</BLOCKQUOTE>
diff --git a/templates/de/printer-purge.tmpl b/templates/de/printer-purge.tmpl
deleted file mode 100644 (file)
index 2cfffce..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Aufträge für {is_class?die Klasse:den Drucker} {printer_name} verwerfen</H2>
-
-<P>Aufträge für {is_class?die Klasse:den Drucker} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wurden verworfen.</P>
-
-</DIV>
index 47f82cb..6a7d130 100644 (file)
@@ -1,4 +1,4 @@
-<H2 CLASS="title">Aufträge für {is_class?die Klasse:den Drucker} {printer_name} ablehnen</H2>
+<H2 CLASS="title">Aufträge für {is_class?Klasse:Drucker} {printer_name} ablehnen</H2>
 
 <P>{is_class?Die Klasse:Der Drucker} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
index c2d89c9..6934db3 100644 (file)
@@ -1,5 +1,5 @@
-<H2 CLASS="title">{is_class?Die Klasse:Den Drucker} {printer_name} fortfahren</H2>
+<H2 CLASS="title">{is_class?Klasse:Drucker} {printer_name} starten</H2>
 
-<P>{is_class?Die Klassen:Der Drucker} <A
+<P>{is_class?Die Klasse:Der Drucker} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-wird fortgesetzt.</P>
+wird gestartet.</P>
index d519f1a..62e3e9f 100644 (file)
@@ -1,4 +1,4 @@
-<H2 CLASS="title">{is_class?Die Klasse:Den Drucker} {printer_name} anhalten</H2>
+<H2 CLASS="title">{is_class?Klasse:Drucker} {printer_name} anhalten</H2>
 
 <P>{is_class?Die Klasse:Der Drucker} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
index 2b9eb25..454627f 100644 (file)
@@ -1,7 +1,7 @@
 <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}},
-{printer_is_accepting_jobs=0?Aufträge werden ablehnt:Aufträge werden akzeptiert},
-{server_is_sharing_printers=0?Keine (Server):{printer_is_shared=0?Keine:}} Netzfreigabe{default_name={printer_name}?, Standarddrucker:}, {printer_is_colormanaged=0?Kein Farbmanagement:Farbmanagement})</H2>
+({printer_state=3?Leerlauf:{printer_state=4?Beschäftigt:Angehalten}},
+{printer_is_accepting_jobs=0?Aufträge ablehnen:Aufträge annehmen},
+{server_is_sharing_printers=0?keine:{printer_is_shared=0?keine:}} Netzwerkfreigabe{default_name={printer_name}?, Standarddrucker:}, {printer_is_colormanaged=0?kein Farbmanagement:Farbmanagement})</H2>
 
 <FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
@@ -9,9 +9,9 @@
 <OPTION VALUE="">Wartung</OPTION>
 <OPTION VALUE="print-test-page">Testseite drucken</OPTION>
 {printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Druckköpfe reinigen</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Selbsttest-Seite drucken</OPTION>:}
-{printer_state=5?<OPTION VALUE="start-printer">Drucker starten</OPTION>:<OPTION VALUE="stop-printer">Drucker stoppen</OPTION>}
-{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aufträge akzeptieren</OPTION>:<OPTION VALUE="reject-jobs">Aufträge ablehnen</OPTION>}
+{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Selbsttestseite drucken</OPTION>:}
+{printer_state=5?<OPTION VALUE="start-printer">Drucker starten</OPTION>:<OPTION VALUE="stop-printer">Drucker anhalten</OPTION>}
+{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aufträge annehmen</OPTION>:<OPTION VALUE="reject-jobs">Aufträge ablehnen</OPTION>}
 <OPTION VALUE="move-jobs">Alle Aufträge verschieben</OPTION>
 <OPTION VALUE="purge-jobs">Alle Aufträge abbrechen</OPTION>
 </SELECT>
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
 <SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administration</OPTION>
+<OPTION VALUE="">Verwaltung</OPTION>
 <OPTION VALUE="modify-printer">Drucker ändern</OPTION>
 <OPTION VALUE="delete-printer">Drucker löschen</OPTION>
 <OPTION VALUE="set-printer-options">Standardeinstellungen festlegen</OPTION>
-<OPTION VALUE="set-as-default">Als Standard festlegen</OPTION>
+<OPTION VALUE="set-as-default">Als Standarddrucker festlegen</OPTION>
 <OPTION VALUE="set-allowed-users">Erlaubte Benutzer festlegen</OPTION>
 </SELECT>
 <NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Go"></NOSCRIPT>
@@ -35,9 +35,9 @@
 <TABLE SUMMARY="{printer_name}">
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Beschreibung:</TH><TD>{printer_info}</TD></TR>
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Ort:</TH><TD>{printer_location}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Treiber:</TH><TD>{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})<BR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Treiber:</TH><TD>{printer_make_and_model} ({color_supported=1?farbig:schwarz-weiß}{sides_supported?, 2-seitiges Drucken:})<BR>
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Verbindung:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Einstellungen:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:unknown}
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Standardeinstellungen:</TH><TD>job-sheets={job_sheets_default}
+media={media_default?{media_default}:unbekannt}
 {sides_default?sides={sides_default}:}</TD></TR>
 </TABLE>
index 360154f..76285cf 100644 (file)
@@ -1,11 +1,11 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Druckerliste">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Queue Name <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Queue Name <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Marke und Modell</TH><TH>Status</TH></TR>
+<TR><TH>Warteschlange</TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Hersteller und Modell</TH><TH>Status</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
+<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{printer_make_and_model}</TD><TD>{printer_state=3?Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
 }
 </TBODY>
 </TABLE></DIV>}
diff --git a/templates/de/replace-ppd.tmpl b/templates/de/replace-ppd.tmpl
deleted file mode 100644 (file)
index 3cb11f2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Ersetze {printer_name} PPD Datei</H2>
-
-<FORM METHOD="POST" ENCTYPE="multipart/form-data" ACTION="/admin">
-
-<INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
-<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
-<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
-<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
-<INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">
-<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{?printer_name}">
-<INPUT TYPE="HIDDEN" NAME="PER_QUEUE" VALUE="1">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_IS_COLORMANAGED" VALUE="{?printer_is_colormanaged}">
-<INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">
-
-<table>
-<tr>
-<TR>
-<TH CLASS="label">Stelle PPD Datei bereit:</TH>
-<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
-TYPE="FILE" NAME="PPD_FILE">
-</TR>
-<TR>
-<TD>
-<Input TYPE=SUBMIT VALUE=Upload>
-</TD>
-</TR>
-</table>
-
-</form>
-
-</DIV>
-
-
index f0e5cee..7cdf98a 100644 (file)
@@ -1,4 +1,4 @@
 <H2 CLASS="title">Einstellungen ändern</H2>
 
 <P><IMG SRC="data:image/gif;base64,R0lGODlhEAAQAIQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaP///////////////////////////////////////////////////////////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQABQD/ACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAEFAB8ALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQBBQAfACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQBBQAfACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkEAQUAHwAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkEAQUAHwAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAEFAB8ALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAEFAB8ALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQBBQAfACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQBBQAfACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOw==" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Bitte warten bis der Server neu gestartet ist...</P>
+ALT="Beschäftigungsanzeige"> Bitte warten Sie bis der Server neu gestartet ist…</P>
index e856ff5..148e0f3 100644 (file)
@@ -15,17 +15,18 @@ function select_printers() {
 
 <H2 CLASS="title">Drucker für Samba freigeben</H2>
 
-{error?<P>Kann Drucker nicht für Samba freigeben\:</P>
+{error?<P>Drucker können nicht für Samba freigegeben werden\:</P>
 <BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consult the <A HREF="/admin/log/error_log"
-TARGET="_blank">Fehlerprotokoll</A> Datei um mehr Informationen zu erhalten.</P>:
-<P>Diese Seite erlaubt es Ihnen Drucker für Samba bereitzustellen
-damit auf diese mittels Windows Clients über die Desktopsymbole
-<VAR>Netzwerk Nachbarn</VAR> oder <VAR>Netzwerkumgebung</VAR>
-zugegriffen werden kann. Sie müssen zuerst einen
-Windows PostScript Druckerteiber installieren wie diese in der Hilfe für <A
+<P>Bitte prüfen Sie das <A HREF="/admin/log/error_log"
+TARGET="_blank">Fehlerprotokoll</A> für weitere Informationen.</P>:
+<P>Diese Seite erlaubt es Ihnen Drucker für Samba freizugeben
+damit Windows-Rechner auf diese über das <VAR>Netzwerk</VAR>-
+bzw. <VAR>Netzwerkumgebung</VAR>-Symbol z.B. auf dem Desktop
+zugreifen können. Davor muss allerdings der PostScript-
+Druckertreiber für Windows, wie in der man page <A 
 HREF="/help/man-cupsaddsmb.html"
-TARGET="_blank">cupsaddsmb(8)</A> beschrieben ist.</P>}
+TARGET="_blank">cupsaddsmb(8)</A> beschrieben, installiert
+worden sein.</P>}
 
 <TABLE>
 <TR>
@@ -39,12 +40,12 @@ onChange="select_printers()"> Alle Drucker freigeben
 </TD>
 </TR>
 <TR>
-<TH CLASS="label">Samba Benutzername:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (benötigt)</TD>
+<TH CLASS="label">Samba-Benutzername:</TH>
+<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (erforderlich)</TD>
 </TR>
 <TR>
-<TH CLASS="label">Samba Passwort:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (benötigt)</TD>
+<TH CLASS="label">Samba-Passwort:</TH>
+<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (erforderlich)</TD>
 </TR>
 <TR>
 <TD></TD>
index 0e088ed..8a49c30 100644 (file)
@@ -1 +1 @@
-<P>Drucker wurden erfolgreich für Samba freigegeben.</P>
+<P>Die Drucker wurden erfolgreich für Samba freigegeben.</P>
index c4e89b8..a60ac86 100644 (file)
@@ -3,7 +3,7 @@
 {ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
 
 <P ALIGN="CENTER"><B>Suche in
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?Klassen:{SECTION=jobs?Aufträgen:Drucker}}}:</B>
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?Klassen:{SECTION=jobs?Aufträgen:Druckern}}}:</B>
 <INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
 TYPE="SUBMIT" VALUE="Suchen"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Leeren"></P>
 
index e0b64a3..246236a 100644 (file)
@@ -4,7 +4,7 @@
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
 <INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Frage Drucker nach Voreinstellungen">:}
+{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Standardeinstellungen des Druckers ermitteln">:}
 
 <SCRIPT TYPE="text/javascript"><!--
 function update_paramtable(option)
index 813f47f..178c956 100644 (file)
@@ -1 +1 @@
-<P>Subskription {subscription_name} wurde erfolgreich hinzugefügt.</P>
+<P>Das RSS-Abonnement {subscription_name} wurde erfolgreich hinzugefügt.</P>
index 18e71b9..4382796 100644 (file)
@@ -1 +1 @@
-<P>Subskription #{notify_subscription_id} wurde gekündigt.</P>
+<P>Das RSS-Abonnement #{notify_subscription_id} wurde beendet.</P>
index bc77673..2f0fa9f 100644 (file)
@@ -1,4 +1,4 @@
-<H2 CLASS="title">Drucker Testseite auf {printer_name}</H2>
+<H2 CLASS="title">Testseite für Drucker {printer_name}</H2>
 
-<P>Testseite gesendet; Auftrags-ID ist <A HREF="/{SECTION}/{printer_name}">
+<P>Testseite wurde gesendet; Auftragsnummer lautet <A HREF="/{SECTION}/{printer_name}">
 {printer_name}-{job_id}</A>.</P>
index 7fbd1bc..5441b2d 100644 (file)
@@ -1,5 +1,5 @@
       </div>
     </div>
-    <div class="footer">CUPS und das CUPS Logo sind Warenzeichen der <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2015 Apple Inc. Alle Rechte vorbehalten.</div>
+    <div class="footer">CUPS und das CUPS-Logo sind Warenzeichen der <a href="https://www.apple.com/">Apple Inc.</a> Copyright &copy; 2007-2015 Apple Inc. Alle Rechte vorbehalten.</div>
   </body>
 </html>
index 6364ba9..e924254 100644 (file)
 <TD>
 <INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
 <BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Erlaube diesen Benutzern zu drucken
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Verbiete diesen Benutzern zu drucken
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Diesen Benutzern das Drucken erlauben
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Diesen Benutzern das Drucken verbieten
 </TD>
 </TR>
 <TR>
 <TD></TD>
 <TD>
-<INPUT TYPE="SUBMIT" VALUE="Set Allowed Users">
+<INPUT TYPE="SUBMIT" VALUE="Erlaubte Benutzer festlegen">
 </TD>
 </TR>
 </TABLE>
index 780dd55..097c65c 100644 (file)
@@ -26,7 +26,7 @@
     <H2 CLASS="title">Servidor</H2>
 
     <P>
-    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Editar archivo configuraci&oacute;n"></FORM>
+    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Editar archivo de configuraci&oacute;n"></FORM>
     <FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de accesos"></FORM>
     <FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de errores"></FORM>
     <FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver archivo de registro de p&aacute;ginas"></FORM>
index 8e38af2..0c37764 100644 (file)
@@ -1,21 +1,18 @@
 <H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:A&ntilde;adir impresora}</H2>
 
-{CUPS_GET_DEVICES_DONE?:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Buscando impresoras...</P>}
-
-<FORM METHOD="POST" ACTION="/admin">
+{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
 {printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
 
 <TABLE>
 {op=add-printer?:<TR>
-<TH CLASS="label">Conexi&oacute;n actual:</TH>
+<TH CLASS="label">Conexi&oacute;n actual\:</TH>
 <TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
 {current_device_uri}</TD>
 </TR>}
 <TR>
-<TH CLASS="label">Impresoras locales:</TH>
+<TH CLASS="label">Impresoras locales\:</TH>
 <TD>
 {[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
 VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
@@ -24,7 +21,7 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
 </TD>
 </TR>
 <TR>
-<TH CLASS="label">Impresoras en red descubiertas:</TH>
+<TH CLASS="label">Impresoras en red descubiertas\:</TH>
 <TD>
 {[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
 VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
@@ -34,7 +31,7 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
 </TR>
 <TR>
 <TR>
-<TH CLASS="label">Otras impresoras en red:</TH>
+<TH CLASS="label">Otras impresoras en red\:</TH>
 <TD>
 {[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
 VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
index 78d4bb9..d89983c 100644 (file)
@@ -8,7 +8,7 @@
 <SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
 <OPTION VALUE="">Mantenimiento</OPTION>
 <OPTION VALUE="print-test-page">Imprimir p&aacute;gina de prueba</OPTION>
-{printer_state=5?<OPTION VALUE="start-class">Reanudar impresora</OPTION>:<OPTION VALUE="stop-class">Pausar impresora</OPTION>}
+{printer_state=5?<OPTION VALUE="start-class">Reanudar clase</OPTION>:<OPTION VALUE="stop-class">Pausar clase</OPTION>}
 {printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aceptar trabajos</OPTION>:<OPTION VALUE="reject-jobs">Rechazar trabajos</OPTION>}
 <OPTION VALUE="move-jobs">Mover todos los trabajos</OPTION>
 <OPTION VALUE="purge-jobs">Cancelar todos los trabajos</OPTION>
index 6fde7bf..30d4adb 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Lista de clases">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nombre de la cola <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nombre de la cola <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descripci&oacute;n</TH><TH>Ubicaci&oacute;n</TH><TH>Miembros</TH><TH>Estado</TH></TR>
+<TR><TH>Nombre de la cola</TH><TH>Descripci&oacute;n</TH><TH>Ubicaci&oacute;n</TH><TH>Miembros</TH><TH>Estado</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 7def5ce..f75743b 100644 (file)
@@ -2,4 +2,4 @@
 
 <P>Error:</P>
 
-<BLOCKQUOTE>Operaci&oacute;n desconocida "{op}".</BLOCKQUOTE>
+<BLOCKQUOTE>&iexcl;Operaci&oacute;n desconocida "{op}"!</BLOCKQUOTE>
index a6df94c..c164cfe 100644 (file)
@@ -20,7 +20,7 @@
       /* Show an error if cookies are disabled */
       function check_cookies() {
        if (!navigator.cookieEnabled) {
-             document.getElementById('body').innerHTML = 'Esta p&aacute;gina usa cookies para prevenir ataques comunes de sitios. Por favor, active las cookies en su navegador.';
+             document.getElementById('body').innerHTML = 'Esta p&aacute;gina usa cookies para prevenir ataques comunes de sitios cruzados. Por favor, active las cookies en su navegador.';
        }
       }
     --></SCRIPT>
index e8ef1bb..b8b6ea1 100644 (file)
@@ -1,4 +1,3 @@
 <H2 CLASS="title">Cancelar trabajo {job_id}</H2>
 
 <P>Se ha cancelado el <A HREF="{job_printer_uri}">Trabajo {job_id}</A>.
-
index e2a1911..e85c970 100644 (file)
@@ -1,4 +1,4 @@
 <H2 CLASS="title">{job_id?Mover trabajo {job_id}:Mover todos los trabajos}</H2>
 
 <P>Se {job_id?ha movido el <A HREF="/jobs/{job_id}">Trabajo {job_id}</A>:han movido todos los trabajos} a
-<A HREF="{job_printer_uri}">{job_printer_name}</A>.</P>
+<A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
index 65fb6cb..90c60c9 100644 (file)
@@ -1,24 +1,23 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Lista de trabajos">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nombre</TH><TH>Usuario</TH><TH>Tama&ntilde;o</TH><TH>P&aacute;ginas</TH><TH>Estado</TH><TH>Control</TH></TR>
+<TR><TH>ID</TH><TH>Nombre</TH><TH>Usuario</TH><TH>Tama&ntilde;o</TH><TH>P&aacute;ginas</TH><TH>Estado</TH><TH>Control</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
 <TR VALIGN="TOP">
 <TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
 <TD>{?job_name=?Desconocido:{job_name}}&nbsp;</TD>
-<TD>{job_originating_user_name}&nbsp;</TD>
+<TD>{?job_originating_user_name=?Retenido:{job_originating_user_name}}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
 <TD>{job_media_sheets_completed=0?Desconocido:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?pendiente desde<BR>{time_at_creation}:{job_state=4?retenido desde<BR>{time_at_creation}:
-{job_state=5?en proceso desde<BR>{time_at_processing}:{job_state=6?parado:
-{job_state=7?cancelado el<BR>{time_at_completed}:{job_state=8?interrumpido:completado el<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+<TD>{job_state=3?pendiente desde<BR>{?time_at_creation=?Unknown:{time_at_creation}}:{job_state=4?retenido desde<BR>{?time_at_creation=?Unknown:{time_at_creation}}:
+{job_state=5?en proceso desde<BR>{?time_at_processing=?Unknown:{time_at_processing}}:{job_state=6?parado:
+{job_state=7?cancelado el<BR>{?time_at_completed=?Unknown:{time_at_completed}}:{job_state=8?interrumpido:completado el<BR>{?time_at_completed=?Unknown:{time_at_completed}}}}}}}}&nbsp;{job_printer_state_message?<BR>
 <EM>"{job_printer_state_message}"</EM>:}</TD>
 <TD>
 {job_preserved>0?{job_state>5?
 <FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
-<INPUT TYPE="SUBMIT" VALUE="Reimprimir trabajo"></FORM>:}:}
 {job_state=4?
 <FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
 <INPUT TYPE="SUBMIT" VALUE="Liberar trabajo"></FORM>:}
index 5f27c10..e3e90b4 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Barra de paginaci&oacute;n">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anteriores"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar siguientes &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Mostrar primero"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anteriores"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar siguiente &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Mostrar &uacute;ltimo &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index 7171289..74b4e95 100644 (file)
@@ -37,7 +37,7 @@
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Ubicaci&oacute;n:</TH><TD>{printer_location}</TD></TR>
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Controlador:</TH><TD>{printer_make_and_model} ({color_supported=1?color:escala de grises}{sides_supported=one-sided?:, d&uacute;plex})<BR>
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Conexi&oacute;n:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Opciones predeterminadas:</TH><TD>job-sheets={job_sheets_default}
-media={media_default?{media_default}:desconocido}
-{sides_default?sides={sides_default}:}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Opciones predeterminadas:</TH><TD>r&oacute;tulos={job_sheets_default}
+papel={media_default?{media_default}:desconocido}
+{sides_default?caras={sides_default}:}</TD></TR>
 </TABLE>
index 6b97fd9..5d84b1a 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Lista de impresoras">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nombre de la cola <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nombre de la cola <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descripci&oacute;n</TH><TH>Ubicaci&oacute;n</TH><TH>Marca y modelo</TH><TH>Estado</TH></TR>
+<TR><TH>Nombre de la cola</TH><TH>Descripci&oacute;n</TH><TH>Ubicaci&oacute;n</TH><TH>Marca y modelo</TH><TH>Estado</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 823a832..64cd8c0 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="クラスの一覧">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> キュー名 <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> キュー名 <SMALL>&#x25bc;</SMALL>}</A></TH><TH>説明</TH><TH>場所</TH><TH>メンバー</TH><TH>状態</TH></TR>
+<TR><TH>キュー名</TH><TH>説明</TH><TH>場所</TH><TH>メンバー</TH><TH>状態</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 220c950..6904df4 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="ジョブの一覧">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>名前</TH><TH>ユーザー</TH><TH>サイズ</TH><TH>ページ</TH><TH>状態</TH><TH>制御</TH></TR>
+<TR><TH>ID</TH><TH>名前</TH><TH>ユーザー</TH><TH>サイズ</TH><TH>ページ</TH><TH>状態</TH><TH>制御</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
@@ -11,9 +11,9 @@
 <TD>{?job_originating_user_name=?隠匿:{job_originating_user_name}}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
 <TD>{job_media_sheets_completed=0?不明:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?{time_at_creation}<BR>から保留中:{job_state=4?{time_at_creation}<BR>から保留中:
-{job_state=5?{time_at_processing}<BR>から処理中:{job_state=6?に停止:
-{job_state=7?{time_at_completed}<BR>にキャンセル:{job_state=8?に中断:{time_at_completed}<BR>に完了}}}}}}&nbsp;{job_printer_state_message?<BR>
+<TD>{job_state=3?{?time_at_creation=?Unknown:{time_at_creation}}<BR>から保留中:{job_state=4?{?time_at_creation=?Unknown:{time_at_creation}}<BR>から保留中:
+{job_state=5?{?time_at_processing=?Unknown:{time_at_processing}}<BR>から処理中:{job_state=6?に停止:
+{job_state=7?{?time_at_completed=?Unknown:{time_at_completed}}<BR>にキャンセル:{job_state=8?に中断:{?time_at_completed=?Unknown:{time_at_completed}}<BR>に完了}}}}}}&nbsp;{job_printer_state_message?<BR>
 <EM>"{job_printer_state_message}"</EM>:}</TD>
 <TD>
 {job_preserved>0?{job_state>5?
index ebba3a0..ff7e976 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Paging Bar">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; 前を表示"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="次を表示 &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; 前を表示"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="次を表示 &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index a8caaff..70bbc81 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="プリンターの一覧">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> キュー名 <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> キュー名 <SMALL>&#x25bc;</SMALL>}</A></TH><TH>説明</TH><TH>場所</TH><TH>メーカーとモデル</TH><TH>状態</TH></TR>
+<TR><TH>キュー名</TH><TH>説明</TH><TH>場所</TH><TH>メーカーとモデル</TH><TH>状態</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 541e786..2f62855 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Job List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Name</TH><TH>User</TH><TH>Size</TH><TH>Pages</TH><TH>State</TH><TH>Control</TH></TR>
+<TR><TH>ID</TH><TH>Name</TH><TH>User</TH><TH>Size</TH><TH>Pages</TH><TH>State</TH><TH>Control</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
@@ -11,9 +11,9 @@
 <TD>{?job_originating_user_name=?Withheld:{job_originating_user_name}}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
 <TD>{job_media_sheets_completed=0?Unknown:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?pending since<BR>{time_at_creation}:{job_state=4?held since<BR>{time_at_creation}:
-{job_state=5?processing since<BR>{time_at_processing}:{job_state=6?stopped:
-{job_state=7?canceled at<BR>{time_at_completed}:{job_state=8?aborted:completed at<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+<TD>{job_state=3?pending since<BR>{?time_at_creation=?Unknown:{time_at_creation}}:{job_state=4?held since<BR>{?time_at_creation=?Unknown:{time_at_creation}}:
+{job_state=5?processing since<BR>{?time_at_processing=?Unknown:{time_at_processing}}:{job_state=6?stopped:
+{job_state=7?canceled at<BR>{?time_at_completed=?Unknown:{time_at_completed}}:{job_state=8?aborted:completed at<BR>{?time_at_completed=?Unknown:{time_at_completed}}}}}}}}&nbsp;{job_printer_state_message?<BR>
 <EM>"{job_printer_state_message}"</EM>:}</TD>
 <TD>
 {job_preserved>0?{job_state>5?
index ebd688d..76e0167 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Paging Bar">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Show Previous"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Show Next &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Show Previous"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Show Next &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index e0a3228..a80763e 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Printer List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Queue Name <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Queue Name <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Description</TH><TH>Location</TH><TH>Make and Model</TH><TH>Status</TH></TR>
+<TR><TH>Queue Name</TH><TH>Description</TH><TH>Location</TH><TH>Make and Model</TH><TH>Status</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 4e777b0..69efa3f 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Adicionar classe</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -10,7 +8,7 @@
 <TR>
 <TH CLASS="label">Nome:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Pode conter qualquer caracter imprim&iacute;vel, exceto "/", "#", e espa&ccedil;o em branco)</SMALL></TD>
+<SMALL>(Pode conter qualquer caractere imprim&iacute;vel, exceto "/", "#", e espa&ccedil;o em branco)</SMALL></TD>
 </TR>
 <TR>
 <TH CLASS="label">Descri&ccedil;&atilde;o:</TH>
@@ -32,9 +30,8 @@
 </TR>
 <TR>
 <TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Adicionar Classe"></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Adicionar classe"></TD>
 </TR>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index acd10ba..a52c444 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Adicionar impressora</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
 <TR>
 <TH CLASS="label">Nome:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
-<SMALL>(Pode conter qualquer caracter imprimível, exceto "/", "#" e espaço em branco)</SMALL></TD>
+<SMALL>(Pode conter qualquer caractere imprim&iacute;vel, exceto "/", "#" e espa&ccedil;o em branco)</SMALL></TD>
 </TR>
 <TR>
-<TH CLASS="label">Descrição:</TH>
+<TH CLASS="label">Descri&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
-<SMALL>(Descrição legível para humanos, tal como "HP LaserJet com Duplexador")</SMALL></TD>
+<SMALL>(Descri&ccedil;&atilde;o leg&iacute;vel para humanos, tal como "HP LaserJet com Duplexador")</SMALL></TD>
 </TR>
 <TR>
-<TH CLASS="label">Localização:</TH>
+<TH CLASS="label">Localiza&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
-<SMALL>(Localização legível para humanos, tal como "Laboratório 1")</SMALL></TD>
+<SMALL>(Localiza&ccedil;&atilde;o leg&iacute;vel para humanos, tal como "Laborat&oacute;rio 1")</SMALL></TD>
 </TR>
 <TR>
-<TH CLASS="label">Conexão:</TH>
+<TH CLASS="label">Conex&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
 </TR>
 <TR>
 <TH CLASS="label">Compartilhamento:</TH>
 <TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
-Compartilhar essa Impressora</TD>
+Compartilhar essa impressora</TD>
 </TR>
 <TR>
 <TD></TD>
@@ -44,4 +42,3 @@ Compartilhar essa Impressora</TD>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index ee86b24..7eb3e04 100644 (file)
@@ -2,13 +2,13 @@
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
 
-<H2 CLASS="title">Adicionar inscrição RSS</H2>
+<H2 CLASS="title">Adicionar inscri&ccedil;&atilde;o RSS</H2>
 
-<TABLE SUMMARY="Formulário para adicionar inscrição RSS">
+<TABLE SUMMARY="Formul&aacute;rio para adicionar inscri&ccedil;&atilde;o RSS">
 <TR>
 <TH CLASS="label">Nome:</TH>
 <TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
-<SMALL>(Pode conter qualquer caracter imprimível, exceto espaço em branco, "/", "?", e "#")</SMALL></TD>
+<SMALL>(Pode conter qualquer caractere imprim&iacute;vel, exceto espa&ccedil;o em branco, "/", "?", e "#")</SMALL></TD>
 </TR>
 <TR>
 <TH CLASS="label">Fila:</TH>
@@ -17,9 +17,9 @@
 <TR VALIGN="TOP">
 <TH CLASS="label">Eventos:</TH>
 <TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Trabalho criado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Trabalho concluído<BR>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Trabalho conclu&iacute;do<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Trabalho parado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Opções do Trabalho alteradas</TD>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Op&ccedil;&otilde;es do Trabalho alteradas</TD>
 <TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
 <TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Fila parada<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Fila adicionada<BR>
 <TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Servidor iniciado<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Servidor parado<BR>
 <INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Servidor reiniciado<BR>
-<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Auditoria de segurança do servidor</TD>
+<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Auditoria de seguran&ccedil;a do servidor</TD>
 </TR>
 <TR>
-<TH CLASS="label">Máximo de eventos no Feed:</TH>
+<TH CLASS="label">M&aacute;ximo de eventos no Feed:</TH>
 <TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
 </TR>
 <TR>
 <TD></TD>
-<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Adicionar inscrição RSS"></TD>
+<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="Adicionar inscri&ccedil;&atilde;o RSS"></TD>
 </TR>
 </TABLE>
 
index 5427f48..b847bef 100644 (file)
-<TABLE CLASS="indent" SUMMARY="Tarefas Administrativas">
-<TR><TD VALIGN="TOP">
-
-<H2 CLASS="title">Impressoras</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Adicionar impressora"></FORM>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Encontrar novas impressoras"></FORM>
-<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar impressoras"></FORM>
-{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exportar impressoras ao Samba"></FORM>:}
-</P>
-
-<H2 CLASS="title">Classes</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Adicionar classe"></FORM>
-<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar classes"></FORM>
-</P>
-
-<H2 CLASS="title">Trabalhos</H2>
-
-<P>
-<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar trabalhos"></FORM>
-</P>
-
-</TD><TD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
-
-<H2 CLASS="title">Servidor</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Editar arquivo de configuração"></FORM>
-<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de acessos"></FORM>
-<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de erros"></FORM>
-<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de páginas"></FORM>
-</P>
-
-{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
-<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
-
-<FORM METHOD="POST" ACTION="/admin">
-<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
-
-{ADVANCEDSETTINGS?<P><B>Configurações do servidor\:</B></P>
-
-<P><A HREF="/admin/">Avançadas <SMALL>&#x25bc;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartilhar impressoras conectadas a este sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Máximo de clientes\:
-<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir impressão a partir da Internet<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Anunciar interface web<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administração remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autenticação via Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir aos usuários cancelar qualquer trabalho (não apenas os seus próprios)<BR>
-<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preservar o histórico de trabalhos<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Máximo de trabalhos (0 para sem limite)\:
-<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reter metadados\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reter documentos\:
-<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salvar informação de depuração para solução de problemas<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tamanho máximo do arquivo de log\:
-<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
-
-:<P><B>Configurações do servidor:</B></P>
-
-<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avançadas <SMALL>&#x25b6;</SMALL></A><BR>
-<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
-<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartilhar impressoras conectadas a este sistema<BR>
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir impressão a partir da Internet<BR>
-<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administração remota<BR>
-{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autenticação via Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
-<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir aos usuários cancelar qualquer trabalho (não apenas seus próprios)<BR>
-<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salvar informações de depuração para solução de problemas</P>
-
-}
-<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Alterar configurações"></P>
-
-</FORM>}
-
-</TD></TR>
-</TABLE>
-
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Inscrições RSS</H2>
-
-<P>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Adicionar inscrição RSS"></FORM>
-</P>
-
-</DIV>
-
-{notify_subscription_id?<TABLE CLASS="list" SUMMARY="Inscrições RSS">
-<THEAD><TR><TH>Nome</TH><TH>Eventos</TH><TH>Nome da fila</TH></TR></THEAD>
-<TBODY>{[notify_subscription_id]
-<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
-<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancelar Assinatura"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Todas as filas}</TD></TR>}
-</TBODY>
-</TABLE>:}
+<div class="row">
+  <div class="halves">
+    <H2 CLASS="title">Impressoras</H2>
+
+    <P>
+    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Adicionar impressora"></FORM>
+    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Encontrar novas impressoras"></FORM>
+    <FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar impressoras"></FORM>
+    {have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exportar impressoras ao Samba"></FORM>:}
+    </P>
+
+    <H2 CLASS="title">Classes</H2>
+
+    <P>
+    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Adicionar classe"></FORM>
+    <FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar classes"></FORM>
+    </P>
+
+    <H2 CLASS="title">Trabalhos</H2>
+
+    <P>
+    <FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Gerenciar trabalhos"></FORM>
+    </P>
+  </div>
+  <div class="halves">
+    <H2 CLASS="title">Servidor</H2>
+
+    <P>
+    <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Editar arquivo de configura&ccedil;&atilde;o"></FORM>
+    <FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de acessos"></FORM>
+    <FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de erros"></FORM>
+    <FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Ver log de p&aacute;ginas"></FORM>
+    </P>
+
+    {SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
+    <BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
+
+    <FORM METHOD="POST" ACTION="/admin">
+    <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
+
+    {ADVANCEDSETTINGS?<P><B>Configura&ccedil;&otilde;es do servidor\:</B></P>
+
+    <P><A HREF="/admin/">Avan&ccedil;ado <SMALL>&#x25bc;</SMALL></A><BR>
+    <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+    <INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
+    <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartilhar impressoras conectadas a este sistema<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M&aacute;ximo de clientes\:
+    <INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir impress&atilde;o a partir da Internet<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Anunciar interface web<BR>
+    <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administra&ccedil;&atilde;o remota<BR>
+    {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autentica&ccedil;&atilde;o via Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+    <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir aos usu&aacute;rios cancelar qualquer trabalho (n&atilde;o apenas os seus pr&oacute;prios)<BR>
+    <INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Preservar o hist&oacute;rico de trabalhos<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;M&aacute;ximo de trabalhos (0 para sem limite)\:
+    <INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reter metadados\:
+    <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reter documentos\:
+    <INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
+    <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salvar informa&ccedil;&atilde;o de depura&ccedil;&atilde;o para solu&ccedil;&atilde;o de problemas<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Tamanho m&aacute;ximo do arquivo de log\:
+    <INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
+
+    :<P><B>Configura&ccedil;&otilde;es do servidor:</B></P>
+
+    <P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Avan&ccedil;ado <SMALL>&#x25b6;</SMALL></A><BR>
+    <INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
+    <INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Compartilhar impressoras conectadas a este sistema<BR>
+    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Permitir impress&atilde;o a partir da Internet<BR>
+    <INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Permitir administra&ccedil;&atilde;o remota<BR>
+    {have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Usar autentica&ccedil;&atilde;o via Kerberos (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
+    <INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Permitir aos usu&aacute;rios cancelar qualquer trabalho (n&atilde;o apenas seus pr&oacute;prios)<BR>
+    <INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Salvar informa&ccedil;&otilde;es de depura&ccedil;&atilde;o para solu&ccedil;&atilde;o de problemas</P>
+
+    }
+    <P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Alterar configura&ccedil;&otilde;es"></P>
+
+    </FORM>}
+  </div>
+</div>
+
+<div class="row">
+  <H2 CLASS="title">Inscri&ccedil;&otilde;es RSS</H2>
+
+  <P>
+  <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="Adicionar inscri&ccedil;&atilde;o RSS"></FORM>
+  </P>
+
+  {notify_subscription_id?<TABLE CLASS="list" SUMMARY="Inscri&ccedil;&otilde;es RSS">
+  <THEAD><TR><TH>Nome</TH><TH>Eventos</TH><TH>Nome da fila</TH></TR></THEAD>
+  <TBODY>{[notify_subscription_id]
+  <TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
+  <FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="Cancelar inscri&ccedil;&atilde;o RSS"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:Todas as filas}</TD></TR>}
+  </TBODY>
+  </TABLE>:}
+</div>
index 78c8727..11781d5 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
 
 {CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
@@ -9,7 +7,7 @@
 
 <TABLE>
 {op=add-printer?:<TR>
-<TH CLASS="label">Conexão atual\:</TH>
+<TH CLASS="label">Conex&atilde;o atual\:</TH>
 <TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
 {current_device_uri}</TD>
 </TR>}
@@ -49,5 +47,3 @@ VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
 
 </FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
 ALT="Ocupado"> Procurando impressoras...</P>}
-
-</DIV>
index abef30d..33c3aad 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
 
 <FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
 </TR>}
 <TR>
-<TH CLASS="label">Descrição:</TH>
+<TH CLASS="label">Descri&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
 </TR>
 <TR>
-<TH CLASS="label">Localização:</TH>
+<TH CLASS="label">Localiza&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
 </TR>
 <TR>
-<TH CLASS="label">Conexão:</TH>
+<TH CLASS="label">Conex&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
 </TR>
 <TR>
 <TH CLASS="label">Compartilhamento:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Não compartilhar:{?printer_is_shared=0?Não compartilhar:Compartilhar}} esta impressora</TD>
+{?printer_is_shared=?N&atilde;o compartilhar:{?printer_is_shared=0?N&atilde;o compartilhar:Compartilhar}} esta impressora</TD>
 </TR>
 <TR>
 <TH CLASS="label">Fabricante:</TH>
@@ -50,7 +48,7 @@
 <TD>&nbsp;</TD>
 </TR>
 <TR>
-<TH CLASS="label">Ou forneça um arquivo PPD:</TH>
+<TH CLASS="label">Ou forne&ccedil;a um arquivo PPD:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
 TYPE="FILE" NAME="PPD_FILE"></TD>
 </TR>
@@ -61,4 +59,3 @@ TYPE="FILE" NAME="PPD_FILE"></TD>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index 12bd92e..55d8bd8 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
 
 <FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
 </TR>}
 <TR>
-<TH CLASS="label">Descrição:</TH>
+<TH CLASS="label">Descri&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
 </TR>
 <TR>
-<TH CLASS="label">Localização:</TH>
+<TH CLASS="label">Localiza&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
 </TR>
 <TR>
-<TH CLASS="label">Conexão:</TH>
+<TH CLASS="label">Conex&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
 </TR>
 <TR>
 <TH CLASS="label">Compartilhamento:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
-{?printer_is_shared=?Não compartilhar:{?printer_is_shared=0?Não compartilhar:Compartilhar}} esta impressora</TD>
+{?printer_is_shared=?N&atilde;o compartilhar:{?printer_is_shared=0?N&atilde;o compartilhar:Compartilhar}} esta impressora</TD>
 </TR>
 <TR>
 <TH CLASS="label">Fabricante:</TH>
@@ -46,7 +44,7 @@
 </TD>
 </TR>
 <TR>
-<TH CLASS="label">Ou forneça um arquivo PPD:</TH>
+<TH CLASS="label">Ou forne&ccedil;a um arquivo PPD:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
 TYPE="FILE" NAME="PPD_FILE"></TD>
 </TR>
@@ -57,4 +55,3 @@ TYPE="FILE" NAME="PPD_FILE"></TD>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index 517d4e7..743d83e 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -9,7 +7,7 @@
 
 <TABLE>
 <TR>
-<TH CLASS="label">Conexão:</TH>
+<TH CLASS="label">Conex&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
 </TR>
 <TR>
@@ -23,7 +21,7 @@
 <TD><SELECT NAME="PARITY">
 <OPTION VALUE="none" {?parity=none?SELECTED:}>Nenhum
 <OPTION VALUE="even" {?parity=even?SELECTED:}>Par
-<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Ímpar
+<OPTION VALUE="odd" {?parity=odd?SELECTED:}>&Iacute;mpar
 </SELECT></TD>
 </TR>
 <TR>
@@ -44,9 +42,8 @@
 </TR>
 <TR>
 <TD></TD>
-<TD><INPUT TYPE="SUBMIT" VALUE="Continar"></TD>
+<TD><INPUT TYPE="SUBMIT" VALUE="Continuar"></TD>
 </TR>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index 1fe6a4e..8399576 100644 (file)
@@ -1,6 +1,4 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">{op=modify-printer?Modify {printer_name}:Add Printer}</H2>
+<H2 CLASS="title">{op=modify-printer?Modificar {printer_name}:Adicionar impressora}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
@@ -10,7 +8,7 @@
 
 <TABLE>
 <TR>
-<TH CLASS="label">Conexão:</TH>
+<TH CLASS="label">Conex&atilde;o:</TH>
 <TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
 </TR>
 <TR>
@@ -41,4 +39,3 @@ Printers"</A> para a URI correta a ser usada para sua impressora.</P>
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index e556d06..1321ed4 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Adicionar classe</H2>
 
-<P>Classe <A HREF="/classes/{printer_name}">{printer_name}</A> foi adicionada com sucesso.
-
-</DIV>
+<P>A classe <A HREF="/classes/{printer_name}">{printer_name}</A> foi adicionada com sucesso.
index 454d18d..324a720 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Excluir classe {printer_name}</H2>
 
-<P><B>Aviso:</B> Você tem certeza que quer excluir a classe {printer_name}?</P>
+<P><B>Aviso:</B> Voc&ecirc; tem certeza que quer excluir a classe {printer_name}?</P>
 
 <P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Excluir classe"></FORM></P>
-
-</DIV>
index eea279f..44d4dc2 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Excluir classe {printer_name}</H2>
 
-<P>A classe {printer_name} foi excluída com sucesso.
-
-</DIV>
\ No newline at end of file
+<P>A classe {printer_name} foi exclu&iacute;da com sucesso.
index 05488e2..89186cb 100644 (file)
@@ -1,3 +1 @@
-<DIV CLASS="indent">
 <H3 CLASS="title">Trabalhos</H3>
-</DIV>
index 2c64e6c..44ee17a 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Modificar classe {printer_name}</H2>
 
 <P>A classe <A HREF="/classes/{printer_name}">{printer_name}</A> foi modificada com sucesso.
-
-</DIV>
\ No newline at end of file
index 2b23833..dc50377 100644 (file)
@@ -1,17 +1,16 @@
-<DIV CLASS="indent">
 <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inativa:{printer_state=4?Processando:Pausada}},
-{printer_is_accepting_jobs=0?Rejeitando trabalhos:Aceitando trabalhos},
-{server_is_sharing_printers=0?Não compartilhada:{printer_is_shared=0?Não compartilhada:Compartilhada}} {default_name={printer_name}?, Padrão do servidor:})</H2>
+({printer_state=3?ociosa:{printer_state=4?processando:pausada}},
+{printer_is_accepting_jobs=0?rejeitando trabalhos:aceitando trabalhos},
+{server_is_sharing_printers=0?n&atilde;o compartilhada:{printer_is_shared=0?n&atilde;o compartilhada:compartilhada}} {default_name={printer_name}?, padr&atilde;o do servidor:})</H2>
 
 <FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manutenção</OPTION>
-<OPTION VALUE="print-test-page">Imprimir página de teste</OPTION>
+<OPTION VALUE="">Manuten&ccedil;&atilde;o</OPTION>
+<OPTION VALUE="print-test-page">Imprimir p&aacute;gina de teste</OPTION>
 {printer_state=5?<OPTION VALUE="start-class">Resumir classe</OPTION>:<OPTION VALUE="stop-class">Pausar classe</OPTION>}
 {printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aceitar trabalhos</OPTION>:<OPTION VALUE="reject-jobs">Rejeitar trabalhos</OPTION>}
-<OPTION VALUE="move-jobs">Mover todos trabalhos/OPTION>
+<OPTION VALUE="move-jobs">Mover todos trabalhos</OPTION>
 <OPTION VALUE="purge-jobs">Cancelar todos trabalhos</OPTION>
 </SELECT>
 <INPUT TYPE="SUBMIT" VALUE="Ir" STYLE="display: none;">
 <INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
 <INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
 <SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administração</OPTION>
+<OPTION VALUE="">Administra&ccedil;&atilde;o</OPTION>
 <OPTION VALUE="modify-class">Modificar classe</OPTION>
 <OPTION VALUE="delete-class">Excluir classe</OPTION>
-<OPTION VALUE="set-class-options">Definir opções padrão</OPTION>
-<OPTION VALUE="set-as-default">Definir como servidor padrão</OPTION>
-<OPTION VALUE="set-allowed-users">Definir usuários permitidos</OPTION>
+<OPTION VALUE="set-class-options">Definir op&ccedil;&otilde;es padr&otilde;es</OPTION>
+<OPTION VALUE="set-as-default">Definir como servidor padr&atilde;o</OPTION>
+<OPTION VALUE="set-allowed-users">Definir usu&aacute;rios permitidos</OPTION>
 </SELECT>
 <INPUT TYPE="SUBMIT" VALUE="Ir" STYLE="display: none;">
 </FORM>
 
 <TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descrição:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Localização:</TH><TD>{printer_location}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descri&ccedil;&atilde;o:</TH><TD>{printer_info}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Localiza&ccedil;&atilde;o:</TH><TD>{printer_location}</TD></TR>
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Membros:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Padrões:</TH><TD>job-sheets={job_sheets_default}
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Padr&otilde;es:</TH><TD>job-sheets={job_sheets_default}
 media={media_default?{media_default}:desconhecido}
 {sides_default?sides={sides_default}:}</TD></TR>
 </TABLE>
-
-</DIV>
index 18717dc..7240151 100644 (file)
@@ -1,11 +1,11 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Class List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nome da fila <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome da fila <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descrição</TH><TH>Localização</TH><TH>Membros</TH><TH>Estado</TH></TR>
+<TR><TH>Nome da fila</TH><TH>Descri&ccedil;&atilde;o</TH><TH>Localiza&ccedil;&atilde;o</TH><TH>Membros</TH><TH>Estado</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
-<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Nenhum:{member_uris}}</TD><TD>{printer_state=3?Inativa:{printer_state=4?Processando:Pausada}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
+<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Nenhum:{member_uris}}</TD><TD>{printer_state=3?ociosa:{printer_state=4?processando:pausada}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
 }
 </TBODY>
 </TABLE></DIV>}
index 7800ac7..d89cafc 100644 (file)
@@ -1,12 +1,8 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{title} em {printer_name}</H2>
 
 <P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
 ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Trabalho de comando de impressora
 {job_state=3?pendente:{job_state=4?retido:
-{job_state=5?processando:{job_state=6?parada:
+{job_state=5?processando:{job_state=6?parado:
 {job_state=7?cancelado:{job_state=8?abortado:completo}}}}}}{job_state=9?:{job_printer_state_message?,
 <EM>"{job_printer_state_message}"</EM>:}}</P>
-
-</DIV>
index 026a9e5..8c5e282 100644 (file)
@@ -5,9 +5,7 @@ function reset_config()
 }
 </SCRIPT>
 
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Editar arquivo de configuração</H2>
+<H2 CLASS="title">Editar arquivo de configura&ccedil;&atilde;o</H2>
 
 <FORM NAME="cups" METHOD="POST" ACTION="/admin/">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
@@ -15,10 +13,8 @@ function reset_config()
 
 <TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
 
-<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Salvar alterações">
-<INPUT TYPE="BUTTON" VALUE="Usar arquivo de configuração padrão"
+<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Salvar altera&ccedil;&otilde;es">
+<INPUT TYPE="BUTTON" VALUE="Usar arquivo de configura&ccedil;&atilde;o padr&atilde;o"
 onClick="reset_config();"></P>
 
 </FORM>
-
-</DIV>
index d694519..cdc4b14 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Erro {?title} {?printer_name}</H2>
 
 <P>Erro:</P>
 
-<BLOCKQUOTE>Operação desconhecida "{op}"!</BLOCKQUOTE>
-
-</DIV>
+<BLOCKQUOTE>Opera&ccedil;&atilde;o desconhecida "{op}"!</BLOCKQUOTE>
index 1bfcc8f..af1c046 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Erro {?title} {?printer_name}</H2>
 
 <P>{?message?{message}:Erro}:</P>
 
 <BLOCKQUOTE>{error}</BLOCKQUOTE>
-
-</DIV>
index f2bafb3..e890b7c 100644 (file)
@@ -1,38 +1,43 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<HTML>
-<HEAD>
-       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-       <TITLE>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</TITLE>
-       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups.css">
-       <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
-       {refresh_page?<META HTTP-EQUIV="Refresh" CONTENT="{refresh_page}">:}
-       <SCRIPT TYPE="text/javascript"><!--
-       /* Show an error if cookies are disabled */
-       function check_cookies() {
-         if (!navigator.cookieEnabled) {
-               document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
-         }
-       }
-       --></SCRIPT>
-</HEAD>
-<BODY ONLOAD="check_cookies();">
-<TABLE CLASS="page" SUMMARY="{title}">
-<TR><TD CLASS="body">
-<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" SUMMARY="">
-<TR HEIGHT="36">
-<TD><A HREF="http://www.cups.org/" TARGET="_blank"><IMG
-SRC="/images/left.gif" WIDTH="64" HEIGHT="36" BORDER="0" ALT=""></A></TD>
-<TD CLASS="unsel"><A HREF="/">&nbsp;&nbsp;In&iacute;cio&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=admin?:un}sel"><A HREF="/admin">&nbsp;&nbsp;Administra&ccedil;&atilde;o&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=classes?:un}sel"><A HREF="/classes/">&nbsp;&nbsp;Classes&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=help?:un}sel"><A HREF="/help/">&nbsp;&nbsp;Ajuda&nbsp;online&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=jobs?:un}sel"><A HREF="/jobs/">&nbsp;&nbsp;Trabalhos&nbsp;&nbsp;</A></TD>
-<TD CLASS="{SECTION=printers?:un}sel"><A HREF="/printers/">&nbsp;&nbsp;Impressoras&nbsp;&nbsp;</A></TD>
-<TD CLASS="unsel" WIDTH="100%"><FORM ACTION="/help/" METHOD="GET"><INPUT
-TYPE="SEARCH" NAME="QUERY" SIZE="20" PLACEHOLDER="Procurar ajuda"
-VALUE="{SECTION=help?{?QUERY}:}" AUTOSAVE="org.cups.help" RESULTS="20"></FORM></TD>
-<TD><IMG SRC="/images/right.gif" WIDTH="4" HEIGHT="36" ALT=""></TD>
-</TR>
-</TABLE>
-<DIV ID="body">
+<!DOCTYPE HTML>
+<html>
+  <head>
+    <link rel="stylesheet" href="/cups.css" type="text/css">
+    <link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+    {refresh_page?<meta http-equiv="refresh" content="{refresh_page}">:}
+    <meta http-equiv="X-UA-Compatible" content="IE=9">
+    <meta name="viewport" content="width=device-width">
+    <style>html{display:none;}</style>
+    <script type="text/javascript"><!--
+      /* Only display document if we are not in a frame... */
+      if (self == top) {
+        document.documentElement.style.display = 'block';
+      } else {
+        top.location = self.location;
+      }
 
+      /* Show an error if cookies are disabled */
+      function check_cookies() {
+       if (!navigator.cookieEnabled) {
+             document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
+       }
+      }
+    --></SCRIPT>
+    <title>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
+  </head>
+  <body onload="check_cookies();">
+    <div class="header">
+      <ul>
+       <li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
+       <li><a href="/">In&iacute;cio</a></li>
+       <li><a {SECTION=admin?class="active" :}href="/admin">Administra&ccedil;&atilde;o</a></li>
+       <li><a {SECTION=classes?class="active" :}href="/classes/">Classes</a></li>
+       <li><a {SECTION=help?class="active" :}href="/help/">Ajuda</a></li>
+       <li><a {SECTION=jobs?class="active" :}href="/jobs/">Trabalhos</a></li>
+       <li><a {SECTION=printers?class="active" :}href="/printers/">Impressoras</a></li>
+      </ul>
+    </div>
+    <div class="body">
+      <div class="row">
+       <h1>{title}</h1>
index 080b842..d6a43fe 100644 (file)
@@ -1,4 +1,3 @@
-<DIV CLASS="indent">
 <FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
 {TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
 
@@ -12,7 +11,7 @@ AUTOSAVE="org.cups.help" RESULTS="20">
 </FORM>
 
 <!-- Bookmarks -->
-<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Conteúdo">
+<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Conte&uacute;do">
 <TR><TD>
 
 <H3 CLASS="title">Documentos de ajuda online</H3>
@@ -32,20 +31,12 @@ AUTOSAVE="org.cups.help" RESULTS="20">
 :<P>Nenhum resultado encontrado.</P>}
 <HR NOSHADE>:}
 {HELPTITLE?<H1>{HELPTITLE}</H1>
-<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Ver versão imprimível"></FORM>:
+<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Ver vers&atilde;o imprim&iacute;vel"></FORM>:
 
 <H1>Ajuda online</H1>
 
-<P>Essa é a interface de ajuda online do CUPS. Forneça expressões de pesquisa
-acima ou clique em qualquer um dos links de documentação para mostrar
-a informação de ajuda online.</P>
+<P>Essa &eacute; a interface de ajuda online do CUPS. Forne&ccedil;a express&otilde;es de pesquisa acima ou clique em qualquer um dos links de documenta&ccedil;&atilde;o para mostrar a informa&ccedil;&atilde;o de ajuda online.</P>
 
-<P>Se você é novo no CUPS, leia a página "<a
-href="/help/overview.html">Visão geral do CUPS</a>". Usuários veteranos
-devem ler a página "<a href="/help/whatsnew.html">O que Há de Novo no CUPS
-1.6</a>".</P>
+<P>Se voc&ecirc; &eacute; novo no CUPS, leia a p&aacute;gina "<a href="/help/overview.html">Vis&atilde;o geral do CUPS</a>".</P>
 
-<P>A <A HREF="http://www.cups.org/">Página inicial do CUPS</A> também
-fornece muitos recursos incluindo fórums de discussão de usuários, respostas
-a perguntas frequentes e um formulário para enviar registros de erros e
-pedidos de melhorias.</P>}
+<P>A <A HREF="http://www.cups.org/">p&aacute;gina inicial do CUPS</A> tamb&eacute;m fornece muitos recursos incluindo f&oacute;rums de discuss&atilde;o de usu&aacute;rios, respostas a perguntas frequentes e um formul&aacute;rio para enviar registros de erros e pedidos de melhorias.</P>}
diff --git a/templates/pt_BR/help-printable.tmpl b/templates/pt_BR/help-printable.tmpl
new file mode 100644 (file)
index 0000000..2463c16
--- /dev/null
@@ -0,0 +1,9 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<HTML>
+<HEAD>
+       <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+       <TITLE>{HELPTITLE}</TITLE>
+       <LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
+       <LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
+</HEAD>
+<BODY>
diff --git a/templates/pt_BR/help-trailer.tmpl b/templates/pt_BR/help-trailer.tmpl
new file mode 100644 (file)
index 0000000..e69de29
index c93b431..1c6acbf 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Cancelar trabalho {job_id}</H2>
 
 <P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi cancelado.
-
-</DIV>
index 37aa625..2465207 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Reter trabalho {job_id}</H2>
 
-<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi retido para não ser impresso.
-
-</DIV>
+<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi retido para n&atilde;o ser impresso.
index 74b3a8b..32e0f38 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
@@ -23,5 +21,3 @@
 </TABLE>
 
 </FORM>
-
-</DIV>
index 66f7096..df0440e 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">{job_id?Mover trabalho {job_id}:Mover trabalhos}</H2>
 
 <P>{job_id?<A HREF="/jobs/{job_id}">Trabalho {job_id} for movido</A>:Todos trabalhos foram movidos} para
 <A HREF="/{is_class?classes:printers}/{job_printer_name}">{job_printer_name}</A>.</P>
-
-</DIV>
index f44ab36..d2c76d0 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Liberar trabalho {job_id}</H2>
 
-<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi liberado para impressão.
-
-</DIV>
+<P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi liberado para impress&atilde;o.
index cf08075..40699d6 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Reimprimir trabalho {job_id}</H2>
 
 <P><A HREF="{job_printer_uri}">Trabalho {job_id}</A> foi reiniciado.
-
-</DIV>
index c37736f..c967b33 100644 (file)
@@ -1,5 +1,5 @@
-<DIV CLASS="indent">{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabalhos ativos"></FORM>}
-{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabalhos completos"></FORM>}
-{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Mostrar todos trabalhos"></FORM>}</DIV>
+{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabalhos ativos"></FORM>}
+{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="conclu&iacute;dos"><INPUT TYPE="SUBMIT" VALUE="Mostrar trabalhos conclu&iacute;dos"></FORM>}
+{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Mostrar todos trabalhos"></FORM>}
 
-<P ALIGN="CENTER">{total=0?Nenhum trabalho:Mostrando {#job_id} de {total} trabalho{total=1?:s}} {?which_jobs=?ativos:{which_jobs=all?:completos}} .</P>
+<P ALIGN="CENTER">{total=0?Nenhum trabalho:Mostrando {#job_id} de {total} trabalho{total=1?:s}} {?which_jobs=?ativo{total<2?:s}}:{which_jobs=all?:conclu&iacute;dos}.</P>
index 3ad2108..9f99dc7 100644 (file)
@@ -1,19 +1,19 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Job List">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Nome</TH><TH>Usuário</TH><TH>Tamanho</TH><TH>Páginas</TH><TH>Estado</TH><TH>Controle</TH></TR>
+<TR><TH>ID</TH><TH>Nome</TH><TH>Usu&Atilde;&Acirc;¡rio</TH><TH>Tamanho</TH><TH>P&Atilde;&Acirc;¡ginas</TH><TH>Estado</TH><TH>Controle</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
 <TR VALIGN="TOP">
 <TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
 <TD>{?job_name=?Desconhecido:{job_name}}&nbsp;</TD>
-<TD>{?job_originating_user_name=?Oculto:{job_originating_user_name}}&nbsp;</TD>
+<TD>{?job_originating_user_name=?Retido:{job_originating_user_name}}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
 <TD>{job_media_sheets_completed=0?Desconhecido:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?pendente desde<BR>{time_at_creation}:{job_state=4?retido desde<BR>{time_at_creation}:
-{job_state=5?processando desde<BR>{time_at_processing}:{job_state=6?parado:
-{job_state=7?cancelado em<BR>{time_at_completed}:{job_state=8?abortado:completou em<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+<TD>{job_state=3?Pendente desde<BR>{?time_at_creation=?Unknown:{time_at_creation}}:{job_state=4?Retido desde<BR>{?time_at_creation=?Unknown:{time_at_creation}}:
+{job_state=5?Processando desde<BR>{?time_at_processing=?Unknown:{time_at_processing}}:{job_state=6?parado:
+{job_state=7?Cancelado em<BR>{?time_at_completed=?Unknown:{time_at_completed}}:{job_state=8?Abortado:Conclu&iacute;do em<BR>{?time_at_completed=?Unknown:{time_at_completed}}}}}}}}&nbsp;{job_printer_state_message?<BR>
 <EM>"{job_printer_state_message}"</EM>:}</TD>
 <TD>
 {job_preserved>0?{job_state>5?
index bdfe903..9152ed4 100644 (file)
@@ -1,11 +1,7 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Impressoras disponíveis</H2>
+<H2 CLASS="title">Impressoras dispon&iacute;veis</H2>
 
 {#device_uri=0?<P>Nenhuma impressora encontrada.</P>
 :<UL>{[device_uri]
 <LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Adicionar esta impressora"></FORM>
 {device_make_and_model} ({device_info})</LI>
 }</UL>}
-
-</DIV>
index 606dcfe..54c524d 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Modificar classe {printer_name}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
@@ -9,11 +7,11 @@
 
 <TABLE>
 <TR>
-<TH CLASS="label">Descrição:</TH>
+<TH CLASS="label">Descri&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
 </TR>
 <TR>
-<TH CLASS="label">Localização:</TH>
+<TH CLASS="label">Localiza&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
 </TR>
 <TR>
@@ -31,4 +29,3 @@
 </TABLE>
 
 </FORM>
-</DIV>
\ No newline at end of file
index a43313a..efdef54 100644 (file)
@@ -1,5 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Modificar {printer_name}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
 
 <TABLE>
 <TR>
-<TH CLASS="label">Descrição:</TH>
+<TH CLASS="label">Descri&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Descrição legível para humanos, tal como "HP LaserJet com Duplexador")</SMALL></TD>
+<SMALL>(Descri&ccedil;&atilde;o leg&iacute;vel para humanos, tal como "HP LaserJet com Duplexador")</SMALL></TD>
 </TR>
 <TR>
-<TH CLASS="label">Localização:</TH>
+<TH CLASS="label">Localiza&ccedil;&atilde;o:</TH>
 <TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
-<SMALL>(Localização legível para humanos, tal como "Laboratório 1")</SMALL></TD>
+<SMALL>(Localiza&ccedil;&atilde;o leg&iacute;vel para humanos, tal como "Laborat&oacute;rio 1")</SMALL></TD>
 </TR>
 <TR>
-<TH CLASS="label">Conexão:</TH>
+<TH CLASS="label">Conex&atilde;o:</TH>
 <TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
 </TR>
 <TR>
@@ -39,4 +37,3 @@ Compartilhar esta impressora</TD>
 </TABLE>
 
 </FORM>
-</DIV>
index e0708cc..a72facd 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
+<H2 CLASS="title">Alterar configura&ccedil;&otilde;es</H2>
 
-<H2 CLASS="title">Alterar configurações</H2>
-
-<P>O servidor não foi reiniciado porque nenhuma alteração foi feita na configuração...</P>
-
-</DIV>
+<P>O servidor n&atilde;o foi reiniciado porque nenhuma altera&ccedil;&atilde;o foi feita na configura&ccedil;&atilde;o...</P>
index 2874c2d..f649044 100644 (file)
@@ -1,7 +1,7 @@
-<P><B>Erro:</B> As seguintes opções estão conflitando:</P>
+<P><B>Erro:</B> As seguintes op&ccedil;&otilde;es est&atilde;o conflitando:</P>
 
 <UL>
 {[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
 }</UL>
 
-<P>Por favor, altere uma ou mais opções para resolver os conflitos.</P>
+<P>Por favor, altere uma ou mais op&ccedil;&otilde;es para resolver os conflitos.</P>
index 758b20a..d46555e 100644 (file)
@@ -7,10 +7,10 @@
 <TR><TH CLASS="sublabel">{paramtext}:</TH>
 <TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
 <OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Pontos</OPTION>
-<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Milímetros</OPTION>
-<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Centímetros</OPTION>
+<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Mil&iacute;metros</OPTION>
+<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Cent&iacute;metros</OPTION>
 <OPTION VALUE="in"{paramvalue=in? SELECTED:}>Polegadas</OPTION>
-<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Pés</OPTION>
+<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>P&eacute;s</OPTION>
 <OPTION VALUE="m"{paramvalue=m? SELECTED:}>Metros</OPTION>
 </SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
 }</TABLE>
index 882c8b9..8e7e494 100644 (file)
@@ -1,5 +1,5 @@
 </TABLE>
 
-<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Definir opções padrão"></P>
+<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Definir op&ccedil;&otilde;es padr&atilde;o"></P>
 
 </DIV>
\ No newline at end of file
index 6ee823a..b388105 100644 (file)
@@ -1,6 +1,7 @@
-<TABLE CLASS="inset" SUMMARY="Barra de paginação">
+<TABLE CLASS="inset" SUMMARY="Barra de pagina&ccedil;&atilde;o">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anterior"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar próximo &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Mostrar anterior"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Mostrar pr&oacute;ximo &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index d19a13f..15ffa0f 100644 (file)
@@ -1,9 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Aceitar trabalhos na {is_class?classe:impressora} {printer_name}</H2>
 
-<P>A {is_class?classe:impressora} <A
-HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-agora está aceitando trabalhos.</P>
-
-</DIV>
+<P>A {is_class?classe:impressora} <A HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
+agora est&aacute; aceitando trabalhos.</P>
index e021f2c..011c8b4 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Adicionar impressora</H2>
 
 <P>A impressora <A HREF="/printers/{printer_name}">{printer_name}</A> foi adicionada
 com sucesso.
-
-</DIV>
similarity index 57%
rename from templates/pt_BR/printer-purge.tmpl
rename to templates/pt_BR/printer-cancel-jobs.tmpl
index cb480b4..32a22da 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Eliminar trabalhos na {is_class?classe:impressora} {printer_name}</H2>
+<H2 CLASS="title">Cancelar trabalhos na {is_class?classe:impressora} {printer_name}</H2>
 
 <P>Todos os trabalhos da {is_class?classe:impressora} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-foram eliminados.</P>
-
-</DIV>
\ No newline at end of file
+foram cancelados.</P>
index 8cd2aa5..c151f2b 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
+<H2 CLASS="title">Configurar op&ccedil;&otilde;es padr&atilde;o para {printer_name}</H2>
 
-<H2 CLASS="title">Configurar opções padrão para {printer_name}</H2>
-
-<P>As opções padrão da {OP=set-class-options?classe <A HREF="/classes/{printer_name}">:impressora <A HREF="/printers/{printer_name}">}{printer_name}</A>
+<P>As op&ccedil;&otilde;es padr&otilde;es da {OP=set-class-options?classe <A HREF="/classes/{printer_name}">:impressora <A HREF="/printers/{printer_name}">}{printer_name}</A>
 foram configuradas com sucesso.
-
-</DIV>
index 08f3a5a..29b79e0 100644 (file)
@@ -1,10 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Excluir impressora {printer_name}</H2>
 
-<P><B>Aviso:</B> Tem certeza que deseja excluir a impressora
-{printer_name}?</P>
-
-<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Apagar impressora"></FORM></P>
+<P><B>Aviso:</B> Tem certeza que deseja excluir a impressora {printer_name}?</P>
 
-</DIV>
+<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Excluir impressora"></FORM></P>
index 6c5e7de..0e4e856 100644 (file)
@@ -1,12 +1,8 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Definir a {is_class?classe:impressora} {printer_name} como padrão</H2>
+<H2 CLASS="title">Definir a {is_class?classe:impressora} {printer_name} como padr&atilde;o</H2>
 
 <P>A {is_class?classe:impressora} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-foi definida como a impressora padrão no servidor.</P>
-
-<BLOCKQUOTE><B>Nota:</B> O padrão de qualquer usuário que tenha sido configurado via
-do comando <TT>lpoptions</TT> vai sobrepor esta configuração padrão.</BLOCKQUOTE>
+foi definida como a impressora padr&atilde;o no servidor.</P>
 
-</DIV>
+<BLOCKQUOTE><B>Nota:</B> O padr&atilde;o de qualquer usu&aacute;rio que tenha sido configurado via
+do comando <TT>lpoptions</TT> vai sobrepor esta configura&ccedil;&atilde;o padr&atilde;o.</BLOCKQUOTE>
index 270eb12..40e012e 100644 (file)
@@ -1,7 +1,3 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Excluir Impressora {printer_name}</H2>
 
-<P>A impressora {printer_name} foi excluída com sucesso.
-
-</DIV>
+<P>A impressora {printer_name} foi exclu&iacute;da com sucesso.
\ No newline at end of file
index 05488e2..89186cb 100644 (file)
@@ -1,3 +1 @@
-<DIV CLASS="indent">
 <H3 CLASS="title">Trabalhos</H3>
-</DIV>
index d0d919a..de4994d 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Modificar impressora {printer_name}</H2>
 
 <P>A impressora <A HREF="/printers/{printer_name}">{printer_name}</A> foi
-modificada com sucesso.
-
-</DIV>
\ No newline at end of file
+modificada com sucesso.
\ No newline at end of file
index 2bcca7b..eb969cb 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Rejeitar trabalhos na {is_class?classe:impressora} {printer_name}</H2>
 
 <P>A {is_class?classe:impressora} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-não está mais aceitando trabalhos.</P>
-
-</DIV>
+n&atilde;o est&aacute; mais aceitando trabalhos.</P>
index 3826f84..2216239 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Resumir a {is_class?classe:impressora} {printer_name}</H2>
 
 <P>A {is_class?classe:impressora} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-foi resumida com sucesso.</P>
-
-</DIV>
\ No newline at end of file
+foi resumida com sucesso.</P>
\ No newline at end of file
index dfd8dce..984aedf 100644 (file)
@@ -1,9 +1,5 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title">Pausar a {is_class?classe:impressora} {printer_name}</H2>
 
 <P>A {is_class?classe:impressora} <A
 HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
-foi pausada.</P>
-
-</DIV>
\ No newline at end of file
+foi pausada.</P>
\ No newline at end of file
index b5ceb23..922d4b4 100644 (file)
@@ -1,17 +1,15 @@
-<DIV CLASS="indent">
-
 <H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
-({printer_state=3?Inativa:{printer_state=4?processando:pausada}},
+({printer_state=3?ociosa:{printer_state=4?processando:pausada}},
 {printer_is_accepting_jobs=0?rejeitando trabalhos:aceitando trabalhos},
-{server_is_sharing_printers=0?não compartilhada:{printer_is_shared=0?não compartilhada:compartilhada}} {default_name={printer_name}?, padrão do servidor:})</H2>
+{server_is_sharing_printers=0?n&atilde;o compartilhada:{printer_is_shared=0?n&atilde;o compartilhada:compartilhada}} {default_name={printer_name}?, padr&atilde;o do servidor:})</H2>
 
 <FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
-<OPTION VALUE="">Manutenção</OPTION>
-<OPTION VALUE="print-test-page">Imprimir página de teste</OPTION>
-{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Limpar cabeças de impressão</OPTION>:}
-{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Imprimir página de auto-teste</OPTION>:}
+<OPTION VALUE="">Manuten&ccedil;&atilde;o</OPTION>
+<OPTION VALUE="print-test-page">Imprimir p&aacute;gina de teste</OPTION>
+{printer_commands~.*Clean.*?<OPTION VALUE="clean-print-heads">Limpar cabe&ccedil;as de impress&atilde;o</OPTION>:}
+{printer_commands~.*PrintSelfTestPage.*?<OPTION VALUE="print-self-test-page">Imprimir p&aacute;gina de auto-teste</OPTION>:}
 {printer_state=5?<OPTION VALUE="start-printer">Pausar impressora</OPTION>:<OPTION VALUE="stop-printer">Pausar impressora</OPTION>}
 {printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aceitar trabalhos</OPTION>:<OPTION VALUE="reject-jobs">Rejeitar trabalhos</OPTION>}
 <OPTION VALUE="move-jobs">Mover todos trabalhos</OPTION>
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
 <SELECT NAME="OP" ONCHANGE="document.administration.submit();">
-<OPTION VALUE="">Administração</OPTION>
+<OPTION VALUE="">Administra&ccedil;&atilde;o</OPTION>
 <OPTION VALUE="modify-printer">Modificar impressora</OPTION>
 <OPTION VALUE="delete-printer">Excluir impressora</OPTION>
-<OPTION VALUE="set-printer-options">Definir opções padrão</OPTION>
-<OPTION VALUE="set-as-default">Definir com padrão do servidor</OPTION>
-<OPTION VALUE="set-allowed-users">Definir usuários permitidos</OPTION>
+<OPTION VALUE="set-printer-options">Definir op&ccedil;&otilde;es padr&otilde;es</OPTION>
+<OPTION VALUE="set-as-default">Definir com padr&atilde;o do servidor</OPTION>
+<OPTION VALUE="set-allowed-users">Definir usu&aacute;rios permitidos</OPTION>
 </SELECT>
 <NOSCRIPT><INPUT TYPE="SUBMIT" VALUE="Ir"></NOSCRIPT>
 </FORM>
 
 <TABLE SUMMARY="{printer_name}">
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descrição:</TH><TD>{printer_info}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Localização:</TH><TD>{printer_location}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Descri&ccedil;&atilde;o:</TH><TD>{printer_info}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Localiza&ccedil;&atilde;o:</TH><TD>{printer_location}</TD></TR>
 <TR><TH ALIGN="RIGHT" VALIGN="TOP">Driver:</TH><TD>{printer_make_and_model} ({color_supported=1?color:grayscale}{sides_supported?, 2-sided printing:})<BR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Conexão:</TH><TD>{device_uri}</TD></TR>
-<TR><TH ALIGN="RIGHT" VALIGN="TOP">Padrões:</TH><TD>job-sheets={job_sheets_default}
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Conex&atilde;o:</TH><TD>{device_uri}</TD></TR>
+<TR><TH ALIGN="RIGHT" VALIGN="TOP">Padr&otilde;es:</TH><TD>job-sheets={job_sheets_default}
 media={media_default?{media_default}:desconhecido}
 {sides_default?sides={sides_default}:}</TD></TR>
 </TABLE>
-
-</DIV>
\ No newline at end of file
index 97ee462..74e62a2 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Lista de impressoras">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Nome da fila <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Nome da fila <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Descrição</TH><TH>Localização</TH><TH>Marca e modelo</TH><TH>Estado</TH></TR>
+<TR><TH>Nome da fila</TH><TH>Descri&ccedil;&atilde;o</TH><TH>Localiza&ccedil;&atilde;o</TH><TH>Marca e modelo</TH><TH>Estado</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index 0a90143..41e889d 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
+<H2 CLASS="title">Alterar configura&ccedil;&otilde;es</H2>
 
-<H2 CLASS="title">Alterar configurações</H2>
-
-<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
-ALT="Busy Indicator"> Por favor, aguarde enquanto o servidor é reiniciado...</P>
-
-</DIV>
+<P><IMG SRC="data:image/gif;base64,R0lGODlhEAAQAIQAAP///wAAAPDw8IqKiuDg4EZGRnp6egAAAFhYWCQkJKysrL6+vhQUFJycnAQEBDY2NmhoaP///////////////////////////////////////////////////////////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQABQD/ACwAAAAAEAAQAAAFdyAgAgIJIeWoAkRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoSDBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAEFAB8ALAAAAAAQABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwnVTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3IQAh+QQBBQAfACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l/Ag1AXySJgn5LcoE3QXI3IQAh+QQBBQAfACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpBAMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkEAQUAHwAsAAAAABAAEAAABWwgIAICaRhlOY4EIgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkEAQUAHwAsAAAAABAAEAAABX4gIAICuSxlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIwmC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESAMhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl9cDgcnDkdtNwiMJCshACH5BAEFAB8ALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBsiClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJDX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkEAQUAHwAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZxLqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjsODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAEFAB8ALAAAAAAQABAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHUERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3YqIQAh+QQBBQAfACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOipXwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCDWljaQIQCE5qMHcNhCkjIQAh+QQBBQAfACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8cSpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg04Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOw==" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
+ALT="Busy Indicator"> Por favor, aguarde enquanto o servidor &eacute; reiniciado...</P>
index 15a6b41..d420ac3 100644 (file)
@@ -15,15 +15,15 @@ function select_printers() {
 
 <H2 CLASS="title">Exportar impressoras para o Samba</H2>
 
-{error?<P>Não foi possível exportar impressoras para o Samba\:</P>
+{error?<P>N&atilde;o foi poss&iacute;vel exportar impressoras para o Samba\:</P>
 <BLOCKQUOTE>{error}</BLOCKQUOTE>
-<P>Consulte o arquivo <A HREF="/admin/log/error_log"
-TARGET="_blank">error_log</A> para mais informações.</P>:
-<P>Essa página permite que você exporte impressoras para o Samba
-para que clientes Windows possam acessá-las através do ícone de
-<VAR>Meus locais de rede</VAR> nas suas áreas de trabalho.
-Você deve primeiro instalar os drivers de impressora PostScript
-do Windows como descrito na página de manual do
+<P>>Consulte o arquivo <A HREF="/admin/log/error_log"
+TARGET="_blank">error_log</A> para mais informa&ccedil;&otilde;es.</P>:
+<P>Essa p&aacute;gina permite que voc&ecirc; exporte impressoras para o Samba
+para que clientes Windows possam acess&aacute;-las atrav&eacute;s dos &iacute;cones de
+<VAR>Ambiente de Rede</VAR> ou <VAR>Locais de Rede</VAR> nas suas
+&aacute;reas de trabalho. Voc&ecirc; deve primeiro instalar os drivers de
+impressora PostScript do Windows como descrito na p&aacute;gina de manual do
 <A HREF="/help/man-cupsaddsmb.html" TARGET="_blank">cupsaddsmb(8)</A>.</P>}
 
 <TABLE>
@@ -38,12 +38,12 @@ onChange="select_printers()"> Exportar todas as impressoras
 </TD>
 </TR>
 <TR>
-<TH CLASS="label">Nome do usuário do Samba:</TH>
-<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (obrigatório)</TD>
+<TH CLASS="label">Nome do usu&aacute;rio do Samba:</TH>
+<TD><INPUT TYPE="TEXT" NAME="USERNAME" VALUE="{?USERNAME}"> (obrigat&oacute;rio)</TD>
 </TR>
 <TR>
 <TH CLASS="label">Senha do Samba:</TH>
-<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (obrigatório)</TD>
+<TD><INPUT TYPE="PASSWORD" NAME="PASSWORD" VALUE=""> (obrigat&oacute;rio)</TD>
 </TR>
 <TR>
 <TD></TD>
index 1d6cbba..1a16c35 100644 (file)
@@ -3,7 +3,7 @@
 {ORDER?<INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{ORDER}">:}
 
 <P ALIGN="CENTER"><B>Pesquisar em
-{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classes:{SECTION=jobs?Trabalhos:Impressoras}}}:</B>
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?classes:{SECTION=jobs?trabalhos:impressoras}}}:</B>
 <INPUT TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40"  PLACEHOLDER="" AUTOSAVE="org.cups.{SECTION}" RESULTS="20"> <INPUT
 TYPE="SUBMIT" VALUE="Pesquisar"> <INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Limpar"></P>
 
index 4c15c0c..9c1b064 100644 (file)
@@ -1,12 +1,10 @@
-<DIV CLASS="indent">
-
-<H2 CLASS="title">Definir opções padrão para {printer_name}</H2>
+<H2 CLASS="title">Definir op&ccedil;&otilde;es padr&otilde;es para {printer_name}</H2>
 
 <FORM METHOD="POST" ACTION="/admin">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
 <INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
-{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Consultar impressora por opções padrão">:}
+{HAVE_AUTOCONFIGURE?<INPUT TYPE="SUBMIT" NAME="AUTOCONFIGURE" VALUE="Consultar impressora por op&ccedil;&otilde;es padr&otilde;es">:}
 
 <SCRIPT TYPE="text/javascript"><!--
 function update_paramtable(option)
index 11adc70..b92988a 100644 (file)
@@ -12,5 +12,3 @@ for (var i = 0; i < paramtables.length; i++)
 }
 --></SCRIPT>
 </FORM>
-
-</DIV>
index 32cf79a..c67cc97 100644 (file)
@@ -1,5 +1 @@
-<DIV CLASS="indent">
-
-<P>A inscrição {subscription_name} foi adicionada com sucesso.</P>
-
-</DIV>
+<P>A inscri&ccedil;&atilde;o {subscription_name} foi adicionada com sucesso.</P>
index 173230b..be57bab 100644 (file)
@@ -1,5 +1 @@
-<DIV CLASS="indent">
-
-<P>A inscrição #{notify_subscription_id} foi cancelada.</P>
-
-</DIV>
+<P>A inscri&ccedil;&atilde;o #{notify_subscription_id} foi cancelada.</P>
index 6d038af..87ccde8 100644 (file)
@@ -1,8 +1,4 @@
-<DIV CLASS="indent">
+<H2 CLASS="title">Imprimir p&aacute;gina de teste em {printer_name}</H2>
 
-<H2 CLASS="title">Imprimir página de teste em {printer_name}</H2>
-
-<P>Página de teste enviada; o ID do trabalho é <A HREF="/{SECTION}/{printer_name}">
+<P>P&aacute;gina de teste enviada; o ID do trabalho &eacute; <A HREF="/{SECTION}/{printer_name}">
 {printer_name}-{job_id}</A>.</P>
-
-</DIV>
index 167e43f..b8ef41e 100644 (file)
@@ -1,8 +1,5 @@
-</DIV></TD></TR>
-<TR><TD>&nbsp;</TD></TR>
-<TR><TD CLASS="trailer">CUPS e sua logo são marcas registradas da
-<A HREF="http://www.apple.com">Apple Inc.</A> CUPS é copyright 2007-2014 Apple
-Inc. Todos os direitos reservados.</TD></TR>
-</TABLE>
-</BODY>
-</HTML>
+      </div>
+    </div>
+    <div class="footer">CUPS e sua logo s&atilde;o marcas registradas da <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2015 Apple Inc. Todos os direitos reservados.</div>
+  </body>
+</html>
index 76cf19a..5053f90 100644 (file)
@@ -1,30 +1,27 @@
-<DIV CLASS="indent">
-
 <FORM METHOD="POST" ACTION="/admin">
 <INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
 <INPUT TYPE="HIDDEN" NAME="OP" VALUE="{OP}">
 <INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
 {IS_CLASS?<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="{IS_CLASS}">:}
 
-<H2 CLASS="title">Usuários permitidos para {printer_name}</H2>
+<H2 CLASS="title">Usu&aacute;rios permitidos para {printer_name}</H2>
 
 <TABLE>
 <TR>
-<TH CLASS="label">Usuários:</TH>
+<TH CLASS="label">Usu&aacute;rios:</TH>
 <TD>
 <INPUT TYPE='TEXT' NAME='users' SIZE='60' VALUE='{?requesting_user_name_allowed}{?requesting_user_name_denied}'>
 <BR>
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Permitir que estes usuários imprimam
-<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Impedir que estes usuários imprimam
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-allowed' {requesting_user_name_allowed?checked:}>Permitir que estes usu&aacute;rios imprimam
+<INPUT TYPE='RADIO' NAME='type' VALUE='requesting-user-name-denied' {requesting_user_name_denied?checked:}>Impedir que estes usu&aacute;rios imprimam
 </TD>
 </TR>
 <TR>
 <TD></TD>
 <TD>
-<INPUT TYPE="SUBMIT" VALUE="Definir usuários permitidos">
+<INPUT TYPE="SUBMIT" VALUE="Definir usu&aacute;rios permitidos">
 </TD>
 </TR>
 </TABLE>
 
 </FORM>
-</DIV>
index 9b90b76..a482ec7 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Список групп">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Наименование <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Наименование <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Описание</TH><TH>Расположение</TH><TH>Состав</TH><TH>Статус</TH></TR>
+<TR><TH>Наименование</TH><TH>Описание</TH><TH>Расположение</TH><TH>Состав</TH><TH>Статус</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index ce80fdb..0359c34 100644 (file)
@@ -1,7 +1,7 @@
 {#job_id=0?:
 <TABLE CLASS="list" SUMMARY="Задания">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Номер <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Название</TH><TH>Пользователь</TH><TH>Размер</TH><TH>Страниц</TH><TH>Статус</TH><TH>Управление</TH></TR>
+<TR><TH>Номер</TH><TH>Название</TH><TH>Пользователь</TH><TH>Размер</TH><TH>Страниц</TH><TH>Статус</TH><TH>Управление</TH></TR>
 </THEAD>
 <TBODY>
 {[job_id]
@@ -11,9 +11,9 @@
 <TD>{?job_originating_user_name=?Приостановлено пользователем:{job_originating_user_name}}&nbsp;</TD>
 <TD>{job_k_octets}k&nbsp;</TD>
 <TD>{job_media_sheets_completed=0?Неизвестно:{?job_media_sheets_completed}}&nbsp;</TD>
-<TD>{job_state=3?В очереди<BR>{time_at_creation}:{job_state=4?Приостановлено с<BR>{time_at_creation}:
-{job_state=5?Создано<BR>{time_at_processing}:{job_state=6?Остановлено:
-{job_state=7?Отменено<BR>{time_at_completed}:{job_state=8?Прервано:Завершено<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
+<TD>{job_state=3?В очереди<BR>{?time_at_creation=?Unknown:{time_at_creation}}:{job_state=4?Приостановлено с<BR>{?time_at_creation=?Unknown:{time_at_creation}}:
+{job_state=5?Создано<BR>{?time_at_processing=?Unknown:{time_at_processing}}:{job_state=6?Остановлено:
+{job_state=7?Отменено<BR>{?time_at_completed=?Unknown:{time_at_completed}}:{job_state=8?Прервано:Завершено<BR>{?time_at_completed=?Unknown:{time_at_completed}}}}}}}}&nbsp;{job_printer_state_message?<BR>
 <EM>"{job_printer_state_message}"</EM>:}</TD>
 <TD>
 {job_preserved>0?{job_state>5?
index 0d0459b..14eac86 100644 (file)
@@ -1,6 +1,7 @@
 <TABLE CLASS="inset" SUMMARY="Просмотр по страницам">
 <TR>
-       <TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Предыдущая"></FORM>:&nbsp;}</TD>
-       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Следующая &#x25b6;"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%">{PREV?{PREV>0?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="0"><INPUT TYPE="SUBMIT" VALUE="&#x25c0;&#x25c0; Show First"></FORM> :}<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Предыдущая"></FORM>:&nbsp;}</TD>
+       <TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Следующая &#x25b6;"></FORM>:&nbsp;}
+       {LAST?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{LAST}"><INPUT TYPE="SUBMIT" VALUE="Show Last &#x25b6;&#x25b6;"></FORM>:}</TD>
 </TR>
 </TABLE>
index 939835c..d71c51e 100644 (file)
@@ -1,7 +1,7 @@
 {#printer_name=0?:
 <TABLE CLASS="list" SUMMARY="Список принтеров">
 <THEAD>
-<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Наименование <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Наименование <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Описание</TH><TH>Расположение</TH><TH>Драйвер</TH><TH>Статус</TH></TR>
+<TR><TH>Наименование</TH><TH>Описание</TH><TH>Расположение</TH><TH>Драйвер</TH><TH>Статус</TH></TR>
 </THEAD>
 <TBODY>
 {[printer_name]
index ab75c98..097d0fc 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: 4.1-requests.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   Verify that the server requires the following attributes:
 #
        STATUS server-error-version-not-supported
 }
 #
-# End of "$Id: 4.1-requests.test 11398 2013-11-06 20:11:11Z msweet $"
+# End of "$Id$"
 #
index 4052ee7..2412382 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: 4.2-cups-printer-ops.test 11798 2014-04-07 15:18:44Z msweet $"
+# "$Id$"
 #
 #   Verify that the CUPS printer operations work.
 #
 }
 
 #
-# End of "$Id: 4.2-cups-printer-ops.test 11798 2014-04-07 15:18:44Z msweet $"
+# End of "$Id$"
 #
index fbfa3b9..1e372cc 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: 4.3-job-ops.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   Verify that the IPP job operations work.
 #
 }
 
 #
-# End of "$Id: 4.3-job-ops.test 11398 2013-11-06 20:11:11Z msweet $"
+# End of "$Id$"
 #
index e0a18a3..57a767a 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: 4.4-subscription-ops.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   Verify that the CUPS subscription operations work.
 #
 }
 
 #
-# End of "$Id: 4.4-subscription-ops.test 11398 2013-11-06 20:11:11Z msweet $"
+# End of "$Id$"
 #
index c6158da..07f1d5a 100644 (file)
@@ -1,7 +1,5 @@
 #!/bin/sh
 #
-# "$Id: 5.1-lpadmin.sh 12393 2014-12-19 15:33:22Z msweet $"
-#
 # Test the lpadmin command.
 #
 # Copyright 2007-2013 by Apple Inc.
@@ -66,7 +64,3 @@ else
        echo "    PASSED"
 fi
 echo ""
-
-#
-# End of "$Id: 5.1-lpadmin.sh 12393 2014-12-19 15:33:22Z msweet $".
-#
index 3797ab0..857e885 100644 (file)
@@ -1,17 +1,15 @@
 #!/bin/sh
 #
-# "$Id: 5.2-lpc.sh 11398 2013-11-06 20:11:11Z msweet $"
+# Test the lpc command.
 #
-#   Test the lpc command.
+# Copyright 2007 by Apple Inc.
+# Copyright 1997-2005 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007 by Apple Inc.
-#   Copyright 1997-2005 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 echo "LPC Test"
@@ -25,7 +23,3 @@ else
        echo "    PASSED"
 fi
 echo ""
-
-#
-# End of "$Id: 5.2-lpc.sh 11398 2013-11-06 20:11:11Z msweet $".
-#
index 8c9491a..4c0e849 100644 (file)
@@ -1,17 +1,15 @@
 #!/bin/sh
 #
-# "$Id: 5.3-lpq.sh 11398 2013-11-06 20:11:11Z msweet $"
+# Test the lpq command.
 #
-#   Test the lpq command.
+# Copyright 2007 by Apple Inc.
+# Copyright 1997-2005 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007 by Apple Inc.
-#   Copyright 1997-2005 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 echo "LPQ Test"
@@ -25,7 +23,3 @@ else
        echo "    PASSED"
 fi
 echo ""
-
-#
-# End of "$Id: 5.3-lpq.sh 11398 2013-11-06 20:11:11Z msweet $".
-#
index 9d9a182..5092dbe 100644 (file)
@@ -1,17 +1,15 @@
 #!/bin/sh
 #
-# "$Id: 5.4-lpstat.sh 12490 2015-02-06 18:45:48Z msweet $"
+# Test the lpstat command.
 #
-#   Test the lpstat command.
+# Copyright 2007-2011 by Apple Inc.
+# Copyright 1997-2005 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2011 by Apple Inc.
-#   Copyright 1997-2005 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 echo "LPSTAT Test"
@@ -37,7 +35,3 @@ else
        echo "    PASSED ($server)"
 fi
 echo ""
-
-#
-# End of "$Id: 5.4-lpstat.sh 12490 2015-02-06 18:45:48Z msweet $".
-#
index 8d67330..71fc418 100644 (file)
@@ -1,17 +1,15 @@
 #!/bin/sh
 #
-# "$Id: 5.5-lp.sh 12066 2014-07-30 18:30:44Z msweet $"
+# Test the lp command.
 #
-#   Test the lp command.
+# Copyright 2007-2014 by Apple Inc.
+# Copyright 1997-2005 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2014 by Apple Inc.
-#   Copyright 1997-2005 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 echo "LP Default Test"
@@ -92,8 +90,3 @@ else
        echo "    PASSED"
 fi
 echo ""
-
-
-#
-# End of "$Id: 5.5-lp.sh 12066 2014-07-30 18:30:44Z msweet $".
-#
index c918ab2..d3280d2 100644 (file)
@@ -1,17 +1,15 @@
 #!/bin/sh
 #
-# "$Id: 5.6-lpr.sh 12065 2014-07-30 17:56:35Z msweet $"
+# Test the lpr command.
 #
-#   Test the lpr command.
+# Copyright 2007-2014 by Apple Inc.
+# Copyright 1997-2005 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2014 by Apple Inc.
-#   Copyright 1997-2005 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 echo "LPR Default Test"
@@ -80,7 +78,3 @@ fi
 echo ""
 
 ./waitjobs.sh
-
-#
-# End of "$Id: 5.6-lpr.sh 12065 2014-07-30 17:56:35Z msweet $".
-#
index fd89569..e456ec0 100644 (file)
@@ -1,17 +1,15 @@
 #!/bin/sh
 #
-# "$Id: 5.7-lprm.sh 11398 2013-11-06 20:11:11Z msweet $"
+# Test the lprm command.
 #
-#   Test the lprm command.
+# Copyright 2007-2011 by Apple Inc.
+# Copyright 1997-2005 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2011 by Apple Inc.
-#   Copyright 1997-2005 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 echo "LPRM Current Test"
@@ -41,7 +39,3 @@ else
        echo "    PASSED"
 fi
 echo ""
-
-#
-# End of "$Id: 5.7-lprm.sh 11398 2013-11-06 20:11:11Z msweet $".
-#
index 321b75b..28bc0fe 100644 (file)
@@ -1,17 +1,15 @@
 #!/bin/sh
 #
-# "$Id: 5.8-cancel.sh 11398 2013-11-06 20:11:11Z msweet $"
+# Test the cancel command.
 #
-#   Test the cancel command.
+# Copyright 2007-2013 by Apple Inc.
+# Copyright 1997-2006 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2013 by Apple Inc.
-#   Copyright 1997-2006 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 echo "Cancel Destination Test"
@@ -51,7 +49,3 @@ else
        echo "    PASSED"
 fi
 echo ""
-
-#
-# End of "$Id: 5.8-cancel.sh 11398 2013-11-06 20:11:11Z msweet $".
-#
index 416ac58..9cf6ceb 100644 (file)
@@ -1,17 +1,15 @@
 #!/bin/sh
 #
-# "$Id: 5.9-lpinfo.sh 11398 2013-11-06 20:11:11Z msweet $"
+# Test the lpinfo command.
 #
-#   Test the lpinfo command.
+# Copyright 2007-2011 by Apple Inc.
+# Copyright 1997-2005 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2011 by Apple Inc.
-#   Copyright 1997-2005 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 echo "LPINFO Devices Test"
@@ -49,7 +47,3 @@ else
        echo "    PASSED"
 fi
 echo ""
-
-#
-# End of "$Id: 5.9-lpinfo.sh 11398 2013-11-06 20:11:11Z msweet $".
-#
index e2822d0..031b411 100644 (file)
@@ -4,14 +4,7 @@ ippfind.o: ippfind.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
-ippinfra.o: ippinfra.c ../config.h ../cups/cups.h ../cups/file.h \
-  ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h ../cups/pwg.h ../cups/string-private.h \
   ../cups/thread-private.h
-ippproxy.o: ippproxy.c ../cups/cups.h ../cups/file.h ../cups/versioning.h \
-  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
-  ../cups/pwg.h
 ippserver.o: ippserver.c ../config.h ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
   ../cups/language.h ../cups/pwg.h ../cups/string-private.h \
@@ -22,8 +15,4 @@ ipptool.o: ipptool.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h
-xmltotest.o: xmltotest.c ../config.h ../cups/cups.h ../cups/file.h \
-  ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
-  ../cups/language.h ../cups/pwg.h
+  ../cups/thread-private.h ../cups/file-private.h
index 01af7cc..905740a 100644 (file)
@@ -1,16 +1,14 @@
 #
-# "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $"
+# IPP test makefile for CUPS.
 #
-#   IPP test makefile for CUPS.
+# Copyright 2007-2016 by Apple Inc.
+# Copyright 1997-2006 by Easy Software Products, all rights reserved.
 #
-#   Copyright 2007-2014 by Apple Inc.
-#   Copyright 1997-2006 by Easy Software Products, all rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file.  If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
 #
 
 include ../Makedefs
@@ -54,11 +52,8 @@ TESTFILES    =       \
                        validate-job.test
 OBJS           =       \
                        ippfind.o \
-                       ippinfra.o \
-                       ippproxy.o \
                        ippserver.o \
-                       ipptool.o \
-                       xmltotest.o
+                       ipptool.o
 TARGETS                =       \
                        $(IPPFIND_BIN) \
                        ippserver \
@@ -92,7 +87,7 @@ unittests:
 #
 
 clean:
-       $(RM) $(TARGETS) $(OBJS) ippfind-static ippinfra ippinfra-shared ippproxy ippproxy-shared ippserver-shared
+       $(RM) $(TARGETS) $(OBJS) ippfind-static ippserver-shared
 
 
 #
@@ -187,44 +182,6 @@ ippfind:   ippfind.o ../cups/$(LIBCUPS) ../cups/$(LIBCUPSSTATIC)
 
 
 #
-# ippinfra
-#
-
-ippinfra:      ippinfra.o ../cups/$(LIBCUPSSTATIC)
-       echo Linking $@...
-       $(CC) $(LDFLAGS) -o $@ ippinfra.o  ../cups/$(LIBCUPSSTATIC) \
-               $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
-
-
-#
-# ippinfra-shared
-#
-
-ippinfra-shared:       ippinfra.o ../cups/$(LIBCUPS)
-       echo Linking $@...
-       $(CC) $(LDFLAGS) -o $@ ippinfra.o $(LIBS)
-
-
-#
-# ippproxy
-#
-
-ippproxy:      ippproxy.o ../cups/$(LIBCUPSSTATIC)
-       echo Linking $@...
-       $(CC) $(LDFLAGS) -o $@ ippproxy.o  ../cups/$(LIBCUPSSTATIC) \
-               $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ)
-
-
-#
-# ippproxy-shared
-#
-
-ippproxy-shared:       ippproxy.o ../cups/$(LIBCUPS)
-       echo Linking $@...
-       $(CC) $(LDFLAGS) -o $@ ippproxy.o $(LIBS)
-
-
-#
 # ippserver
 #
 
@@ -263,23 +220,7 @@ ipptool-static:    ipptool.o ../cups/$(LIBCUPSSTATIC)
 
 
 #
-# xmltotest
-#
-
-xmltotest: xmltotest.o ../cups/$(LIBUPSSTATIC)
-       echo Linking $@...
-       $(CC) $(LDFLAGS) -o $@ xmltotest.o  ../cups/$(LIBCUPSSTATIC) \
-               $(LIBGSSAPI) $(SSLLIBS) $(DNSSDLIBS) $(COMMONLIBS) $(LIBZ) \
-               $(LIBMXML)
-
-
-#
 # Dependencies...
 #
 
 include Dependencies
-
-
-#
-# End of "$Id: Makefile 12414 2015-01-21 00:02:04Z msweet $".
-#
index 1c74769..be621b2 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: cancel-current-job.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   Cancel the currently printing job.
 #
@@ -61,5 +61,5 @@
 
 
 #
-# End of "$Id: cancel-current-job.test 11398 2013-11-06 20:11:11Z msweet $".
+# End of "$Id$".
 #
index 46cbfd7..5dd98ce 100644 (file)
Binary files a/test/color.jpg and b/test/color.jpg differ
index eefb1e6..2482af8 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: create-printer-subscription.test 11896 2014-05-27 15:00:06Z msweet $"
+# "$Id$"
 #
 # Create a printer subscription.
 #
@@ -71,5 +71,5 @@
 
 
 #
-# End of "$Id: create-printer-subscription.test 11896 2014-05-27 15:00:06Z msweet $"
+# End of "$Id$"
 #
diff --git a/test/cups-create-local-printer.test b/test/cups-create-local-printer.test
new file mode 100644 (file)
index 0000000..bdf4fc5
--- /dev/null
@@ -0,0 +1,32 @@
+# Create a local (temporary) print queue
+#
+# Usage:
+#
+#    ipptool -tv -d name=... -d device=ipp://... ipp://localhost:port/ cups-create-local-printer.test
+{
+       # The name of the test...
+       NAME "Create local print queue"
+
+       # The operation to use
+       OPERATION CUPS-Create-Local-Printer
+
+       # Attributes, starting in the operation group...
+       GROUP operation-attributes-tag
+       ATTR charset attributes-charset utf-8
+       ATTR language attributes-natural-language en
+       ATTR uri printer-uri $uri
+       ATTR name requesting-user-name $user
+
+       GROUP printer-attributes-tag
+       ATTR name printer-name $name
+       ATTR uri device-uri $device
+
+       # What statuses are OK?
+       STATUS successful-ok
+
+       # What attributes do we expect?
+       EXPECT printer-is-accepting-jobs OF-TYPE boolean
+       EXPECT printer-state OF-TYPE enum
+       EXPECT printer-state-reasons OF-TYPE keyword
+       EXPECT printer-uri-supported OF-TYPE uri
+}
diff --git a/test/everywhere/bonjour-tests.sh b/test/everywhere/bonjour-tests.sh
deleted file mode 100755 (executable)
index 1a24852..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#!/bin/sh
diff --git a/test/everywhere/document-format-tests.sh b/test/everywhere/document-format-tests.sh
deleted file mode 100755 (executable)
index 1a24852..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#!/bin/sh
diff --git a/test/everywhere/document-format-tests.test b/test/everywhere/document-format-tests.test
deleted file mode 100644 (file)
index 5bcf6c0..0000000
+++ /dev/null
@@ -1,9689 +0,0 @@
-#
-# "$Id: ipp-everywhere.test 11398 2013-11-06 20:11:11Z msweet $"
-#
-#   IPP Everywhere test suite.
-#
-#   Copyright 2007-2013 by Apple Inc.
-#   Copyright 2001-2006 by Easy Software Products. All rights reserved.
-#
-#   These coded instructions, statements, and computer programs are the
-#   property of Apple Inc. and are protected by Federal copyright
-#   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-#   which should have been included with this file.  If this file is
-#   file is missing or damaged, see the license at "http://www.cups.org/".
-#
-# Usage:
-#
-#   ./ipptool -V 2.0 -tf filename.ext printer-uri ipp-everywhere.test
-#
-
-# Do all of the IPP/1.1 and IPP/2.0 tests
-INCLUDE "ipp-2.0.test"
-
-
-# Test required printer description attribute support.
-#
-# Required by: PWG 5100.14
-{
-       NAME "PWG 5100.14 section 5.1/5.2 - Required Operations and Attributes"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format application/octet-stream
-       ATTR keyword requested-attributes all,media-col-database
-
-       STATUS successful-ok
-
-       # Operations
-       EXPECT operations-supported WITH-VALUE 0x0002 # Print-Job
-       EXPECT operations-supported WITH-VALUE 0x0004 # Validate-Job
-       EXPECT operations-supported WITH-VALUE 0x0005 # Create-Job
-       EXPECT operations-supported WITH-VALUE 0x0006 # Send-Document
-       EXPECT operations-supported WITH-VALUE 0x0008 # Cancel-Job
-       EXPECT operations-supported WITH-VALUE 0x0009 # Get-Job-Attributes
-       EXPECT operations-supported WITH-VALUE 0x000a # Get-Jobs
-       EXPECT operations-supported WITH-VALUE 0x000b # Get-Printer-Attributes
-       EXPECT operations-supported WITH-VALUE 0x0039 # Cancel-My-Jobs
-       EXPECT operations-supported WITH-VALUE 0x003b # Close-Job
-       EXPECT operations-supported WITH-VALUE 0x003c # Identify-Printer
-
-       # Printer description attributes
-       EXPECT compression-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "deflate" DEFINE-MATCH HAVE_DEFLATE
-       EXPECT compression-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "gzip" DEFINE-MATCH HAVE_GZIP
-
-       EXPECT document-format-supported OF-TYPE mimeMediaType IN-GROUP printer-attributes-tag WITH-VALUE "image/jpeg"
-       EXPECT document-format-supported OF-TYPE mimeMediaType IN-GROUP printer-attributes-tag WITH-VALUE "image/pwg-raster"
-       EXPECT document-format-supported OF-TYPE mimeMediaType IN-GROUP printer-attributes-tag WITH-VALUE "/^(application/pdf|application/openxps)$/" DEFINE-MATCH PDF_OR_OPENXPS
-
-       EXPECT feed-orientation-supported OF-TYPE keyword IN-GROUP printer-attributes-tag DEFINE-MATCH FEED_ORIENTATION_SUPPORTED
-       EXPECT feed-orientation-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 IF-DEFINED FEED_ORIENTATION_SUPPORTED
-
-       EXPECT finishings-supported OF-TYPE enum IN-GROUP printer-attributes-tag DEFINE-MATCH FINISHINGS_SUPPORTED
-       EXPECT finishings-default OF-TYPE enum IN-GROUP printer-attributes-tag IF-DEFINED FINISHINGS_SUPPORTED
-
-       EXPECT identify-actions-default OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(display|flash|sound|speak)$/"
-       EXPECT identify-actions-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(display|flash|sound|speak)$/"
-
-       EXPECT ipp-features-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "ipp-everywhere"
-
-       EXPECT job-account-id-supported OF-TYPE boolean IN-GROUP printer-attributes-tag WITH-VALUE true COUNT 1 DEFINE-MATCH JOB_ACCOUNT_ID_SUPPORTED
-       EXPECT job-account-id-default OF-TYPE name|no-value IN-GROUP printer-attributes-tag COUNT 1 IF-DEFINED JOB_ACCOUNT_ID_SUPPORTED
-
-       EXPECT job-accounting-user-id-supported OF-TYPE boolean IN-GROUP printer-attributes-tag WITH-VALUE true COUNT 1 DEFINE-MATCH JOB_ACCOUNTING_USER_ID_SUPPORTED
-       EXPECT job-accounting-user-id-default OF-TYPE name|no-value IN-GROUP printer-attributes-tag COUNT 1 IF-DEFINED JOB_ACCOUNTING_USER_ID_SUPPORTED
-
-       EXPECT job-constraints-supported OF-TYPE collection IN-GROUP printer-attributes-tag DEFINE-MATCH JOB_CONSTRAINTS_SUPPORTED
-       EXPECT job-resolvers-supported OF-TYPE collection IN-GROUP printer-attributes-tag IF-DEFINED JOB_CONSTRAINTS_SUPPORTED
-
-       EXPECT job-creation-attributes-supported OF-TYPE keyword IN-GROUP printer-attributes-tag
-
-       EXPECT job-ids-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE true
-
-       EXPECT preferred-attributes-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT media-bottom-margin-supported OF-TYPE integer IN-GROUP printer-attributes-tag WITH-ALL-VALUES >-1
-       EXPECT media-left-margin-supported OF-TYPE integer IN-GROUP printer-attributes-tag WITH-ALL-VALUES >-1
-       EXPECT media-right-margin-supported OF-TYPE integer IN-GROUP printer-attributes-tag WITH-ALL-VALUES >-1
-       EXPECT media-top-margin-supported OF-TYPE integer IN-GROUP printer-attributes-tag WITH-ALL-VALUES >-1
-
-       EXPECT media-col-database OF-TYPE collection IN-GROUP printer-attributes-tag
-
-       EXPECT media-col-ready OF-TYPE collection IN-GROUP printer-attributes-tag
-
-       EXPECT media-ready OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-
-       EXPECT media-size-supported OF-TYPE collection IN-GROUP printer-attributes-tag
-
-       EXPECT media-source-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-
-       EXPECT media-type-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-
-       EXPECT multiple-document-jobs-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT multiple-operation-time-out OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0
-
-       EXPECT multiple-operation-time-out-action OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(abort-job|hold-job|process-job)$/"
-
-       EXPECT overrides-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "document-number"
-       EXPECT overrides-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "pages"
-
-       EXPECT page-ranges-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE true IF-DEFINED PDF_OR_OPENXPS
-
-       EXPECT print-color-mode-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(auto|auto-monochrome|bi-level|color|highlight|monochrome|process-bi-level|process-monochrome)$/"
-       EXPECT print-color-mode-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-ALL-VALUES "/^(auto|auto-monochrome|bi-level|color|highlight|monochrome|process-bi-level|process-monochrome)$/"
-
-       EXPECT print-content-optimize-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(auto|graphic|photo|text|text-and-graphic)$/"
-       EXPECT print-content-optimize-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-ALL-VALUES "/^(auto|graphic|photo|text|text-and-graphic)$/"
-
-       EXPECT print-rendering-intent-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(auto|absolute|perceptual|relative|relative-bpc|saturation)$/"
-       EXPECT print-rendering-intent-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-ALL-VALUES "/^(auto|absolute|perceptual|relative|relative-bpc|saturation)$/"
-
-       EXPECT ?printer-alert OF-TYPE octetString IN-GROUP printer-attributes-tag
-       EXPECT ?printer-alert-description OF-TYPE text IN-GROUP printer-attributes-tag SAME-COUNT-AS printer-alert
-
-       EXPECT printer-charge-info DEFINE-MATCH PRINTER_CHARGE_INFO
-       EXPECT ?printer-charge-info OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-charge-info-uri IF-DEFINED PRINTER_CHARGE_INFO
-       EXPECT ?printer-charge-info-uri OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT printer-config-change-date-time OF-TYPE dateTime IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-config-change-time OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >-1
-
-       EXPECT printer-device-id OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^([-A-Za-z ]+:[^;]*;)+$/"
-
-       EXPECT printer-geo-location OF-TYPE uri|unknown IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^geo:/"
-
-       EXPECT printer-get-attributes-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "document-format"
-
-       EXPECT ?printer-icc-profiles-supported OF-TYPE collection IN-GROUP printer-attributes-tag
-
-       EXPECT printer-icons OF-TYPE uri IN-GROUP printer-attributes-tag
-
-       EXPECT ?printer-mandatory-job-attributes OF-TYPE keyword IN-GROUP printer-attributes-tag
-
-       EXPECT printer-organization OF-TYPE text IN-GROUP printer-attributes-tag
-       EXPECT printer-organizational-unit OF-TYPE text IN-GROUP printer-attributes-tag
-
-       EXPECT printer-state-change-date-time OF-TYPE dateTime IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-state-change-time OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >-1
-
-       EXPECT printer-supply OF-TYPE octetString IN-GROUP printer-attributes-tag SAME-COUNT-AS printer-supply-description
-       EXPECT printer-supply-description OF-TYPE text IN-GROUP printer-attributes-tag SAME-COUNT-AS printer-supply
-
-       EXPECT printer-supply-info-uri OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT printer-uuid OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^urn:uuid:[0-9A-Fa-f]{8,8}-[0-9A-Fa-f]{4,4}-[0-9A-Fa-f]{4,4}-[0-9A-Fa-f]{4,4}-[0-9A-Fa-f]{12,12}/"
-
-       EXPECT pwg-raster-document-resolution-supported OF-TYPE resolution IN-GROUP printer-attributes-tag
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 150dpi DEFINE-MATCH HAVE_150DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 180dpi DEFINE-MATCH HAVE_180DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 300dpi DEFINE-MATCH HAVE_300DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 3600dpi DEFINE-MATCH HAVE_360DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 600dpi DEFINE-MATCH HAVE_600DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 720dpi DEFINE-MATCH HAVE_720DPI
-
-       EXPECT pwg-raster-document-sheet-back OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT pwg-raster-document-type-supported OF-TYPE keyword IN-GROUP printer-attributes-tag
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "black_1" DEFINE-MATCH HAVE_BLACK_1
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "cmyk_8" DEFINE-MATCH HAVE_CMYK_8
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "sgray_8" DEFINE-MATCH HAVE_SGRAY_8
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "srgb_8" DEFINE-MATCH HAVE_SRGB_8
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "srgb_16" DEFINE-MATCH HAVE_SRGB_16
-
-       EXPECT which-jobs-supported OF-TYPE keyword IN-GROUP printer-attributes-tag
-}
-
-
-# Test printing all sample documents
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-
-#
-# End of "$Id: ipp-everywhere.test 11398 2013-11-06 20:11:11Z msweet $".
-#
diff --git a/test/everywhere/ipp-tests.sh b/test/everywhere/ipp-tests.sh
deleted file mode 100755 (executable)
index 1a24852..0000000
+++ /dev/null
@@ -1 +0,0 @@
-#!/bin/sh
diff --git a/test/everywhere/ipp-tests.test b/test/everywhere/ipp-tests.test
deleted file mode 100644 (file)
index 0fb6486..0000000
+++ /dev/null
@@ -1,12086 +0,0 @@
-#
-# "$Id$"
-#
-# IPP Everywhere Printer Self-Certification - IPP Tests
-#
-# Copyright 2007-2014 by Apple Inc.
-# Copyright 2001-2006 by Easy Software Products. All rights reserved.
-#
-# These coded instructions, statements, and computer programs are the
-# property of Apple Inc. and are protected by Federal copyright
-# law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-# which should have been included with this file.  If this file is
-# file is missing or damaged, see the license at "http://www.cups.org/".
-#
-
-# All tests are done using IPP/2.0
-VERSION 2.0
-
-# Regular expression for PWG media size names (eek!)
-DEFINE MEDIA_REGEX "/^(choice(_((custom|na|asme|roc|oe|roll)_[a-z0-9][-a-z0-9]*_([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])x([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])in|(custom|iso|jis|jpn|prc|om|roll)_[a-z0-9][-a-z0-9]*_([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])x([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])mm)){2,}|(custom|na|asme|roc|oe|roll)_[a-z0-9][-a-z0-9]*_([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])x([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])in|(custom|iso|jis|jpn|prc|om|roll)_[a-z0-9][-a-z0-9]*_([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])x([1-9][0-9]*(\.[0-9]*[1-9])?|0\.[0-9]*[1-9])mm)$$/"
-
-# Regular expressions for URI schemes:
-#
-#   HTTP_URI_SCHEME - Matches strings beginning with http:// or https://
-#   IPP_URI_SCHEME  - Matches strings beginning with ipp:// or ipps://
-
-DEFINE HTTP_URI_SCHEME "/^https?://.+$$/"
-DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/"
-
-
-# Test that a request-id value of 0 is not accepted.
-#
-# Required by: RFC 2911 section 3.1.1
-{
-       NAME "I1. RFC 2911 section 3.1.1: Bad request-id value 0"
-       REQUEST-ID 0
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-
-       STATUS client-error-bad-request
-       EXPECT !printer-uri-supported
-}
-
-
-# Test that the first two attributes must be attributes-charset and
-# attributes-natural-language.
-#
-# Required by: RFC 2911 section 3.1.4
-{
-       NAME "I2. RFC 2911 section 3.1.4: No Operation Attributes"
-       REQUEST-ID random
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-
-       STATUS client-error-bad-request
-       EXPECT !printer-uri-supported
-}
-{
-       NAME "I3. RFC 2911 section 3.1.4: attributes-charset"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR uri printer-uri $uri
-
-       STATUS client-error-bad-request
-       EXPECT !printer-uri-supported
-}
-{
-       NAME "I4. RFC 2911 section 3.1.4: attributes-natural-language"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-
-       STATUS client-error-bad-request
-       EXPECT !printer-uri-supported
-}
-{
-       NAME "I5. RFC 2911 section 3.1.4: attributes-natural-language + attributes-charset"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR charset attributes-charset utf-8
-       ATTR uri printer-uri $uri
-
-       STATUS client-error-bad-request
-       EXPECT !printer-uri-supported
-}
-{
-       NAME "I6. RFC 2911 section 3.1.4: attributes-charset + attributes-natural-language"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-
-       STATUS successful-ok
-       EXPECT printer-uri-supported OF-TYPE uri WITH-ALL-VALUES "$IPP_URI_SCHEME"
-}
-
-
-# Test that bad IPP versions are not supported.
-#
-# Required by: RFC 2911 section 3.1.8
-{
-       # The name of the test...
-       NAME "I7. RFC 2911 section 3.1.8: Unsupported IPP version 0.0"
-       VERSION 0.0
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-
-       STATUS server-error-version-not-supported
-       EXPECT !printer-uri-supported
-}
-
-
-# Test that printer operations require the printer-uri operation attribute.
-#
-# Required by: RFC 2911 section 3.2
-{
-       NAME "I8. RFC 2911 section 3.2: No printer-uri operation attribute"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-
-       STATUS client-error-bad-request
-       EXPECT !printer-uri-supported
-}
-
-
-# Test Print-Job operation
-#
-# Required by: RFC 2911 section 3.2.1
-{
-       NAME "I9. RFC 2911 section 3.2.1: Print-Job Operation"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format $filetype
-       FILE $filename
-
-       STATUS successful-ok
-       STATUS client-error-document-format-not-supported
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state WITH-VALUE 7,8,9 DEFINE-MATCH PRINT_JOB_COMPLETED
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-# Test Validate-Job operation
-#
-# Required by: RFC 2911 section 3.2.3
-{
-       NAME "I10. RFC 2911 section 3.2.3: Validate-Job Operation"
-       OPERATION Validate-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format $filetype
-
-       STATUS successful-ok
-}
-
-
-# Test Get-Printer-Attributes operation
-#
-# Required by: RFC 2911 section 3.2.5
-{
-       NAME "I11. RFC 2911 section 3.2.5: Get-Printer-Attributes Operation (default)"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format $filetype
-
-       STATUS successful-ok
-
-       # Display some useful information to identify the test
-       DISPLAY color-supported
-       DISPLAY compression-supported
-       DISPLAY document-format-supported
-       DISPLAY finishings-supported
-       DISPLAY ipp-versions-supported
-       DISPLAY job-sheets-supported
-       DISPLAY media-supported
-       DISPLAY number-up-supported
-       DISPLAY operations-supported
-       DISPLAY pages-per-minute
-       DISPLAY pages-per-minute-color
-       DISPLAY print-quality-supported
-       DISPLAY printer-uri-supported
-       DISPLAY reference-uri-schemes-supported
-       DISPLAY sizes-supported
-       DISPLAY uri-authentication-supported
-       DISPLAY uri-security-supported
-
-       # Operations
-       EXPECT operations-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 0x0002 # Print-Job
-       EXPECT operations-supported WITH-VALUE 0x0004 # Validate-Job
-       EXPECT operations-supported WITH-VALUE 0x0008 # Cancel-Job
-       EXPECT operations-supported WITH-VALUE 0x0009 # Get-Job-Attributes
-       EXPECT operations-supported WITH-VALUE 0x000a # Get-Jobs
-       EXPECT operations-supported WITH-VALUE 0x000b # Get-Printer-Attributes
-
-       # Job template attributes
-       EXPECT ?copies-default OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?copies-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag
-       EXPECT ?finishings-default OF-TYPE enum IN-GROUP printer-attributes-tag
-       EXPECT ?finishings-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3
-       EXPECT ?job-hold-until-default OF-TYPE keyword|name IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?job-hold-until-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag WITH-VALUE no-hold
-       EXPECT job-hold-until-default IF-DEFINED OPTIONAL_HOLD_JOB
-       EXPECT job-hold-until-supported IF-DEFINED OPTIONAL_HOLD_JOB
-       EXPECT ?job-priority-default OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0,<101
-       EXPECT ?job-priority-supported OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0,<101
-       EXPECT ?job-sheets-default OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-       EXPECT ?job-sheets-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag WITH-VALUE none
-       EXPECT ?media-default OF-TYPE no-value|keyword|name IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?media-ready OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-       EXPECT ?media-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-       EXPECT ?multiple-document-handling-default OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(single-document|separate-documents-uncollated-copies|separate-documents-collated-copies|single-document-new-sheet)$$/"
-       EXPECT ?multiple-document-handling-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(single-document|separate-documents-uncollated-copies|separate-documents-collated-copies|single-document-new-sheet)$$/"
-       EXPECT ?number-up-default OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?number-up-supported OF-TYPE integer|rangeOfInteger IN-GROUP printer-attributes-tag WITH-VALUE >0
-       EXPECT ?number-up-supported WITH-VALUE 1
-       EXPECT ?orientation-requested-default OF-TYPE no-value|enum IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 3,4,5,6
-       EXPECT ?orientation-requested-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3,4,5,6
-       EXPECT ?pages-ranges-supported OF-TYPE boolean IN-GROUP printer-attributes-tag
-       EXPECT ?print-quality-default OF-TYPE enum IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 3,4,5
-       EXPECT ?print-quality-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3,4,5
-       EXPECT ?printer-resolution-default OF-TYPE resolution IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?printer-resolution-supported OF-TYPE resolution IN-GROUP printer-attributes-tag
-       EXPECT ?sides-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/"
-       EXPECT ?sides-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/"
-
-       # Job template attributes for specific tests...
-       EXPECT copies-supported WITH-VALUE >1 DEFINE-MATCH OPTIONAL_COPIES
-       EXPECT document-format-supported WITH-VALUE "application/pdf" DEFINE-MATCH OPTIONAL_PDF
-       EXPECT document-format-supported WITH-VALUE "application/postscript" DEFINE-MATCH OPTIONAL_POSTSCRIPT
-       EXPECT document-format-supported WITH-VALUE "image/jpeg" DEFINE-MATCH OPTIONAL_JPEG
-       EXPECT job-sheets-supported WITH-VALUE "standard" DEFINE-MATCH OPTIONAL_STANDARD_SHEET
-       EXPECT media-supported WITH-VALUE "a4" DEFINE-VALUE OPTIONAL_A4_MEDIA
-       EXPECT media-supported WITH-VALUE "iso-a4" DEFINE-VALUE OPTIONAL_A4_MEDIA
-       EXPECT media-supported WITH-VALUE "iso_a4_210x297mm" DEFINE-VALUE OPTIONAL_A4_MEDIA
-       EXPECT media-supported WITH-VALUE "letter" DEFINE-VALUE OPTIONAL_LETTER_MEDIA
-       EXPECT media-supported WITH-VALUE "na-letter" DEFINE-VALUE OPTIONAL_LETTER_MEDIA
-       EXPECT media-supported WITH-VALUE "na_letter_8.5x11in" DEFINE-VALUE OPTIONAL_LETTER_MEDIA
-       EXPECT media-supported WITH-VALUE "index-4x6" DEFINE-VALUE OPTIONAL_4X6_MEDIA
-       EXPECT media-supported WITH-VALUE "na_index-4x6_4x6in" DEFINE-VALUE OPTIONAL_4X6_MEDIA
-       EXPECT number-up-supported WITH-VALUE 2 DEFINE-MATCH OPTIONAL_2UP
-       EXPECT print-quality WITH-VALUE 3 DEFINE-MATCH OPTIONAL_DRAFT_QUALITY
-       EXPECT print-quality WITH-VALUE 4 DEFINE-MATCH OPTIONAL_NORMAL_QUALITY
-       EXPECT print-quality WITH-VALUE 5 DEFINE-MATCH OPTIONAL_BEST_QUALITY
-       EXPECT sides-supported WITH-VALUE "two-sided-long-edge" DEFINE-MATCH OPTIONAL_DUPLEX
-
-       # Printer description attributes
-       EXPECT ?color-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?job-impressions-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?job-k-octets-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?job-media-sheets-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?multiple-document-jobs-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?multiple-operation-time-out OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?pages-per-minute OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?pages-per-minute-color OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?printer-driver-installer OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?printer-info OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
-       EXPECT ?printer-location OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
-       EXPECT ?printer-make-and-model OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
-       EXPECT ?printer-message-from-operator OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
-       EXPECT ?printer-more-info OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME"
-       EXPECT ?printer-more-info-manufacturer OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME"
-       EXPECT ?printer-state-message OF-TYPE text IN-GROUP printer-attributes-tag
-       EXPECT ?reference-uri-schemes-supported OF-TYPE uriScheme IN-GROUP printer-attributes-tag
-       EXPECT reference-uri-schemes-supported WITH-VALUE "ftp" IF-DEFINED OPTIONAL_PRINT_URI
-       EXPECT reference-uri-schemes-supported WITH-VALUE "ftp" IF-DEFINED OPTIONAL_SEND_URI IF-NOT-DEFINED OPTIONAL_PRINT_URI
-       EXPECT charset-configured OF-TYPE charset IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT charset-supported OF-TYPE charset IN-GROUP printer-attributes-tag WITH-VALUE utf-8
-       EXPECT compression-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE none
-       EXPECT document-format-default OF-TYPE mimeMediaType IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT document-format-supported OF-TYPE mimeMediaType IN-GROUP printer-attributes-tag
-       EXPECT generated-natural-language-supported OF-TYPE naturalLanguage IN-GROUP printer-attributes-tag
-       EXPECT ipp-versions-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE 1.1
-       EXPECT natural-language-configured OF-TYPE naturalLanguage IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT pdl-override-supported OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-is-accepting-jobs OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-name OF-TYPE name IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
-       EXPECT printer-state OF-TYPE enum IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 3,4,5
-       EXPECT printer-state-reasons OF-TYPE keyword IN-GROUP printer-attributes-tag
-       EXPECT printer-up-time OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT printer-uri-supported OF-TYPE uri IN-GROUP printer-attributes-tag SAME-COUNT-AS uri-security-supported WITH-ALL-VALUES "$IPP_URI_SCHEME"
-       EXPECT queued-job-count OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT uri-authentication-supported OF-TYPE keyword IN-GROUP printer-attributes-tag
-       EXPECT uri-security-supported OF-TYPE keyword IN-GROUP printer-attributes-tag SAME-COUNT-AS uri-authentication-supported
-}
-
-
-# Test Get-Printer-Attributes operation with requested-attributes
-#
-# Required by: RFC 2911 section 3.2.5
-{
-       NAME "I12. RFC 2911 section 3.2.5: Get-Printer-Attributes Operation (requested-attributes)"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format $filetype
-       ATTR keyword requested-attributes printer-uri-supported
-
-       STATUS successful-ok
-
-       EXPECT printer-uri-supported OF-TYPE uri IN-GROUP printer-attributes-tag WITH-ALL-VALUES "$IPP_URI_SCHEME"
-       EXPECT !printer-name
-}
-
-
-# Test Get-Jobs operation
-#
-# Required by: RFC 2911 section 3.2.6
-{
-       NAME "I13. RFC 2911 section 3.2.6: Get-Jobs Operation (default)"
-       OPERATION Get-Jobs
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-
-       STATUS successful-ok
-       EXPECT ?job-id OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?job-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT !job-printer-uri
-       EXPECT !job-more-info
-       EXPECT !job-name
-       EXPECT !job-originating-user-name
-       EXPECT !job-state
-       EXPECT !job-state-reasons
-       EXPECT !job-state-message
-       EXPECT !job-detailed-status-messages
-       EXPECT !number-of-documents
-       EXPECT !output-device-assigned
-       EXPECT !time-at-creation
-       EXPECT !time-at-processing
-       EXPECT !time-at-completed
-       EXPECT !job-printer-up-time
-       EXPECT !date-time-at-creation
-       EXPECT !date-time-at-processing
-       EXPECT !date-time-at-completed
-       EXPECT !number-of-intervening-jobs
-       EXPECT !job-message-from-operator
-       EXPECT !job-k-octets
-       EXPECT !job-impressions
-       EXPECT !job-media-sheets
-       EXPECT !job-k-octets-processed
-       EXPECT !job-impressions-completed
-       EXPECT !job-media-sheets-completed
-
-       EXPECT !copies
-       EXPECT !finishings
-       EXPECT !job-hold-until
-       EXPECT !job-priority
-       EXPECT !job-sheets
-       EXPECT !media
-       EXPECT !multiple-document-handling
-       EXPECT !number-up
-       EXPECT !orientation-requested
-       EXPECT !pages-ranges
-       EXPECT !print-quality
-       EXPECT !printer-resolution
-       EXPECT !sides
-}
-
-
-# Test Get-Jobs operation
-#
-# Required by: RFC 2911 section 3.2.6
-{
-       SKIP-IF-DEFINED PRINT_JOB_COMPLETED
-
-       NAME "I14. RFC 2911 section 3.2.6: Get-Jobs Operation (requested-attributes)"
-       OPERATION Get-Jobs
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR keyword requested-attributes all
-
-       STATUS successful-ok
-       EXPECT job-id OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT job-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-printer-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT ?job-more-info OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME"
-       EXPECT job-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT job-originating-user-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT job-state OF-TYPE unknown|enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-detailed-status-messages OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-documents OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?output-device-assigned OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT time-at-processing OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT time-at-completed OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT job-printer-up-time OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-creation OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-processing OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-completed OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-message-from-operator OF-TYPE text IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-k-octets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-impressions OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-media-sheets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-k-octets-processed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-impressions-completed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-media-sheets-completed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-
-       EXPECT ?copies OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?finishings OF-TYPE enum IN-GROUP job-attributes-tag
-       EXPECT ?job-hold-until OF-TYPE keyword|name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-priority OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0,<101
-       EXPECT ?job-sheets OF-TYPE keyword|name IN-GROUP job-attributes-tag
-       EXPECT ?media OF-TYPE keyword|name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?multiple-document-handling OF-TYPE keyword IN-GROUP job-attributes-tag WITH-VALUE "/^(single-document|separate-documents-uncollated-copies|separate-documents-collated-copies|single-document-new-sheet)$$/"
-       EXPECT ?number-up OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?orientation-requested OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE 3,4,5,6
-       EXPECT ?pages-ranges OF-TYPE rangeOfInteger IN-GROUP job-attributes-tag
-       EXPECT ?print-quality OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE 3,4,5
-       EXPECT ?printer-resolution OF-TYPE resolution IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?sides OF-TYPE keyword IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/"
-}
-
-
-# Test Get-Jobs operation
-#
-# Required by: RFC 2911 section 3.2.6
-{
-       SKIP-IF-DEFINED PRINT_JOB_COMPLETED
-
-       NAME "RFC 2911 section 3.2.6: Get-Jobs Operation (my-jobs)"
-       OPERATION Get-Jobs
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR boolean my-jobs true
-
-       STATUS successful-ok
-       EXPECT job-id OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT job-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT !job-printer-uri
-       EXPECT !job-more-info
-       EXPECT !job-name
-       EXPECT !job-originating-user-name
-       EXPECT !job-state
-       EXPECT !job-state-reasons
-       EXPECT !job-state-message
-       EXPECT !job-detailed-status-messages
-       EXPECT !number-of-documents
-       EXPECT !output-device-assigned
-       EXPECT !time-at-creation
-       EXPECT !time-at-processing
-       EXPECT !time-at-completed
-       EXPECT !job-printer-up-time
-       EXPECT !date-time-at-creation
-       EXPECT !date-time-at-processing
-       EXPECT !date-time-at-completed
-       EXPECT !number-of-intervening-jobs
-       EXPECT !job-message-from-operator
-       EXPECT !job-k-octets
-       EXPECT !job-impressions
-       EXPECT !job-media-sheets
-       EXPECT !job-k-octets-processed
-       EXPECT !job-impressions-completed
-       EXPECT !job-media-sheets-completed
-
-       EXPECT !copies
-       EXPECT !finishings
-       EXPECT !job-hold-until
-       EXPECT !job-priority
-       EXPECT !job-sheets
-       EXPECT !media
-       EXPECT !multiple-document-handling
-       EXPECT !number-up
-       EXPECT !orientation-requested
-       EXPECT !pages-ranges
-       EXPECT !print-quality
-       EXPECT !printer-resolution
-       EXPECT !sides
-}
-
-
-# Test Get-Jobs operation
-#
-# Required by: RFC 2911 section 3.2.6
-{
-       SKIP-IF-DEFINED PRINT_JOB_COMPLETED
-
-       # Skip this test when doing authenticated printing since we'll always
-       # use the authenticated username over the requesting-user-name value.
-       SKIP-IF-DEFINED uriuser
-
-       NAME "RFC 2911 section 3.2.6: Get-Jobs Operation (my-jobs different user)"
-       OPERATION Get-Jobs
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name not-$user
-       ATTR boolean my-jobs true
-
-       STATUS successful-ok
-       EXPECT !job-id
-       EXPECT !job-uri
-       EXPECT !job-printer-uri
-       EXPECT !job-more-info
-       EXPECT !job-name
-       EXPECT !job-originating-user-name
-       EXPECT !job-state
-       EXPECT !job-state-reasons
-       EXPECT !job-state-message
-       EXPECT !job-detailed-status-messages
-       EXPECT !number-of-documents
-       EXPECT !output-device-assigned
-       EXPECT !time-at-creation
-       EXPECT !time-at-processing
-       EXPECT !time-at-completed
-       EXPECT !job-printer-up-time
-       EXPECT !date-time-at-creation
-       EXPECT !date-time-at-processing
-       EXPECT !date-time-at-completed
-       EXPECT !number-of-intervening-jobs
-       EXPECT !job-message-from-operator
-       EXPECT !job-k-octets
-       EXPECT !job-impressions
-       EXPECT !job-media-sheets
-       EXPECT !job-k-octets-processed
-       EXPECT !job-impressions-completed
-       EXPECT !job-media-sheets-completed
-
-       EXPECT !copies
-       EXPECT !finishings
-       EXPECT !job-hold-until
-       EXPECT !job-priority
-       EXPECT !job-sheets
-       EXPECT !media
-       EXPECT !multiple-document-handling
-       EXPECT !number-up
-       EXPECT !orientation-requested
-       EXPECT !pages-ranges
-       EXPECT !print-quality
-       EXPECT !printer-resolution
-       EXPECT !sides
-}
-
-
-# Test Get-Jobs operation
-#
-# Required by: RFC 2911 section 3.2.6
-{
-       SKIP-IF-DEFINED PRINT_JOB_COMPLETED
-
-       NAME "RFC 2911 section 3.2.6: Get-Jobs Operation (which-jobs=not-completed)"
-       OPERATION Get-Jobs
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR keyword which-jobs not-completed
-
-       STATUS successful-ok
-       EXPECT job-id OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT job-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT !job-printer-uri
-       EXPECT !job-more-info
-       EXPECT !job-name
-       EXPECT !job-originating-user-name
-       EXPECT !job-state
-       EXPECT !job-state-reasons
-       EXPECT !job-state-message
-       EXPECT !job-detailed-status-messages
-       EXPECT !number-of-documents
-       EXPECT !output-device-assigned
-       EXPECT !time-at-creation
-       EXPECT !time-at-processing
-       EXPECT !time-at-completed
-       EXPECT !job-printer-up-time
-       EXPECT !date-time-at-creation
-       EXPECT !date-time-at-processing
-       EXPECT !date-time-at-completed
-       EXPECT !number-of-intervening-jobs
-       EXPECT !job-message-from-operator
-       EXPECT !job-k-octets
-       EXPECT !job-impressions
-       EXPECT !job-media-sheets
-       EXPECT !job-k-octets-processed
-       EXPECT !job-impressions-completed
-       EXPECT !job-media-sheets-completed
-
-       EXPECT !copies
-       EXPECT !finishings
-       EXPECT !job-hold-until
-       EXPECT !job-priority
-       EXPECT !job-sheets
-       EXPECT !media
-       EXPECT !multiple-document-handling
-       EXPECT !number-up
-       EXPECT !orientation-requested
-       EXPECT !pages-ranges
-       EXPECT !print-quality
-       EXPECT !printer-resolution
-       EXPECT !sides
-}
-
-
-# Wait for job to complete...
-{
-       SKIP-IF-NOT-DEFINED job-id
-
-       NAME "Get-Job-Attributes Until Job Complete"
-       OPERATION Get-Job-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-
-       STATUS successful-ok
-       EXPECT job-state OF-TYPE unknown|enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >6 REPEAT-NO-MATCH REPEAT-LIMIT 30
-       DISPLAY job-state
-}
-
-
-# Test Get-Jobs operation
-#
-# Required by: RFC 2911 section 3.2.6
-{
-       NAME "RFC 2911 section 3.2.6: Get-Jobs Operation (which-jobs=completed)"
-       OPERATION Get-Jobs
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR keyword which-jobs completed
-
-       STATUS successful-ok
-       EXPECT job-id OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT job-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT !job-printer-uri
-       EXPECT !job-more-info
-       EXPECT !job-name
-       EXPECT !job-originating-user-name
-       EXPECT !job-state
-       EXPECT !job-state-reasons
-       EXPECT !job-state-message
-       EXPECT !job-detailed-status-messages
-       EXPECT !number-of-documents
-       EXPECT !output-device-assigned
-       EXPECT !time-at-creation
-       EXPECT !time-at-processing
-       EXPECT !time-at-completed
-       EXPECT !job-printer-up-time
-       EXPECT !date-time-at-creation
-       EXPECT !date-time-at-processing
-       EXPECT !date-time-at-completed
-       EXPECT !number-of-intervening-jobs
-       EXPECT !job-message-from-operator
-       EXPECT !job-k-octets
-       EXPECT !job-impressions
-       EXPECT !job-media-sheets
-       EXPECT !job-k-octets-processed
-       EXPECT !job-impressions-completed
-       EXPECT !job-media-sheets-completed
-
-       EXPECT !copies
-       EXPECT !finishings
-       EXPECT !job-hold-until
-       EXPECT !job-priority
-       EXPECT !job-sheets
-       EXPECT !media
-       EXPECT !multiple-document-handling
-       EXPECT !number-up
-       EXPECT !orientation-requested
-       EXPECT !pages-ranges
-       EXPECT !print-quality
-       EXPECT !printer-resolution
-       EXPECT !sides
-}
-
-
-# Test Get-Jobs operation
-#
-# Required by: RFC 2911 section 3.2.6
-{
-       SKIP-IF-DEFINED PRINT_JOB_COMPLETED
-
-       NAME "RFC 2911 section 3.2.6: Get-Jobs Operation (which-jobs, requested-attributes)"
-       OPERATION Get-Jobs
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR keyword requested-attributes all
-       ATTR keyword which-jobs completed
-
-       STATUS successful-ok
-       EXPECT job-id OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT job-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-printer-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT ?job-more-info OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME"
-       EXPECT job-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT job-originating-user-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT job-state OF-TYPE unknown|enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-detailed-status-messages OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-documents OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?output-device-assigned OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT time-at-processing OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT time-at-completed OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT job-printer-up-time OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-creation OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-processing OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-completed OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-message-from-operator OF-TYPE text IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-k-octets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-impressions OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-media-sheets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-k-octets-processed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-impressions-completed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-media-sheets-completed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-
-       EXPECT ?copies OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?finishings OF-TYPE enum IN-GROUP job-attributes-tag
-       EXPECT ?job-hold-until OF-TYPE keyword|name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-priority OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0,<101
-       EXPECT ?job-sheets OF-TYPE keyword|name IN-GROUP job-attributes-tag
-       EXPECT ?media OF-TYPE keyword|name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?multiple-document-handling OF-TYPE keyword IN-GROUP job-attributes-tag WITH-VALUE "/^(single-document|separate-documents-uncollated-copies|separate-documents-collated-copies|single-document-new-sheet)$$/"
-       EXPECT ?number-up OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?orientation-requested OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE 3,4,5,6
-       EXPECT ?pages-ranges OF-TYPE rangeOfInteger IN-GROUP job-attributes-tag
-       EXPECT ?print-quality OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE 3,4,5
-       EXPECT ?printer-resolution OF-TYPE resolution IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?sides OF-TYPE keyword IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/"
-}
-
-
-# Test Cancel-Job operation
-#
-# Required by: RFC 2911 section 3.3.3
-{
-       NAME "RFC 2911 section 3.3.3: Cancel-Job Operation (completed job)"
-       OPERATION Cancel-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-
-       STATUS client-error-not-possible
-}
-
-
-# Test Print-Job operation
-#
-# Required by: RFC 2911 section 3.2.1
-{
-       NAME "RFC 2911 section 3.2.1: Print-Job Operation"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format $filetype
-       FILE $filename
-
-       STATUS successful-ok
-       STATUS client-error-document-format-not-supported
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Test Cancel-Job operation
-#
-# Required by: RFC 2911 section 3.3.3
-{
-       NAME "RFC 2911 section 3.3.3: Cancel-Job Operation (pending/processing job)"
-       OPERATION Cancel-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-
-       STATUS successful-ok
-       STATUS client-error-not-possible
-}
-
-
-# Test Get-Job-Attributes operation
-#
-# Required by: RFC 2911 section 3.3.4
-{
-       NAME "RFC 2911 section 3.3.4: Get-Job-Attributes Operation"
-       OPERATION Get-Job-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-
-       STATUS successful-ok
-       EXPECT job-id OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT job-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-printer-uri OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT ?job-more-info OF-TYPE uri IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "$HTTP_URI_SCHEME"
-       EXPECT job-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT job-originating-user-name OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT job-state OF-TYPE unknown|enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >2,<10
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-detailed-status-messages OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-documents OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?output-device-assigned OF-TYPE name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT time-at-creation OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT time-at-processing OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT time-at-completed OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >-1
-       EXPECT job-printer-up-time OF-TYPE no-value|integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-creation OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-processing OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?date-time-at-completed OF-TYPE no-value|dateTime IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-message-from-operator OF-TYPE text IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-k-octets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-impressions OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-media-sheets OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-k-octets-processed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-impressions-completed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-media-sheets-completed OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1
-
-       EXPECT ?copies OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?finishings OF-TYPE enum IN-GROUP job-attributes-tag
-       EXPECT ?job-hold-until OF-TYPE keyword|name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?job-priority OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0,<101
-       EXPECT ?job-sheets OF-TYPE keyword|name IN-GROUP job-attributes-tag
-       EXPECT ?media OF-TYPE keyword|name IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?multiple-document-handling OF-TYPE keyword IN-GROUP job-attributes-tag WITH-VALUE "/^(single-document|separate-documents-uncollated-copies|separate-documents-collated-copies|single-document-new-sheet)$$/"
-       EXPECT ?number-up OF-TYPE integer IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT ?orientation-requested OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE 3,4,5,6
-       EXPECT ?pages-ranges OF-TYPE rangeOfInteger IN-GROUP job-attributes-tag
-       EXPECT ?print-quality OF-TYPE enum IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE 3,4,5
-       EXPECT ?printer-resolution OF-TYPE resolution IN-GROUP job-attributes-tag COUNT 1
-       EXPECT ?sides OF-TYPE keyword IN-GROUP job-attributes-tag COUNT 1 WITH-VALUE "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/"
-}
-
-
-# Test Print-URI operation
-#
-# Defined by: RFC 2911 section 3.2.2
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_PRINT_URI
-       SKIP-IF-NOT-DEFINED document-uri
-
-       NAME "RFC 2911 section 3.2.2: Print-URI Operation"
-       OPERATION Print-URI
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR uri document-uri $document-uri
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Test Print-URI operation with bad document-uri
-#
-# Defined by: RFC 2911 section 3.2.2
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_PRINT_URI
-       SKIP-IF-NOT-DEFINED document-uri
-
-       NAME "Print-URI with bad URI: Print-URI Operation"
-       OPERATION Print-URI
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR uri document-uri "bogus://bogus"
-
-       STATUS client-error-uri-scheme-not-supported
-
-       EXPECT !job-uri
-       EXPECT !job-id
-       EXPECT !job-state
-       EXPECT !job-state-reasons
-       EXPECT !job-state-message
-}
-
-
-# Test Create-Job and Send-Document operations
-#
-# Defined by: RFC 2911 section 3.2.4 and 3.3.1
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_DOCUMENT
-
-       NAME "RFC 2911 section 3.2.4: Create-Job Operation"
-       OPERATION Create-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-
-       STATUS successful-ok
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_DOCUMENT
-       SKIP-PREVIOUS-ERROR yes
-
-       NAME "RFC 2911 section 3.3.1: Send-Document Operation"
-       OPERATION Send-Document
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-       ATTR boolean last-document true
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format $filetype
-       FILE $filename
-
-       STATUS successful-ok
-       STATUS client-error-document-format-not-supported
-       STATUS server-error-job-canceled
-}
-
-# Test Create-Job and Send-Document operations (no last-document)
-#
-# Defined by: RFC 2911 section 3.2.4 and 3.3.1
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_DOCUMENT
-
-       NAME "Send-Document missing last-document: Create-Job Operation"
-       OPERATION Create-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-
-       STATUS successful-ok
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_DOCUMENT
-       SKIP-PREVIOUS-ERROR yes
-
-       NAME "Send-Document missing last-document: Send-Document Operation"
-       OPERATION Send-Document
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format $filetype
-       FILE $filename
-
-       STATUS client-error-bad-request
-}
-
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_DOCUMENT
-       SKIP-PREVIOUS-ERROR yes
-
-       NAME "RFC 2911 section 3.3.3: Cancel-Job Operation"
-       OPERATION Cancel-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-}
-
-# Test Create-Job and Send-URI operations
-#
-# Defined by: RFC 2911 section 3.2.4 and 3.3.2
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_URI
-       SKIP-IF-NOT-DEFINED document-uri
-
-       NAME "RFC 2911 section 3.2.4: Create-Job Operation"
-       OPERATION Create-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-
-       STATUS successful-ok
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_URI
-       SKIP-IF-NOT-DEFINED document-uri
-       SKIP-PREVIOUS-ERROR yes
-
-       NAME "RFC 2911 section 3.3.2: Send-URI Operation"
-       OPERATION Send-URI
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-       ATTR boolean last-document true
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR uri document-uri $document-uri
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-}
-
-
-# Test Create-Job and Send-URI operations (bad URI)
-#
-# Defined by: RFC 2911 section 3.2.4 and 3.3.2
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_URI
-
-       NAME "Send-URI with bad URI: Create-Job Operation"
-       OPERATION Create-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-
-       STATUS successful-ok
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_URI
-       SKIP-IF-NOT-DEFINED document-uri
-       SKIP-PREVIOUS-ERROR yes
-
-       NAME "Send-URI with bad URI: Send-URI Operation (bad URI)"
-       OPERATION Send-URI
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-       ATTR boolean last-document true
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format $filetype
-       ATTR uri document-uri "bogus://bogus"
-
-       STATUS client-error-uri-scheme-not-supported
-}
-
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_CREATE_JOB
-       SKIP-IF-NOT-DEFINED OPTIONAL_SEND_URI
-       SKIP-PREVIOUS-ERROR yes
-
-       NAME "Send-URI with bad URI: Cancel-Job Operation"
-       OPERATION Cancel-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-}
-
-
-# Test multiple copy output
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_COPIES
-
-       NAME "Print-Job with copies"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name $filename
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format $filetype
-       GROUP job-attributes-tag
-       ATTR integer copies 2
-       FILE $filename
-
-       STATUS successful-ok
-       STATUS client-error-document-format-not-supported
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Test PDF output
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-
-       NAME "Print-Job with A4 PDF"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       FILE document-a4.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_DUPLEX
-
-       NAME "Print-Job with A4 PDF, Duplex"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document, Duplex"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       ATTR keyword sides two-sided-long-edge
-       FILE document-a4.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-
-       NAME "Print-Job with US Letter PDF"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-letter.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       FILE document-letter.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_DUPLEX
-
-       NAME "Print-Job with US Letter PDF, Duplex"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document, Duplex"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-letter.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       ATTR keyword sides two-sided-long-edge
-       FILE document-letter.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Test PostScript output
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_POSTSCRIPT
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-
-       NAME "Print-Job with A4 PostScript"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document, Duplex"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.ps
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/postscript
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       FILE document-a4.ps
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_POSTSCRIPT
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_DUPLEX
-
-       NAME "Print-Job with A4 PostScript, Duplex"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.ps
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/postscript
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       ATTR keyword sides two-sided-long-edge
-       FILE document-a4.ps
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_POSTSCRIPT
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-
-       NAME "Print-Job with US Letter PostScript"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document, Duplex"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-letter.ps
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/postscript
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       FILE document-letter.ps
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_POSTSCRIPT
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_DUPLEX
-
-       NAME "Print-Job with US Letter PostScript, Duplex"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-letter.ps
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/postscript
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       ATTR keyword sides two-sided-long-edge
-       FILE document-letter.ps
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Test JPEG output
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-
-       NAME "Print-Job with Color JPEG on A4"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "Color JPEG on A4"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name color.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       FILE color.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-
-       NAME "Print-Job with Color JPEG on US Letter"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "Color JPEG on US Letter"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name color.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       FILE color.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_4X6_MEDIA
-
-       NAME "Print-Job with Color JPEG on 4x6"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "Color JPEG on 4x6"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name color.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_4X6_MEDIA
-       FILE color.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-
-       NAME "Print-Job with Grayscale JPEG on A4"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "Grayscale JPEG on A4"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name gray.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       FILE gray.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-
-       NAME "Print-Job with Grayscale JPEG on US Letter"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "Grayscale JPEG on US Letter"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name gray.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       FILE gray.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_4X6_MEDIA
-
-       NAME "Print-Job with Grayscale JPEG on 4x6"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "Grayscale JPEG on 4x6"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name gray.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_4X6_MEDIA
-       FILE gray.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Print-Job with job-sheets
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_STANDARD_SHEET
-
-       NAME "Print-Job with A4 PDF and Standard Sheet"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document w/Standard Sheet"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       ATTR keyword job-sheets standard
-       FILE document-a4.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_STANDARD_SHEET
-
-       NAME "Print-Job with US Letter PDF and Standard Sheet"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document w/Standard Sheet"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       ATTR keyword job-sheets standard
-       FILE document-a4.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_POSTSCRIPT
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_STANDARD_SHEET
-
-       NAME "Print-Job with A4 PDF and Standard Sheet"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document w/Standard Sheet"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.ps
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/postscript
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       ATTR keyword job-sheets standard
-       FILE document-a4.ps
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_POSTSCRIPT
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_STANDARD_SHEET
-
-       NAME "Print-Job with US Letter PDF and Standard Sheet"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document w/Standard Sheet"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.ps
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/postscript
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       ATTR keyword job-sheets standard
-       FILE document-a4.ps
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Test number-up output
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_2UP
-
-       NAME "Print-Job with A4 PDF, 2-Up"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document; 2-Up"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       ATTR integer number-up 2
-       FILE document-a4.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_2UP
-
-       NAME "Print-Job with US Letter PDF, 2-Up"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document; 2-Up"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-letter.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       ATTR integer number-up 2
-       FILE document-letter.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_POSTSCRIPT
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_2UP
-
-       NAME "Print-Job with A4 PDF, 2-Up"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document; 2-Up"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.ps
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/postscript
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       ATTR integer number-up 2
-       FILE document-a4.ps
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_POSTSCRIPT
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_2UP
-
-       NAME "Print-Job with US Letter PDF, 2-Up"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document; 2-Up"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-letter.ps
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/postscript
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       ATTR integer number-up 2
-       FILE document-letter.ps
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Test output with print-quality...
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_4X6_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_DRAFT_QUALITY
-
-       NAME "Print-Job with JPEG on 4x6, Draft Quality"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "4x6 Color JPEG; Draft Quality"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name color.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_4X6_MEDIA
-       ATTR enum print-quality 3
-       FILE color.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_4X6_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_NORMAL_QUALITY
-
-       NAME "Print-Job with JPEG on 4x6, Normal Quality"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "4x6 Color JPEG; Normal Quality"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name color.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_4X6_MEDIA
-       ATTR enum print-quality 4
-       FILE color.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_JPEG
-       SKIP-IF-NOT-DEFINED OPTIONAL_4X6_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_HIGH_QUALITY
-
-       NAME "Print-Job with JPEG on 4x6, High Quality"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "4x6 Color JPEG; High Quality"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name color.jpg
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format image/jpeg
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_4X6_MEDIA
-       ATTR enum print-quality 5
-       FILE color.jpg
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_A4_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_DRAFT_QUALITY
-
-       NAME "Print-Job with A4 PDF, Draft Quality"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "A4 Test Document; 2-Up"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-a4.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_A4_MEDIA
-       ATTR enum print-quality 3
-       FILE document-a4.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-DEFINED NOPRINT
-       SKIP-IF-NOT-DEFINED OPTIONAL_PDF
-       SKIP-IF-NOT-DEFINED OPTIONAL_LETTER_MEDIA
-       SKIP-IF-NOT-DEFINED OPTIONAL_DRAFT_QUALITY
-
-       NAME "Print-Job with US Letter PDF, Draft Quality"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "US Letter Test Document; 2-Up"
-       ATTR boolean ipp-attribute-fidelity false
-       ATTR name document-name document-letter.pdf
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format application/pdf
-       GROUP job-attributes-tag
-       ATTR keyword media $OPTIONAL_LETTER_MEDIA
-       ATTR enum print-quality 3
-       FILE document-letter.pdf
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-
-# Test hold/release in the context of Print-Job w/job-hold-until + Release-Job
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_HOLD_JOB
-
-       NAME "Print-Job with job-hold-until"
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR name job-name "Test Document w/Hold"
-       ATTR name document-name $filename
-       ATTR keyword compression none
-       ATTR mimeMediaType document-format $filetype
-       GROUP job-attributes-tag
-       ATTR keyword job-hold-until indefinite
-       FILE $filename
-
-       STATUS successful-ok
-       STATUS server-error-job-canceled
-       STATUS server-error-busy REPEAT-MATCH REPEAT-LIMIT 30
-
-       EXPECT job-uri OF-TYPE uri COUNT 1 IN-GROUP job-attributes-tag WITH-VALUE "$IPP_URI_SCHEME"
-       EXPECT job-id OF-TYPE integer COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE >0
-       EXPECT job-state OF-TYPE unknown|enum COUNT 1 IN-GROUP job-attributes-tag
-              WITH-VALUE 3,4,5,6,7,8,9
-       EXPECT job-state-reasons OF-TYPE keyword IN-GROUP job-attributes-tag
-       EXPECT ?job-state-message OF-TYPE text IN-GROUP job-attributes-tag
-       EXPECT ?number-of-intervening-jobs OF-TYPE integer
-              IN-GROUP job-attributes-tag WITH-VALUE >-1
-}
-
-{
-       SKIP-IF-NOT-DEFINED OPTIONAL_HOLD_JOB
-
-       NAME "Release-Job"
-       OPERATION Release-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR integer job-id $job-id
-       ATTR name requesting-user-name $user
-
-       STATUS successful-ok
-       STATUS client-error-not-possible
-}
-
-
-# Test required printer description attribute support.
-#
-# Required by: PWG 5100.12 section 6.2
-{
-       NAME "PWG 5100.12 section 6.2 - Required Printer Description Attributes"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format application/octet-stream
-
-       STATUS successful-ok
-
-       # Figure out capabilities
-       EXPECT color-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE true DEFINE-MATCH PRINTER_IS_COLOR
-
-       # Job template attributes
-       EXPECT copies-default OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0
-       EXPECT copies-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag
-       EXPECT finishings-default OF-TYPE enum IN-GROUP printer-attributes-tag
-       EXPECT finishings-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3
-       EXPECT media-default OF-TYPE no-value|keyword|name IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "$MEDIA_REGEX"
-       EXPECT ?media-ready OF-TYPE keyword|name IN-GROUP printer-attributes-tag WITH-ALL-VALUES "$MEDIA_REGEX"
-       EXPECT media-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag WITH-ALL-VALUES "$MEDIA_REGEX"
-       EXPECT orientation-requested-default OF-TYPE no-value|enum IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 3,4,5,6
-       EXPECT orientation-requested-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3,4,5,6
-       EXPECT output-bin-default OF-TYPE keyword|name IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT output-bin-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-       EXPECT print-quality-default OF-TYPE enum IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE 3,4,5
-       EXPECT print-quality-supported OF-TYPE enum IN-GROUP printer-attributes-tag WITH-VALUE 3,4,5
-       EXPECT printer-resolution-default OF-TYPE resolution IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-resolution-supported OF-TYPE resolution IN-GROUP printer-attributes-tag
-       EXPECT sides-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-ALL-VALUES "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/"
-       EXPECT sides-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-ALL-VALUES "/^(one-sided|two-sided-long-edge|two-sided-short-edge)$$/"
-
-       # Optional media-col support
-       EXPECT ?media-col-default OF-TYPE collection IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT ?media-col-ready OF-TYPE collection IN-GROUP printer-attributes-tag
-       EXPECT ?media-col-supported OF-TYPE keyword IN-GROUP printer-attributes-tag
-       EXPECT media-col-supported WITH-VALUE media-back-coating DEFINE-MATCH HAVE_MEDIA_BACK_COATING
-       EXPECT media-col-supported WITH-VALUE media-color DEFINE-MATCH HAVE_MEDIA_COLOR
-       EXPECT media-col-supported WITH-VALUE media-front-coating DEFINE-MATCH HAVE_MEDIA_FRONT_COATING
-       EXPECT media-col-supported WITH-VALUE media-grain DEFINE-MATCH HAVE_MEDIA_GRAIN
-       EXPECT media-col-supported WITH-VALUE media-hole-count DEFINE-MATCH HAVE_MEDIA_HOLE_COUNT
-       EXPECT media-col-supported WITH-VALUE media-info DEFINE-MATCH HAVE_MEDIA_INFO
-       EXPECT media-col-supported WITH-VALUE media-key DEFINE-MATCH HAVE_MEDIA_KEY
-       EXPECT media-col-supported WITH-VALUE media-order-count DEFINE-MATCH HAVE_MEDIA_ORDER_COUNT
-       EXPECT media-col-supported WITH-VALUE media-pre-printed DEFINE-MATCH HAVE_MEDIA_PRE_PRINTED
-       EXPECT media-col-supported WITH-VALUE media-recycled DEFINE-MATCH HAVE_MEDIA_RECYCLED
-       EXPECT media-col-supported WITH-VALUE media-size DEFINE-MATCH HAVE_MEDIA_SIZE
-       EXPECT media-col-supported WITH-VALUE media-tooth DEFINE-MATCH HAVE_MEDIA_TOOTH
-       EXPECT media-col-supported WITH-VALUE media-type DEFINE-MATCH HAVE_MEDIA_TYPE
-       EXPECT media-col-supported WITH-VALUE media-weight-metric DEFINE-MATCH HAVE_MEDIA_WEIGHT_METRIC
-
-       EXPECT media-back-coating-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_BACK_COATING
-       EXPECT media-color-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_COLOR
-       EXPECT media-front-coating-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_FRONT_COATING
-       EXPECT media-grain-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_GRAIN
-       EXPECT media-hole-count-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag WITH-VALUE >-1 IF-DEFINED HAVE_MEDIA_HOLE_COUNT
-       EXPECT media-info-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_INFO
-       EXPECT media-key-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_KEY
-       EXPECT media-order-count-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag WITH-VALUE >0 IF-DEFINED HAVE_MEDIA_ORDER_COUNT
-       EXPECT media-pre-printed-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_PRE_PRINTED
-       EXPECT media-recycled-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_RECYCLED
-       EXPECT media-size-supported OF-TYPE collection IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_SIZE
-       EXPECT media-tooth-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_TOOTH
-       EXPECT media-type-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag IF-DEFINED HAVE_MEDIA_TYPE
-       EXPECT media-weight-metric-supported OF-TYPE rangeOfInteger IN-GROUP printer-attributes-tag WITH-VALUE >-1 IF-DEFINED HAVE_MEDIA_WEIGHT_METRIC
-
-       # Printer description attributes
-       EXPECT color-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT pages-per-minute OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT pages-per-minute-color OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 IF-DEFINED PRINTER_IS_COLOR
-       EXPECT !pages-per-minute-color IF-NOT-DEFINED PRINTER_IS_COLOR
-       EXPECT printer-info OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
-       EXPECT printer-location OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
-       EXPECT printer-make-and-model OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^.{0,127}$$/"
-       EXPECT printer-more-info OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1
-}
-
-
-# Test required printer description attribute support.
-#
-# Required by: PWG 5100.14
-{
-       NAME "PWG 5100.14 section 5.1/5.2 - Required Operations and Attributes"
-       OPERATION Get-Printer-Attributes
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format application/octet-stream
-       ATTR keyword requested-attributes all,media-col-database
-
-       STATUS successful-ok
-
-       # Operations
-       EXPECT operations-supported WITH-VALUE 0x0002 # Print-Job
-       EXPECT operations-supported WITH-VALUE 0x0004 # Validate-Job
-       EXPECT operations-supported WITH-VALUE 0x0005 # Create-Job
-       EXPECT operations-supported WITH-VALUE 0x0006 # Send-Document
-       EXPECT operations-supported WITH-VALUE 0x0008 # Cancel-Job
-       EXPECT operations-supported WITH-VALUE 0x0009 # Get-Job-Attributes
-       EXPECT operations-supported WITH-VALUE 0x000a # Get-Jobs
-       EXPECT operations-supported WITH-VALUE 0x000b # Get-Printer-Attributes
-       EXPECT operations-supported WITH-VALUE 0x0039 # Cancel-My-Jobs
-       EXPECT operations-supported WITH-VALUE 0x003b # Close-Job
-       EXPECT operations-supported WITH-VALUE 0x003c # Identify-Printer
-
-       # Printer description attributes
-       EXPECT compression-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "deflate" DEFINE-MATCH HAVE_DEFLATE
-       EXPECT compression-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "gzip" DEFINE-MATCH HAVE_GZIP
-
-       EXPECT document-format-supported OF-TYPE mimeMediaType IN-GROUP printer-attributes-tag WITH-VALUE "image/jpeg"
-       EXPECT document-format-supported OF-TYPE mimeMediaType IN-GROUP printer-attributes-tag WITH-VALUE "image/pwg-raster"
-       EXPECT document-format-supported OF-TYPE mimeMediaType IN-GROUP printer-attributes-tag WITH-VALUE "/^(application/pdf|application/openxps)$/" DEFINE-MATCH PDF_OR_OPENXPS
-
-       EXPECT feed-orientation-supported OF-TYPE keyword IN-GROUP printer-attributes-tag DEFINE-MATCH FEED_ORIENTATION_SUPPORTED
-       EXPECT feed-orientation-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 IF-DEFINED FEED_ORIENTATION_SUPPORTED
-
-       EXPECT finishings-supported OF-TYPE enum IN-GROUP printer-attributes-tag DEFINE-MATCH FINISHINGS_SUPPORTED
-       EXPECT finishings-default OF-TYPE enum IN-GROUP printer-attributes-tag IF-DEFINED FINISHINGS_SUPPORTED
-
-       EXPECT identify-actions-default OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(display|flash|sound|speak)$/"
-       EXPECT identify-actions-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "/^(display|flash|sound|speak)$/"
-
-       EXPECT ipp-features-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "ipp-everywhere"
-
-       EXPECT job-account-id-supported OF-TYPE boolean IN-GROUP printer-attributes-tag WITH-VALUE true COUNT 1 DEFINE-MATCH JOB_ACCOUNT_ID_SUPPORTED
-       EXPECT job-account-id-default OF-TYPE name|no-value IN-GROUP printer-attributes-tag COUNT 1 IF-DEFINED JOB_ACCOUNT_ID_SUPPORTED
-
-       EXPECT job-accounting-user-id-supported OF-TYPE boolean IN-GROUP printer-attributes-tag WITH-VALUE true COUNT 1 DEFINE-MATCH JOB_ACCOUNTING_USER_ID_SUPPORTED
-       EXPECT job-accounting-user-id-default OF-TYPE name|no-value IN-GROUP printer-attributes-tag COUNT 1 IF-DEFINED JOB_ACCOUNTING_USER_ID_SUPPORTED
-
-       EXPECT job-constraints-supported OF-TYPE collection IN-GROUP printer-attributes-tag DEFINE-MATCH JOB_CONSTRAINTS_SUPPORTED
-       EXPECT job-resolvers-supported OF-TYPE collection IN-GROUP printer-attributes-tag IF-DEFINED JOB_CONSTRAINTS_SUPPORTED
-
-       EXPECT job-creation-attributes-supported OF-TYPE keyword IN-GROUP printer-attributes-tag
-
-       EXPECT job-ids-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE true
-
-       EXPECT preferred-attributes-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT media-bottom-margin-supported OF-TYPE integer IN-GROUP printer-attributes-tag WITH-ALL-VALUES >-1
-       EXPECT media-left-margin-supported OF-TYPE integer IN-GROUP printer-attributes-tag WITH-ALL-VALUES >-1
-       EXPECT media-right-margin-supported OF-TYPE integer IN-GROUP printer-attributes-tag WITH-ALL-VALUES >-1
-       EXPECT media-top-margin-supported OF-TYPE integer IN-GROUP printer-attributes-tag WITH-ALL-VALUES >-1
-
-       EXPECT media-col-database OF-TYPE collection IN-GROUP printer-attributes-tag
-
-       EXPECT media-col-ready OF-TYPE collection IN-GROUP printer-attributes-tag
-
-       EXPECT media-ready OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-
-       EXPECT media-size-supported OF-TYPE collection IN-GROUP printer-attributes-tag
-
-       EXPECT media-source-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-
-       EXPECT media-type-supported OF-TYPE keyword|name IN-GROUP printer-attributes-tag
-
-       EXPECT multiple-document-jobs-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT multiple-operation-time-out OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >0
-
-       EXPECT multiple-operation-time-out-action OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(abort-job|hold-job|process-job)$/"
-
-       EXPECT overrides-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "document-number"
-       EXPECT overrides-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "pages"
-
-       EXPECT page-ranges-supported OF-TYPE boolean IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE true IF-DEFINED PDF_OR_OPENXPS
-
-       EXPECT print-color-mode-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(auto|auto-monochrome|bi-level|color|highlight|monochrome|process-bi-level|process-monochrome)$/"
-       EXPECT print-color-mode-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-ALL-VALUES "/^(auto|auto-monochrome|bi-level|color|highlight|monochrome|process-bi-level|process-monochrome)$/"
-
-       EXPECT print-content-optimize-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(auto|graphic|photo|text|text-and-graphic)$/"
-       EXPECT print-content-optimize-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-ALL-VALUES "/^(auto|graphic|photo|text|text-and-graphic)$/"
-
-       EXPECT print-rendering-intent-default OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^(auto|absolute|perceptual|relative|relative-bpc|saturation)$/"
-       EXPECT print-rendering-intent-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-ALL-VALUES "/^(auto|absolute|perceptual|relative|relative-bpc|saturation)$/"
-
-       EXPECT ?printer-alert OF-TYPE octetString IN-GROUP printer-attributes-tag
-       EXPECT ?printer-alert-description OF-TYPE text IN-GROUP printer-attributes-tag SAME-COUNT-AS printer-alert
-
-       EXPECT printer-charge-info DEFINE-MATCH PRINTER_CHARGE_INFO
-       EXPECT ?printer-charge-info OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-charge-info-uri IF-DEFINED PRINTER_CHARGE_INFO
-       EXPECT ?printer-charge-info-uri OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT printer-config-change-date-time OF-TYPE dateTime IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-config-change-time OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >-1
-
-       EXPECT printer-device-id OF-TYPE text IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^([-A-Za-z ]+:[^;]*;)+$/"
-
-       EXPECT printer-geo-location OF-TYPE uri|unknown IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^geo:/"
-
-       EXPECT printer-get-attributes-supported OF-TYPE keyword IN-GROUP printer-attributes-tag WITH-VALUE "document-format"
-
-       EXPECT ?printer-icc-profiles-supported OF-TYPE collection IN-GROUP printer-attributes-tag
-
-       EXPECT printer-icons OF-TYPE uri IN-GROUP printer-attributes-tag
-
-       EXPECT ?printer-mandatory-job-attributes OF-TYPE keyword IN-GROUP printer-attributes-tag
-
-       EXPECT printer-organization OF-TYPE text IN-GROUP printer-attributes-tag
-       EXPECT printer-organizational-unit OF-TYPE text IN-GROUP printer-attributes-tag
-
-       EXPECT printer-state-change-date-time OF-TYPE dateTime IN-GROUP printer-attributes-tag COUNT 1
-       EXPECT printer-state-change-time OF-TYPE integer IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE >-1
-
-       EXPECT printer-supply OF-TYPE octetString IN-GROUP printer-attributes-tag SAME-COUNT-AS printer-supply-description
-       EXPECT printer-supply-description OF-TYPE text IN-GROUP printer-attributes-tag SAME-COUNT-AS printer-supply
-
-       EXPECT printer-supply-info-uri OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT printer-uuid OF-TYPE uri IN-GROUP printer-attributes-tag COUNT 1 WITH-VALUE "/^urn:uuid:[0-9A-Fa-f]{8,8}-[0-9A-Fa-f]{4,4}-[0-9A-Fa-f]{4,4}-[0-9A-Fa-f]{4,4}-[0-9A-Fa-f]{12,12}/"
-
-       EXPECT pwg-raster-document-resolution-supported OF-TYPE resolution IN-GROUP printer-attributes-tag
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 150dpi DEFINE-MATCH HAVE_150DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 180dpi DEFINE-MATCH HAVE_180DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 300dpi DEFINE-MATCH HAVE_300DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 3600dpi DEFINE-MATCH HAVE_360DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 600dpi DEFINE-MATCH HAVE_600DPI
-       EXPECT pwg-raster-document-resolution-supported WITH-VALUE 720dpi DEFINE-MATCH HAVE_720DPI
-
-       EXPECT pwg-raster-document-sheet-back OF-TYPE keyword IN-GROUP printer-attributes-tag COUNT 1
-
-       EXPECT pwg-raster-document-type-supported OF-TYPE keyword IN-GROUP printer-attributes-tag
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "black_1" DEFINE-MATCH HAVE_BLACK_1
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "cmyk_8" DEFINE-MATCH HAVE_CMYK_8
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "sgray_8" DEFINE-MATCH HAVE_SGRAY_8
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "srgb_8" DEFINE-MATCH HAVE_SRGB_8
-       EXPECT pwg-raster-document-type-supported WITH-VALUE "srgb_16" DEFINE-MATCH HAVE_SRGB_16
-
-       EXPECT which-jobs-supported OF-TYPE keyword IN-GROUP printer-attributes-tag
-}
-
-
-# Test printing all sample documents
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/color.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 150dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/color.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 180dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/color.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 300dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/color.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 360dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/color.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 600dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/color.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/color.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/color.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/color.jpg-4x6-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-16"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "color.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-16, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print color.jpg-4x6 @ 720dpi, srgb-16, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_16
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "color.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-16/color.jpg-4x6-srgb-16-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-a4"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-a4 @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/document-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/document-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/document-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/document-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/document-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/document-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/document-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/document-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/document-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/document-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/document-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/document-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/document-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/document-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/document-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/document-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/document-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/document-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/document-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/document-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/document-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/document-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/document-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "document-letter"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "document-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print document-letter @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "document-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/document-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/gray.jpg-4x6-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/gray.jpg-4x6-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/gray.jpg-4x6-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/gray.jpg-4x6-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/gray.jpg-4x6-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/gray.jpg-4x6-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/gray.jpg-4x6-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "gray.jpg-4x6"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print gray.jpg-4x6 @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "gray.jpg-4x6"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/gray.jpg-4x6-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-a4-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-a4-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-a4-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-a4-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-a4-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-a4-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-a4-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-a4-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-a4-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-a4-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-a4-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-a4-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-a4-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-a4-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-a4-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-a4-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-a4-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-a4-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-a4-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-a4-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-a4-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-a4-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-a4-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-a4"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-a4"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-a4 @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-a4"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-a4-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/black-1/onepage-letter-black-1-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/cmyk-8/onepage-letter-cmyk-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/sgray-8/onepage-letter-sgray-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 150dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_150DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-150dpi-20111130/srgb-8/onepage-letter-srgb-8-150dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/black-1/onepage-letter-black-1-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/cmyk-8/onepage-letter-cmyk-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/sgray-8/onepage-letter-sgray-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 180dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_180DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-180dpi-20111130/srgb-8/onepage-letter-srgb-8-180dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/black-1/onepage-letter-black-1-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/cmyk-8/onepage-letter-cmyk-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/sgray-8/onepage-letter-sgray-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 300dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_300DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-300dpi-20111130/srgb-8/onepage-letter-srgb-8-300dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/black-1/onepage-letter-black-1-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/cmyk-8/onepage-letter-cmyk-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/sgray-8/onepage-letter-sgray-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 360dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_360DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-360dpi-20111130/srgb-8/onepage-letter-srgb-8-360dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/black-1/onepage-letter-black-1-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/cmyk-8/onepage-letter-cmyk-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/sgray-8/onepage-letter-sgray-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 600dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_600DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-600dpi-20111130/srgb-8/onepage-letter-srgb-8-600dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, black-1"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, black-1, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, black-1, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_BLACK_1
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/black-1/onepage-letter-black-1-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, cmyk-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, cmyk-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, cmyk-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_CMYK_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/cmyk-8/onepage-letter-cmyk-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, sgray-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, sgray-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, sgray-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SGRAY_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/sgray-8/onepage-letter-sgray-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, srgb-8"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR name job-name "onepage-letter"
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, srgb-8, deflate"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_DEFLATE
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression deflate
-       ATTR name job-name "onepage-letter"
-       COMPRESSION deflate
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-{
-       NAME "Print onepage-letter @ 720dpi, srgb-8, gzip"
-       SKIP-IF-MISSING pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-       SKIP-IF-NOT-DEFINED HAVE_720DPI
-       SKIP-IF-NOT-DEFINED HAVE_SRGB_8
-       SKIP-IF-NOT-DEFINED HAVE_GZIP
-
-       OPERATION Print-Job
-       GROUP operation-attributes-tag
-       ATTR charset attributes-charset utf-8
-       ATTR naturalLanguage attributes-natural-language en
-       ATTR uri printer-uri $uri
-       ATTR name requesting-user-name $user
-       ATTR mimeMediaType document-format image/pwg-raster
-       ATTR keyword compression gzip
-       ATTR name job-name "onepage-letter"
-       COMPRESSION gzip
-       FILE pwg-raster-samples-720dpi-20111130/srgb-8/onepage-letter-srgb-8-720dpi.pwg
-
-       STATUS successful-ok
-       STATUS server-error-busy REPEAT-MATCH
-}
-
-
-#
-# End of "$Id: ipp-everywhere.test 11398 2013-11-06 20:11:11Z msweet $".
-#
index 504ab82..51ef071 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: get-completed-jobs.test 12088 2014-08-07 01:09:21Z msweet $"
+# "$Id$"
 #
 #   Get list of completed jobs.
 #
@@ -47,5 +47,5 @@
 
 
 #
-# End of "$Id: get-completed-jobs.test 12088 2014-08-07 01:09:21Z msweet $".
+# End of "$Id$".
 #
index d8cc514..19fb65f 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: get-jobs.test 12088 2014-08-07 01:09:21Z msweet $"
+# "$Id$"
 #
 #   Get list of not-completed jobs.
 #
@@ -49,5 +49,5 @@
 
 
 #
-# End of "$Id: get-jobs.test 12088 2014-08-07 01:09:21Z msweet $".
+# End of "$Id$".
 #
index 874d214..8019cec 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: get-notifications.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   Get subscription events.
 #
@@ -42,5 +42,5 @@
 
 
 #
-# End of "$Id: get-notifications.test 11398 2013-11-06 20:11:11Z msweet $"
+# End of "$Id$"
 #
index 0d4c646..ffb4ae9 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-1.1.test 12661 2015-05-25 14:30:52Z msweet $"
+# "$Id$"
 #
 #   IPP/1.1 test suite.
 #
@@ -2346,5 +2346,5 @@ DEFINE IPP_URI_SCHEME "/^ipps?://.+$$/"
 
 
 #
-# End of "$Id: ipp-1.1.test 12661 2015-05-25 14:30:52Z msweet $".
+# End of "$Id$".
 #
index 370ec4a..0ee0e94 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-2.0.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   IPP/2.0 test suite.
 #
@@ -111,5 +111,5 @@ DEFINE MEDIA_REGEX "/^(choice(_((custom|na|asme|roc|oe|roll)_[a-z0-9][-a-z0-9]*_
 
 
 #
-# End of "$Id: ipp-2.0.test 11398 2013-11-06 20:11:11Z msweet $".
+# End of "$Id$".
 #
index ca48351..e8ddae4 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-2.1.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   IPP/2.1 test suite.
 #
@@ -92,5 +92,5 @@ INCLUDE "ipp-2.0.test"
 
 
 #
-# End of "$Id: ipp-2.1.test 11398 2013-11-06 20:11:11Z msweet $".
+# End of "$Id$".
 #
index a6eb7a7..3042ec2 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-2.2.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   IPP/2.2 test suite.
 #
@@ -82,5 +82,5 @@ INCLUDE "ipp-2.1.test"
 
 
 #
-# End of "$Id: ipp-2.2.test 11398 2013-11-06 20:11:11Z msweet $".
+# End of "$Id$".
 #
index 5bcf6c0..d1e5b2c 100644 (file)
@@ -1,5 +1,5 @@
 #
-# "$Id: ipp-everywhere.test 11398 2013-11-06 20:11:11Z msweet $"
+# "$Id$"
 #
 #   IPP Everywhere test suite.
 #
@@ -9685,5 +9685,5 @@ INCLUDE "ipp-2.0.test"
 
 
 #
-# End of "$Id: ipp-everywhere.test 11398 2013-11-06 20:11:11Z msweet $".
+# End of "$Id$".
 #
diff --git a/test/ippdiscover.c b/test/ippdiscover.c
deleted file mode 100644 (file)
index cd35401..0000000
+++ /dev/null
@@ -1,829 +0,0 @@
-/*
- * "$Id: ippdiscover.c 10983 2013-05-13 23:57:32Z msweet $"
- *
- *   ippdiscover command for CUPS.
- *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   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/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- */
-
-
-/*
- * Include necessary headers.
- */
-
-#include <cups/cups-private.h>
-#ifdef HAVE_DNSSD
-#  include <dns_sd.h>
-#  ifdef WIN32
-#    pragma comment(lib, "dnssd.lib")
-#  endif /* WIN32 */
-#endif /* HAVE_DNSSD */
-#ifdef HAVE_AVAHI
-#  include <avahi-client/client.h>
-#  include <avahi-client/lookup.h>
-#  include <avahi-common/simple-watch.h>
-#  include <avahi-common/domain.h>
-#  include <avahi-common/error.h>
-#  include <avahi-common/malloc.h>
-#define kDNSServiceMaxDomainName AVAHI_DOMAIN_NAME_MAX
-#endif /* HAVE_AVAHI */
-
-
-/*
- * Local globals...
- */
-
-#ifdef HAVE_AVAHI
-static int             got_data = 0;   /* Got data from poll? */
-static AvahiSimplePoll *simple_poll = NULL;
-                                       /* Poll information */
-#endif /* HAVE_AVAHI */
-static const char      *program = NULL;/* Program to run */
-
-
-/*
- * Local functions...
- */
-
-#ifdef HAVE_DNSSD
-static void DNSSD_API  browse_callback(DNSServiceRef sdRef,
-                                       DNSServiceFlags flags,
-                                       uint32_t interfaceIndex,
-                                       DNSServiceErrorType errorCode,
-                                       const char *serviceName,
-                                       const char *regtype,
-                                       const char *replyDomain, void *context)
-                                       __attribute__((nonnull(1,5,6,7,8)));
-static void DNSSD_API  resolve_cb(DNSServiceRef sdRef,
-                                  DNSServiceFlags flags,
-                                  uint32_t interfaceIndex,
-                                  DNSServiceErrorType errorCode,
-                                  const char *fullName,
-                                  const char *hostTarget,
-                                  uint16_t port, uint16_t txtLen,
-                                  const unsigned char *txtRecord,
-                                  void *context);
-#endif /* HAVE_DNSSD */
-
-#ifdef HAVE_AVAHI
-static void            browse_callback(AvahiServiceBrowser *browser,
-                                       AvahiIfIndex interface,
-                                       AvahiProtocol protocol,
-                                       AvahiBrowserEvent event,
-                                       const char *serviceName,
-                                       const char *regtype,
-                                       const char *replyDomain,
-                                       AvahiLookupResultFlags flags,
-                                       void *context);
-static void            client_cb(AvahiClient *client, AvahiClientState state,
-                                 void *simple_poll);
-static int             poll_cb(struct pollfd *pollfds, unsigned int num_pollfds,
-                               int timeout, void *context);
-static void            resolve_cb(AvahiServiceResolver *resolver,
-                                  AvahiIfIndex interface,
-                                  AvahiProtocol protocol,
-                                  AvahiResolverEvent event,
-                                  const char *name, const char *type,
-                                  const char *domain, const char *host_name,
-                                  const AvahiAddress *address, uint16_t port,
-                                  AvahiStringList *txt,
-                                  AvahiLookupResultFlags flags, void *context);
-#endif /* HAVE_AVAHI */
-
-static void            resolve_and_run(const char *name, const char *type,
-                                       const char *domain);
-static void            unquote(char *dst, const char *src, size_t dstsize);
-static void            usage(void) __attribute__((noreturn));
-
-
-/*
- * 'main()' - Browse for printers and run the specified command.
- */
-
-int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line args */
-     char *argv[])                     /* I - Command-line arguments */
-{
-  int          i;                      /* Looping var */
-  const char   *opt,                   /* Current option character */
-               *name = NULL,           /* Service name */
-               *type = "_ipp._tcp",    /* Service type */
-               *domain = "local.";     /* Service domain */
-#ifdef HAVE_DNSSD
-  DNSServiceRef        ref;                    /* Browsing service reference */
-#endif /* HAVE_DNSSD */
-#ifdef HAVE_AVAHI
-  AvahiClient  *client;                /* Client information */
-  int          error;                  /* Error code, if any */
-#endif /* HAVE_AVAHI */
-
-
-  for (i = 1; i < argc; i ++)
-    if (!strcmp(argv[i], "snmp"))
-      snmponly = 1;
-    else if (!strcmp(argv[i], "ipp"))
-      ipponly = 1;
-    else
-    {
-      puts("Usage: ./ipp-printers [{ipp | snmp}]");
-      return (1);
-    }
-
- /*
-  * Create an array to track devices...
-  */
-
-  devices = cupsArrayNew((cups_array_func_t)compare_devices, NULL);
-
- /*
-  * Browse for different kinds of printers...
-  */
-
-  if (DNSServiceCreateConnection(&main_ref) != kDNSServiceErr_NoError)
-  {
-    perror("ERROR: Unable to create service connection");
-    return (1);
-  }
-
-  fd = DNSServiceRefSockFD(main_ref);
-
-  ipp_ref = main_ref;
-  DNSServiceBrowse(&ipp_ref, kDNSServiceFlagsShareConnection, 0,
-                   "_ipp._tcp", NULL, browse_callback, devices);
-
- /*
-  * Loop until we are killed...
-  */
-
-  progress();
-
-  for (;;)
-  {
-    FD_ZERO(&input);
-    FD_SET(fd, &input);
-
-    timeout.tv_sec  = 2;
-    timeout.tv_usec = 500000;
-
-    if (select(fd + 1, &input, NULL, NULL, &timeout) <= 0)
-    {
-      time_t curtime = time(NULL);
-
-      for (device = (cups_device_t *)cupsArrayFirst(devices);
-           device;
-          device = (cups_device_t *)cupsArrayNext(devices))
-        if (!device->got_resolve)
-        {
-          if (!device->ref)
-            break;
-
-          if ((curtime - device->resolve_time) > 10)
-          {
-            device->got_resolve = -1;
-           fprintf(stderr, "\rUnable to resolve \"%s\": timeout\n",
-                   device->name);
-           progress();
-         }
-          else
-            break;
-        }
-
-      if (!device)
-        break;
-    }
-
-    if (FD_ISSET(fd, &input))
-    {
-     /*
-      * Process results of our browsing...
-      */
-
-      progress();
-      DNSServiceProcessResult(main_ref);
-    }
-    else
-    {
-     /*
-      * Query any devices we've found...
-      */
-
-      DNSServiceErrorType      status; /* DNS query status */
-      int                      count;  /* Number of queries */
-
-
-      for (device = (cups_device_t *)cupsArrayFirst(devices), count = 0;
-           device;
-          device = (cups_device_t *)cupsArrayNext(devices))
-      {
-        if (!device->ref && !device->sent)
-       {
-        /*
-         * Found the device, now get the TXT record(s) for it...
-         */
-
-          if (count < 50)
-         {
-           device->resolve_time = time(NULL);
-           device->ref          = main_ref;
-
-           status = DNSServiceResolve(&(device->ref),
-                                      kDNSServiceFlagsShareConnection,
-                                      0, device->name, device->regtype,
-                                      device->domain, resolve_callback,
-                                      device);
-            if (status != kDNSServiceErr_NoError)
-            {
-             fprintf(stderr, "\rUnable to resolve \"%s\": %d\n",
-                     device->name, status);
-             progress();
-           }
-           else
-             count ++;
-          }
-       }
-       else if (!device->sent && device->got_resolve)
-       {
-        /*
-         * Got the TXT records, now report the device...
-         */
-
-         DNSServiceRefDeallocate(device->ref);
-         device->ref  = 0;
-         device->sent = 1;
-        }
-      }
-    }
-  }
-
-#ifndef DEBUG
-  fprintf(stderr, "\rFound %d printers. Now querying for capabilities...\n",
-          cupsArrayCount(devices));
-#endif /* !DEBUG */
-
-  puts("#!/bin/sh -x");
-  puts("test -d results && rm -rf results");
-  puts("mkdir results");
-  puts("CUPS_DEBUG_LEVEL=6; export CUPS_DEBUG_LEVEL");
-  puts("CUPS_DEBUG_FILTER='^(ipp|http|_ipp|_http|cupsGetResponse|cupsSend|"
-       "cupsWrite|cupsDo).*'; export CUPS_DEBUG_FILTER");
-
-  for (device = (cups_device_t *)cupsArrayFirst(devices);
-       device;
-       device = (cups_device_t *)cupsArrayNext(devices))
-  {
-    if (device->got_resolve <= 0 || device->cups_shared)
-      continue;
-
-#ifdef DEBUG
-    fprintf(stderr, "Checking \"%s\" (got_resolve=%d, cups_shared=%d, uri=%s)\n",
-            device->name, device->got_resolve, device->cups_shared, device->uri);
-#else
-    fprintf(stderr, "Checking \"%s\"...\n", device->name);
-#endif /* DEBUG */
-
-    if ((http = httpConnect(device->host, device->port)) == NULL)
-    {
-      fprintf(stderr, "Failed to connect to \"%s\": %s\n", device->name,
-              cupsLastErrorString());
-      continue;
-    }
-
-    request = ippNewRequest(IPP_GET_PRINTER_ATTRIBUTES);
-    ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
-                 device->uri);
-
-    response = cupsDoRequest(http, request, device->rp);
-
-    if (cupsLastError() > IPP_OK_SUBST)
-      fprintf(stderr, "Failed to query \"%s\": %s\n", device->name,
-              cupsLastErrorString());
-    else
-    {
-      if ((attr = ippFindAttribute(response, "ipp-versions-supported",
-                                  IPP_TAG_KEYWORD)) != NULL)
-      {
-       version = attr->values[0].string.text;
-
-       for (i = 1; i < attr->num_values; i ++)
-         if (strcmp(attr->values[i].string.text, version) > 0)
-           version = attr->values[i].string.text;
-      }
-      else
-       version = "1.0";
-
-      testfile = NULL;
-
-      if ((attr = ippFindAttribute(response, "document-format-supported",
-                                   IPP_TAG_MIMETYPE)) != NULL)
-      {
-       /*
-        * Figure out the test file for printing, preferring PDF and PostScript
-        * over JPEG and plain text...
-        */
-
-        for (i = 0; i < attr->num_values; i ++)
-        {
-          if (!strcasecmp(attr->values[i].string.text, "application/pdf"))
-          {
-            testfile = "testfile.pdf";
-            break;
-          }
-          else if (!strcasecmp(attr->values[i].string.text,
-                               "application/postscript"))
-            testfile = "testfile.ps";
-          else if (!strcasecmp(attr->values[i].string.text, "image/jpeg") &&
-                   !testfile)
-            testfile = "testfile.jpg";
-          else if (!strcasecmp(attr->values[i].string.text, "text/plain") &&
-                   !testfile)
-            testfile = "testfile.txt";
-          else if (!strcasecmp(attr->values[i].string.text,
-                               "application/vnd.hp-PCL") && !testfile)
-            testfile = "testfile.pcl";
-        }
-
-        if (!testfile)
-        {
-          fprintf(stderr,
-                  "Printer \"%s\" reports the following IPP file formats:\n",
-                  device->name);
-          for (i = 0; i < attr->num_values; i ++)
-            fprintf(stderr, "    \"%s\"\n", attr->values[i].string.text);
-        }
-      }
-
-      if (!testfile && device->pdl)
-      {
-       char    *pdl,                   /* Copy of pdl string */
-               *start, *end;           /* Pointers into pdl string */
-
-
-        pdl = strdup(device->pdl);
-       for (start = device->pdl; start && *start; start = end)
-       {
-         if ((end = strchr(start, ',')) != NULL)
-           *end++ = '\0';
-
-         if (!strcasecmp(start, "application/pdf"))
-         {
-           testfile = "testfile.pdf";
-           break;
-         }
-         else if (!strcasecmp(start, "application/postscript"))
-           testfile = "testfile.ps";
-         else if (!strcasecmp(start, "image/jpeg") && !testfile)
-           testfile = "testfile.jpg";
-         else if (!strcasecmp(start, "text/plain") && !testfile)
-           testfile = "testfile.txt";
-         else if (!strcasecmp(start, "application/vnd.hp-PCL") && !testfile)
-           testfile = "testfile.pcl";
-       }
-       free(pdl);
-
-        if (testfile)
-        {
-         fprintf(stderr,
-                 "Using \"%s\" for printer \"%s\" based on TXT record pdl "
-                 "info.\n", testfile, device->name);
-        }
-        else
-        {
-         fprintf(stderr,
-                 "Printer \"%s\" reports the following TXT file formats:\n",
-                 device->name);
-         fprintf(stderr, "    \"%s\"\n", device->pdl);
-       }
-      }
-
-      if (!device->ty &&
-         (attr = ippFindAttribute(response, "printer-make-and-model",
-                                  IPP_TAG_TEXT)) != NULL)
-       device->ty = strdup(attr->values[0].string.text);
-
-      if (strcmp(version, "1.0") && testfile && device->ty)
-      {
-       char            filename[1024], /* Filename */
-                       *fileptr;       /* Pointer into filename */
-       const char      *typtr;         /* Pointer into ty */
-
-        if (!strncasecmp(device->ty, "DeskJet", 7) ||
-            !strncasecmp(device->ty, "DesignJet", 9) ||
-            !strncasecmp(device->ty, "OfficeJet", 9) ||
-            !strncasecmp(device->ty, "Photosmart", 10))
-          strlcpy(filename, "HP_", sizeof(filename));
-        else
-          filename[0] = '\0';
-
-       fileptr = filename + strlen(filename);
-
-        if (!strncasecmp(device->ty, "Lexmark International Lexmark", 29))
-          typtr = device->ty + 22;
-        else
-          typtr = device->ty;
-
-       while (*typtr && fileptr < (filename + sizeof(filename) - 1))
-       {
-         if (isalnum(*typtr & 255) || *typtr == '-')
-           *fileptr++ = *typtr++;
-         else
-         {
-           *fileptr++ = '_';
-           typtr++;
-         }
-       }
-
-       *fileptr = '\0';
-
-        printf("# %s\n", device->name);
-        printf("echo \"Testing %s...\"\n", device->name);
-
-        if (!ipponly)
-        {
-         printf("echo \"snmpwalk -c public -v 1 -Cc %s 1.3.6.1.2.1.25 "
-                "1.3.6.1.2.1.43 1.3.6.1.4.1.2699.1\" > results/%s.snmpwalk\n",
-                device->host, filename);
-         printf("snmpwalk -c public -v 1 -Cc %s 1.3.6.1.2.1.25 "
-                "1.3.6.1.2.1.43 1.3.6.1.4.1.2699.1 | "
-                "tee -a results/%s.snmpwalk\n",
-                device->host, filename);
-        }
-
-        if (!snmponly)
-        {
-         printf("echo \"./ipptool-static -tIf %s -T 30 -d NOPRINT=1 -V %s %s "
-                "ipp-%s.test\" > results/%s.log\n", testfile, version,
-                device->uri, version, filename);
-         printf("CUPS_DEBUG_LOG=results/%s.debug_log "
-                "./ipptool-static -tIf %s -T 30 -d NOPRINT=1 -V %s %s "
-                "ipp-%s.test | tee -a results/%s.log\n", filename,
-                testfile, version, device->uri,
-                version, filename);
-        }
-
-       puts("");
-      }
-      else if (!device->ty)
-       fprintf(stderr,
-               "Ignoring \"%s\" since it doesn't provide a make and model.\n",
-               device->name);
-      else if (!testfile)
-       fprintf(stderr,
-               "Ignoring \"%s\" since it does not support a common format.\n",
-               device->name);
-      else
-       fprintf(stderr, "Ignoring \"%s\" since it only supports IPP/1.0.\n",
-               device->name);
-    }
-
-    ippDelete(response);
-    httpClose(http);
-  }
-
-  return (0);
-}
-
-
-/*
- * 'browse_callback()' - Browse devices.
- */
-
-static void
-browse_callback(
-    DNSServiceRef       sdRef,         /* I - Service reference */
-    DNSServiceFlags     flags,         /* I - Option flags */
-    uint32_t            interfaceIndex,        /* I - Interface number */
-    DNSServiceErrorType errorCode,     /* I - Error, if any */
-    const char          *serviceName,  /* I - Name of service/device */
-    const char          *regtype,      /* I - Type of service */
-    const char          *replyDomain,  /* I - Service domain */
-    void                *context)      /* I - Devices array */
-{
-#ifdef DEBUG
-  fprintf(stderr, "browse_callback(sdRef=%p, flags=%x, "
-                  "interfaceIndex=%d, errorCode=%d, serviceName=\"%s\", "
-                 "regtype=\"%s\", replyDomain=\"%s\", context=%p)\n",
-          sdRef, flags, interfaceIndex, errorCode,
-         serviceName ? serviceName : "(null)",
-         regtype ? regtype : "(null)",
-         replyDomain ? replyDomain : "(null)",
-         context);
-#endif /* DEBUG */
-
- /*
-  * Only process "add" data...
-  */
-
-  if (errorCode != kDNSServiceErr_NoError || !(flags & kDNSServiceFlagsAdd))
-    return;
-
- /*
-  * Get the device...
-  */
-
-  get_device((cups_array_t *)context, serviceName, regtype, replyDomain);
-}
-
-
-/*
- * 'compare_devices()' - Compare two devices.
- */
-
-static int                             /* O - Result of comparison */
-compare_devices(cups_device_t *a,      /* I - First device */
-                cups_device_t *b)      /* I - Second device */
-{
-  int retval = strcmp(a->name, b->name);
-
-  if (retval)
-    return (retval);
-  else
-    return (-strcmp(a->regtype, b->regtype));
-}
-
-
-/*
- * 'get_device()' - Create or update a device.
- */
-
-static cups_device_t *                 /* O - Device */
-get_device(cups_array_t *devices,      /* I - Device array */
-           const char   *serviceName,  /* I - Name of service/device */
-           const char   *regtype,      /* I - Type of service */
-           const char   *replyDomain)  /* I - Service domain */
-{
-  cups_device_t        key,                    /* Search key */
-               *device;                /* Device */
-  char         fullName[kDNSServiceMaxDomainName];
-                                       /* Full name for query */
-
-
- /*
-  * See if this is a new device...
-  */
-
-  key.name    = (char *)serviceName;
-  key.regtype = (char *)regtype;
-
-  for (device = cupsArrayFind(devices, &key);
-       device;
-       device = cupsArrayNext(devices))
-    if (strcasecmp(device->name, key.name))
-      break;
-    else
-    {
-      if (!strcasecmp(device->domain, "local.") &&
-          strcasecmp(device->domain, replyDomain))
-      {
-       /*
-        * Update the .local listing to use the "global" domain name instead.
-       * The backend will try local lookups first, then the global domain name.
-       */
-
-        free(device->domain);
-       device->domain = strdup(replyDomain);
-
-       DNSServiceConstructFullName(fullName, device->name, regtype,
-                                   replyDomain);
-       free(device->fullName);
-       device->fullName = strdup(fullName);
-      }
-
-      return (device);
-    }
-
- /*
-  * Yes, add the device...
-  */
-
-  device          = calloc(sizeof(cups_device_t), 1);
-  device->name    = strdup(serviceName);
-  device->domain  = strdup(replyDomain);
-  device->regtype = strdup(regtype);
-
-  cupsArrayAdd(devices, device);
-
- /*
-  * Set the "full name" of this service, which is used for queries...
-  */
-
-  DNSServiceConstructFullName(fullName, serviceName, regtype, replyDomain);
-  device->fullName = strdup(fullName);
-
-#ifdef DEBUG
-  fprintf(stderr, "get_device: fullName=\"%s\"...\n", fullName);
-#endif /* DEBUG */
-
-  return (device);
-}
-
-
-/*
- * 'progress()' - Show query progress.
- */
-
-static void
-progress(void)
-{
-#ifndef DEBUG
-  const char   *chars = "|/-\\";
-  static int   count = 0;
-
-
-  fprintf(stderr, "\rLooking for printers %c", chars[count]);
-  fflush(stderr);
-  count = (count + 1) & 3;
-#endif /* !DEBUG */
-}
-
-
-/*
- * 'resolve_callback()' - Process resolve data.
- */
-
-static void
-resolve_callback(
-    DNSServiceRef       sdRef,         /* I - Service reference */
-    DNSServiceFlags     flags,         /* I - Data flags */
-    uint32_t            interfaceIndex,        /* I - Interface */
-    DNSServiceErrorType errorCode,     /* I - Error, if any */
-    const char          *fullName,     /* I - Full service name */
-    const char          *hostTarget,   /* I - Hostname */
-    uint16_t            port,          /* I - Port number (network byte order) */
-    uint16_t            txtLen,                /* I - Length of TXT record data */
-    const unsigned char *txtRecord,    /* I - TXT record data */
-    void                *context)      /* I - Device */
-{
-  char         temp[257],              /* TXT key value */
-               uri[1024];              /* Printer URI */
-  const void   *value;                 /* Value from TXT record */
-  uint8_t      valueLen;               /* Length of value */
-  cups_device_t        *device = (cups_device_t *)context;
-                                       /* Device */
-
-
-#ifdef DEBUG
-  fprintf(stderr, "\rresolve_callback(sdRef=%p, flags=%x, "
-                  "interfaceIndex=%d, errorCode=%d, fullName=\"%s\", "
-                 "hostTarget=\"%s\", port=%d, txtLen=%u, txtRecord=%p, "
-                 "context=%p)\n",
-          sdRef, flags, interfaceIndex, errorCode,
-         fullName ? fullName : "(null)", hostTarget ? hostTarget : "(null)",
-         ntohs(port), txtLen, txtRecord, context);
-#endif /* DEBUG */
-
- /*
-  * Only process "add" data...
-  */
-
-  if (errorCode != kDNSServiceErr_NoError)
-    return;
-
-  device->got_resolve = 1;
-  device->host        = strdup(hostTarget);
-  device->port        = ntohs(port);
-
- /*
-  * Extract the "remote printer" key from the TXT record and save the URI...
-  */
-
-  if ((value = TXTRecordGetValuePtr(txtLen, txtRecord, "rp",
-                                    &valueLen)) != NULL)
-  {
-    if (((char *)value)[0] == '/')
-    {
-     /*
-      * "rp" value (incorrectly) has a leading slash already...
-      */
-
-      memcpy(temp, value, valueLen);
-      temp[valueLen] = '\0';
-    }
-    else
-    {
-     /*
-      * Convert to resource by concatenating with a leading "/"...
-      */
-
-      temp[0] = '/';
-      memcpy(temp + 1, value, valueLen);
-      temp[valueLen + 1] = '\0';
-    }
-  }
-  else
-  {
-   /*
-    * Default "rp" value is blank, mapping to a path of "/"...
-    */
-
-    temp[0] = '/';
-    temp[1] = '\0';
-  }
-
-  if (!strncmp(temp, "/printers/", 10))
-    device->cups_shared = -1;
-
-  httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp",
-                  NULL, hostTarget, ntohs(port), temp);
-  device->uri = strdup(uri);
-  device->rp  = strdup(temp);
-
-  if ((value = TXTRecordGetValuePtr(txtLen, txtRecord, "ty",
-                                    &valueLen)) != NULL)
-  {
-    memcpy(temp, value, valueLen);
-    temp[valueLen] = '\0';
-
-    device->ty = strdup(temp);
-  }
-
-  if ((value = TXTRecordGetValuePtr(txtLen, txtRecord, "pdl",
-                                    &valueLen)) != NULL)
-  {
-    memcpy(temp, value, valueLen);
-    temp[valueLen] = '\0';
-
-    device->pdl = strdup(temp);
-  }
-
-  if ((value = TXTRecordGetValuePtr(txtLen, txtRecord, "printer-type",
-                                    &valueLen)) != NULL)
-    device->cups_shared = 1;
-
-  if (device->cups_shared)
-    fprintf(stderr, "\rIgnoring CUPS printer %s\n", uri);
-  else
-    fprintf(stderr, "\rFound IPP printer %s\n", uri);
-
-  progress();
-}
-
-
-/*
- * 'unquote()' - Unquote a name string.
- */
-
-static void
-unquote(char       *dst,               /* I - Destination buffer */
-        const char *src,               /* I - Source string */
-       size_t     dstsize)             /* I - Size of destination buffer */
-{
-  char *dstend = dst + dstsize - 1;    /* End of destination buffer */
-
-
-  while (*src && dst < dstend)
-  {
-    if (*src == '\\')
-    {
-      src ++;
-      if (isdigit(src[0] & 255) && isdigit(src[1] & 255) &&
-          isdigit(src[2] & 255))
-      {
-        *dst++ = ((((src[0] - '0') * 10) + src[1] - '0') * 10) + src[2] - '0';
-       src += 3;
-      }
-      else
-        *dst++ = *src++;
-    }
-    else
-      *dst++ = *src ++;
-  }
-
-  *dst = '\0';
-}
-
-
-/*
- * 'usage()' - Show program usage and exit.
- */
-
-static void
-usage(void)
-{
-  _cupsLangPuts(stdout, _("Usage: ippdiscover [options] -a\n"
-                          "       ippdiscover [options] \"service name\"\n"
-                          "\n"
-                          "Options:"));
-  _cupsLangPuts(stdout, _("  -a                      Browse for all services."));
-  _cupsLangPuts(stdout, _("  -d domain               Browse/resolve in specified domain."));
-  _cupsLangPuts(stdout, _("  -p program              Run specified program for each service."));
-  _cupsLangPuts(stdout, _("  -t type                 Browse/resolve with specified type."));
-
-  exit(0);
-}
-
-
-/*
- * End of "$Id: ippdiscover.c 10983 2013-05-13 23:57:32Z msweet $".
- */
index 78b608e..b4a0ce2 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ippfind.c 12638 2015-05-19 02:36:15Z msweet $"
- *
  * Utility to find IPP printers via Bonjour/DNS-SD and optionally run
  * commands such as IPP and Bonjour conformance tests.  This tool is
  * inspired by the UNIX "find" command, thus its name.
@@ -2840,8 +2838,3 @@ show_version(void)
 
   exit(IPPFIND_EXIT_TRUE);
 }
-
-
-/*
- * End of "$Id: ippfind.c 12638 2015-05-19 02:36:15Z msweet $".
- */
diff --git a/test/ippinfra.c b/test/ippinfra.c
deleted file mode 100644 (file)
index 0a4a367..0000000
+++ /dev/null
@@ -1,7125 +0,0 @@
-/*
- * "$Id: ippinfra.c 12237 2014-11-03 13:07:32Z msweet $"
- *
- * Sample IPP INFRA server for CUPS.
- *
- * Copyright 2010-2014 by Apple Inc.
- *
- * These coded instructions, statements, and computer programs are the
- * property of Apple Inc. and are protected by Federal copyright
- * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- * which should have been included with this file.  If this file is
- * file is missing or damaged, see the license at "http://www.cups.org/".
- *
- * This file is subject to the Apple OS-Developed Software exception.
- */
-
-/*
- * Disable private and deprecated stuff so we can verify that the public API
- * is sufficient to implement a server.
- */
-
-#define _IPP_PRIVATE_STRUCTURES 0      /* Disable private IPP stuff */
-#define _CUPS_NO_DEPRECATED 1          /* Disable deprecated stuff */
-
-
-/*
- * Include necessary headers...
- */
-
-#include <config.h>                    /* CUPS configuration header */
-#include <cups/cups.h>                 /* Public API */
-#include <cups/string-private.h>       /* CUPS string functions */
-#include <cups/thread-private.h>       /* For multithreading functions */
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-#include <sys/stat.h>
-
-#ifdef WIN32
-#  include <fcntl.h>
-#  include <io.h>
-#  include <process.h>
-#  define WEXITSTATUS(s) (s)
-#  include <winsock2.h>
-typedef ULONG nfds_t;
-#  define poll WSAPoll
-#else
-extern char **environ;
-
-#  include <sys/fcntl.h>
-#  include <sys/wait.h>
-#  include <poll.h>
-#endif /* WIN32 */
-
-#ifdef HAVE_SYS_MOUNT_H
-#  include <sys/mount.h>
-#endif /* HAVE_SYS_MOUNT_H */
-#ifdef HAVE_SYS_STATFS_H
-#  include <sys/statfs.h>
-#endif /* HAVE_SYS_STATFS_H */
-#ifdef HAVE_SYS_STATVFS_H
-#  include <sys/statvfs.h>
-#endif /* HAVE_SYS_STATVFS_H */
-#ifdef HAVE_SYS_VFS_H
-#  include <sys/vfs.h>
-#endif /* HAVE_SYS_VFS_H */
-
-#ifdef HAVE_PTHREAD_H
-typedef pthread_cond_t _cups_cond_t;
-#  define _CUPS_COND_INITIALIZER PTHREAD_COND_INITIALIZER
-#  define _cupsCondBroadcast(c) pthread_cond_broadcast(c)
-#  define _cupsCondDeinit(c)   pthread_cond_destroy(c)
-#  define _cupsCondInit(c)     pthread_cond_init((c), NULL)
-#  define _cupsCondWait(c,m)   pthread_cond_wait((c),(m))
-#  define _cupsMutexDeinit(m)  pthread_mutex_destroy(m)
-#  define _cupsRWDeinit(rw)    pthread_rwlock_destroy(rw)
-#else
-typedef char _cups_cond_t;
-#  define _CUPS_COND_INITIALIZER 0
-#  define _cupsCondBroadcast(c)
-#  define _cupsCondDeinit(c)
-#  define _cupsCondInit(c)     *(c)=0
-#  define _cupsCondWait(c,m)   0
-#  define _cupsMutexDeinit(m)
-#  define _cupsRWDeinit(rw)
-#endif /* HAVE_PTHREAD_H */
-
-
-/*
- * Constants...
- */
-
-/* New IPP operation codes from IPP INFRA */
-#  define _IPP_OP_ACKNOWLEDGE_DOCUMENT                 (ipp_op_t)0x003f
-#  define _IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER         (ipp_op_t)0x0040
-#  define _IPP_OP_ACKNOWLEDGE_JOB                      (ipp_op_t)0x0041
-#  define _IPP_OP_FETCH_DOCUMENT                       (ipp_op_t)0x0042
-#  define _IPP_OP_FETCH_JOB                            (ipp_op_t)0x0043
-#  define _IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES         (ipp_op_t)0x0044
-#  define _IPP_OP_UPDATE_ACTIVE_JOBS                   (ipp_op_t)0x0045
-#  define _IPP_OP_UPDATE_DOCUMENT_STATUS               (ipp_op_t)0x0047
-#  define _IPP_OP_UPDATE_JOB_STATUS                    (ipp_op_t)0x0048
-#  define _IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES      (ipp_op_t)0x0049
-#  define _IPP_OP_DEREGISTER_OUTPUT_DEVICE             (ipp_op_t)0x204b
-
-/* New IPP status code from IPP INFRA */
-#  define _IPP_STATUS_ERROR_NOT_FETCHABLE              (ipp_status_t)0x0420
-
-/* Maximum lease duration value from RFC 3995 - 2^26-1 or ~2 years */
-#  define _IPP_NOTIFY_LEASE_DURATION_MAX               67108863
-/* But a value of 0 means "never expires"... */
-#  define _IPP_NOTIFY_LEASE_DURATION_FOREVER           0
-/* Default duration is 1 day */
-#  define _IPP_NOTIFY_LEASE_DURATION_DEFAULT           86400
-
-
-/*
- * Event mask enumeration...
- */
-
-enum _ipp_event_e                      /* notify-events bit values */
-{
-  _IPP_EVENT_DOCUMENT_COMPLETED = 0x00000001,
-  _IPP_EVENT_DOCUMENT_CONFIG_CHANGED = 0x00000002,
-  _IPP_EVENT_DOCUMENT_CREATED = 0x00000004,
-  _IPP_EVENT_DOCUMENT_FETCHABLE = 0x00000008,
-  _IPP_EVENT_DOCUMENT_STATE_CHANGED = 0x00000010,
-  _IPP_EVENT_DOCUMENT_STOPPED = 0x00000020,
-  _IPP_EVENT_JOB_COMPLETED = 0x00000040,
-  _IPP_EVENT_JOB_CONFIG_CHANGED = 0x00000080,
-  _IPP_EVENT_JOB_CREATED = 0x00000100,
-  _IPP_EVENT_JOB_FETCHABLE = 0x00000200,
-  _IPP_EVENT_JOB_PROGRESS = 0x00000400,
-  _IPP_EVENT_JOB_STATE_CHANGED = 0x00000800,
-  _IPP_EVENT_JOB_STOPPED = 0x00001000,
-  _IPP_EVENT_PRINTER_CONFIG_CHANGED = 0x00002000,
-  _IPP_EVENT_PRINTER_FINISHINGS_CHANGED = 0x00004000,
-  _IPP_EVENT_PRINTER_MEDIA_CHANGED = 0x00008000,
-  _IPP_EVENT_PRINTER_QUEUE_ORDER_CHANGED = 0x00010000,
-  _IPP_EVENT_PRINTER_RESTARTED = 0x00020000,
-  _IPP_EVENT_PRINTER_SHUTDOWN = 0x00040000,
-  _IPP_EVENT_PRINTER_STATE_CHANGED = 0x00080000,
-  _IPP_EVENT_PRINTER_STOPPED = 0x00100000,
-
-  /* "Wildcard" values... */
-  _IPP_EVENT_NONE = 0x00000000,                /* Nothing */
-  _IPP_EVENT_DOCUMENT_ALL = 0x0000003f,
-  _IPP_EVENT_DOCUMENT_STATE_ALL = 0x00000037,
-  _IPP_EVENT_JOB_ALL = 0x00001fc0,
-  _IPP_EVENT_JOB_STATE_ALL = 0x00001940,
-  _IPP_EVENT_PRINTER_ALL = 0x001fe000,
-  _IPP_EVENT_PRINTER_CONFIG_ALL = 0x0000e000,
-  _IPP_EVENT_PRINTER_STATE_ALL = 0x001e0000,
-  _IPP_EVENT_ALL = 0x001fffff          /* Everything */
-};
-typedef unsigned int _ipp_event_t;     /* Bitfield for notify-events */
-#define _IPP_EVENT_DEFAULT _IPP_EVENT_JOB_COMPLETED
-#define _IPP_EVENT_DEFAULT_STRING "job-completed"
-static const char * const _ipp_events[] =
-{                                      /* Strings for bits */
-  "document-completed",
-  "document-config-changed",
-  "document-created",
-  "document-fetchable",
-  "document-state-changed",
-  "document-stopped",
-  "job-completed",
-  "job-config-changed",
-  "job-created",
-  "job-fetchable",
-  "job-progress",
-  "job-state-changed",
-  "job-stopped",
-  "printer-config-changed",
-  "printer-finishings-changed",
-  "printer-media-changed",
-  "printer-queue-order-changed",
-  "printer-restarted",
-  "printer-shutdown",
-  "printer-state-changed",
-  "printer-stopped"
-};
-
-enum _ipp_jreason_e                    /* job-state-reasons bit values */
-{
-  _IPP_JREASON_NONE = 0x00000000,      /* none */
-  _IPP_JREASON_ABORTED_BY_SYSTEM = 0x00000001,
-  _IPP_JREASON_COMPRESSION_ERROR = 0x00000002,
-  _IPP_JREASON_DOCUMENT_ACCESS_ERROR = 0x00000004,
-  _IPP_JREASON_DOCUMENT_FORMAT_ERROR = 0x00000008,
-  _IPP_JREASON_DOCUMENT_PASSWORD_ERROR = 0x00000010,
-  _IPP_JREASON_DOCUMENT_PERMISSION_ERROR = 0x00000020,
-  _IPP_JREASON_DOCUMENT_SECURITY_ERROR = 0x00000040,
-  _IPP_JREASON_DOCUMENT_UNPRINTABLE_ERROR = 0x00000080,
-  _IPP_JREASON_ERRORS_DETECTED = 0x00000100,
-  _IPP_JREASON_JOB_CANCELED_AT_DEVICE = 0x00000200,
-  _IPP_JREASON_JOB_CANCELED_BY_USER = 0x00000400,
-  _IPP_JREASON_JOB_COMPLETED_SUCCESSFULLY = 0x00000800,
-  _IPP_JREASON_JOB_COMPLETED_WITH_ERRORS = 0x00001000,
-  _IPP_JREASON_JOB_COMPLETED_WITH_WARNINGS = 0x00002000,
-  _IPP_JREASON_JOB_DATA_INSUFFICIENT = 0x00004000,
-  _IPP_JREASON_JOB_FETCHABLE = 0x00008000,
-  _IPP_JREASON_JOB_INCOMING = 0x00010000,
-  _IPP_JREASON_JOB_PASSWORD_WAIT = 0x00020000,
-  _IPP_JREASON_JOB_PRINTING = 0x00040000,
-  _IPP_JREASON_JOB_QUEUED = 0x00080000,
-  _IPP_JREASON_JOB_SPOOLING = 0x00100000,
-  _IPP_JREASON_JOB_STOPPED = 0x00200000,
-  _IPP_JREASON_JOB_TRANSFORMING = 0x00400000,
-  _IPP_JREASON_PRINTER_STOPPED = 0x00800000,
-  _IPP_JREASON_PRINTER_STOPPED_PARTLY = 0x01000000,
-  _IPP_JREASON_PROCESSING_TO_STOP_POINT = 0x02000000,
-  _IPP_JREASON_QUEUED_IN_DEVICE = 0x04000000,
-  _IPP_JREASON_WARNINGS_DETECTED = 0x08000000
-};
-typedef unsigned int _ipp_jreason_t;   /* Bitfield for job-state-reasons */
-static const char * const _ipp_jreasons[] =
-{                                      /* Strings for bits */
-  "aborted-by-system",
-  "compression-error",
-  "document-access-error",
-  "document-format-error",
-  "document-password-error",
-  "document-permission-error",
-  "document-security-error",
-  "document-unprintable-error",
-  "errors-detected",
-  "job-canceled-at-device",
-  "job-canceled-by-user",
-  "job-completed-successfully",
-  "job-completed-with-errors",
-  "job-completed-with-warnings",
-  "job-data-insufficient",
-  "job-fetchable",
-  "job-incoming",
-  "job-password-wait",
-  "job-printing",
-  "job-queued",
-  "job-spooling",
-  "job-stopped",
-  "job-transforming",
-  "printer-stopped",
-  "printer-stopped-partly",
-  "processing-to-stop-point",
-  "queued-in-device",
-  "warnings-detected"
-};
-
-enum _ipp_preason_e                    /* printer-state-reasons bit values */
-{
-  _IPP_PREASON_NONE = 0x0000,          /* none */
-  _IPP_PREASON_OTHER = 0x0001,         /* other */
-  _IPP_PREASON_COVER_OPEN = 0x0002,    /* cover-open */
-  _IPP_PREASON_INPUT_TRAY_MISSING = 0x0004,
-                                       /* input-tray-missing */
-  _IPP_PREASON_MARKER_SUPPLY_EMPTY = 0x0008,
-                                       /* marker-supply-empty */
-  _IPP_PREASON_MARKER_SUPPLY_LOW = 0x0010,
-                                       /* marker-supply-low */
-  _IPP_PREASON_MARKER_WASTE_ALMOST_FULL = 0x0020,
-                                       /* marker-waste-almost-full */
-  _IPP_PREASON_MARKER_WASTE_FULL = 0x0040,
-                                       /* marker-waste-full */
-  _IPP_PREASON_MEDIA_EMPTY = 0x0080,   /* media-empty */
-  _IPP_PREASON_MEDIA_JAM = 0x0100,     /* media-jam */
-  _IPP_PREASON_MEDIA_LOW = 0x0200,     /* media-low */
-  _IPP_PREASON_MEDIA_NEEDED = 0x0400,  /* media-needed */
-  _IPP_PREASON_MOVING_TO_PAUSED = 0x0800,
-                                       /* moving-to-paused */
-  _IPP_PREASON_PAUSED = 0x1000,                /* paused */
-  _IPP_PREASON_SPOOL_AREA_FULL = 0x2000,/* spool-area-full */
-  _IPP_PREASON_TONER_EMPTY = 0x4000,   /* toner-empty */
-  _IPP_PREASON_TONER_LOW = 0x8000      /* toner-low */
-};
-typedef unsigned int _ipp_preason_t;   /* Bitfield for printer-state-reasons */
-static const char * const _ipp_preasons[] =
-{                                      /* Strings for bits */
-  "other",
-  "cover-open",
-  "input-tray-missing",
-  "marker-supply-empty",
-  "marker-supply-low",
-  "marker-waste-almost-full",
-  "marker-waste-full",
-  "media-empty",
-  "media-jam",
-  "media-low",
-  "media-needed",
-  "moving-to-paused",
-  "paused",
-  "spool-area-full",
-  "toner-empty",
-  "toner-low"
-};
-
-
-/*
- * Structures...
- */
-
-typedef struct _ipp_filter_s           /**** Attribute filter ****/
-{
-  cups_array_t         *ra;            /* Requested attributes */
-  ipp_tag_t            group_tag;      /* Group to copy */
-} _ipp_filter_t;
-
-typedef struct _ipp_job_s _ipp_job_t;
-
-typedef struct _ipp_device_s           /**** Output Device data ****/
-{
-  _cups_rwlock_t       rwlock;         /* Printer lock */
-  char                 *name,          /* printer-name (mapped to output-device) */
-                       *uuid;          /* output-device-uuid */
-  ipp_t                        *attrs;         /* All printer attributes */
-  ipp_pstate_t         state;          /* printer-state value */
-  _ipp_preason_t       reasons;        /* printer-state-reasons values */
-} _ipp_device_t;
-
-typedef struct _ipp_printer_s          /**** Printer data ****/
-{
-  _cups_rwlock_t       rwlock;         /* Printer lock */
-  int                  ipv4,           /* IPv4 listener */
-                       ipv6;           /* IPv6 listener */
-  char                 *name,          /* printer-name */
-                       *directory,     /* Spool directory */
-                       *hostname,      /* Hostname */
-                       *uri,           /* printer-uri-supported */
-                       *proxy_user,    /* Proxy username */
-                       *proxy_pass;    /* Proxy password */
-  int                  port;           /* Port */
-  size_t               urilen;         /* Length of printer URI */
-  cups_array_t         *devices;       /* Associated devices */
-  ipp_t                        *attrs;         /* Static attributes */
-  ipp_t                        *dev_attrs;     /* Current device attributes */
-  time_t               start_time;     /* Startup time */
-  time_t               config_time;    /* printer-config-change-time */
-  ipp_pstate_t         state,          /* printer-state value */
-                       dev_state;      /* Current device printer-state value */
-  _ipp_preason_t       state_reasons,  /* printer-state-reasons values */
-                       dev_reasons;    /* Current device printer-state-reasons values */
-  time_t               state_time;     /* printer-state-change-time */
-  cups_array_t         *jobs,          /* Jobs */
-                       *active_jobs,   /* Active jobs */
-                       *completed_jobs;/* Completed jobs */
-  _ipp_job_t           *processing_job;/* Current processing job */
-  int                  next_job_id;    /* Next job-id value */
-  cups_array_t         *subscriptions; /* Subscriptions */
-  int                  next_sub_id;    /* Next notify-subscription-id value */
-} _ipp_printer_t;
-
-struct _ipp_job_s                      /**** Job data ****/
-{
-  int                  id;             /* job-id */
-  _cups_rwlock_t       rwlock;         /* Job lock */
-  const char           *name,          /* job-name */
-                       *username,      /* job-originating-user-name */
-                       *format;        /* document-format */
-  int                  priority;       /* job-priority */
-  char                 *dev_uuid;      /* output-device-uuid-assigned */
-  ipp_jstate_t         state,          /* job-state value */
-                       dev_state;      /* output-device-job-state value */
-  _ipp_jreason_t       state_reasons,  /* job-state-reasons values */
-                       dev_state_reasons;
-                                       /* output-device-job-state-reasons values */
-  char                 *dev_state_message;
-                                       /* output-device-job-state-message value */
-  time_t               created,        /* time-at-creation value */
-                       processing,     /* time-at-processing value */
-                       completed;      /* time-at-completed value */
-  int                  impressions,    /* job-impressions value */
-                       impcompleted;   /* job-impressions-completed value */
-  ipp_t                        *attrs;         /* Attributes */
-  int                  cancel;         /* Non-zero when job canceled */
-  char                 *filename;      /* Print file name */
-  int                  fd;             /* Print file descriptor */
-  _ipp_printer_t       *printer;       /* Printer */
-};
-
-typedef struct _ipp_subscription_s     /**** Subscription data ****/
-{
-  int                  id;             /* notify-subscription-id */
-  const char           *uuid;          /* notify-subscription-uuid */
-  _cups_rwlock_t       rwlock;         /* Subscription lock */
-  _ipp_event_t         mask;           /* Event mask */
-  _ipp_printer_t       *printer;       /* Printer */
-  _ipp_job_t           *job;           /* Job, if any */
-  ipp_t                        *attrs;         /* Attributes */
-  const char           *username;      /* notify-subscriber-user-name */
-  int                  lease;          /* notify-lease-duration */
-  int                  interval;       /* notify-time-interval */
-  time_t               expire;         /* Lease expiration time */
-  int                  first_sequence, /* First notify-sequence-number in cache */
-                       last_sequence;  /* Last notify-sequence-number used */
-  cups_array_t         *events;        /* Events (ipp_t *'s) */
-  int                  pending_delete; /* Non-zero when the subscription is about to be deleted/canceled */
-} _ipp_subscription_t;
-
-typedef struct _ipp_client_s           /**** Client data ****/
-{
-  http_t               *http;          /* HTTP connection */
-  ipp_t                        *request,       /* IPP request */
-                       *response;      /* IPP response */
-  time_t               start;          /* Request start time */
-  http_state_t         operation;      /* Request operation */
-  ipp_op_t             operation_id;   /* IPP operation-id */
-  char                 uri[1024],      /* Request URI */
-                       *options;       /* URI options */
-  http_addr_t          addr;           /* Client address */
-  char                 hostname[256],  /* Client hostname */
-                       username[32];   /* Client authenticated username */
-  _ipp_printer_t       *printer;       /* Printer */
-  _ipp_job_t           *job;           /* Current job, if any */
-  int                  fetch_compression,
-                                       /* Compress file? */
-                       fetch_file;     /* File to fetch */
-} _ipp_client_t;
-
-
-/*
- * Local functions...
- */
-
-static void            add_event(_ipp_printer_t *printer, _ipp_job_t *job, _ipp_event_t event, const char *message, ...) __attribute__((__format__(__printf__, 4, 5)));
-static void            check_jobs(_ipp_printer_t *printer);
-static void            clean_jobs(_ipp_printer_t *printer);
-static int             compare_active_jobs(_ipp_job_t *a, _ipp_job_t *b);
-static int             compare_completed_jobs(_ipp_job_t *a, _ipp_job_t *b);
-static int             compare_devices(_ipp_device_t *a, _ipp_device_t *b);
-static int             compare_jobs(_ipp_job_t *a, _ipp_job_t *b);
-static void            copy_attributes(ipp_t *to, ipp_t *from, cups_array_t *ra,
-                                       ipp_tag_t group_tag, int quickcopy);
-static void            copy_job_attributes(_ipp_client_t *client,
-                                           _ipp_job_t *job, cups_array_t *ra);
-static void            copy_job_state_reasons(ipp_t *ipp, ipp_tag_t group_tag, _ipp_job_t *job);
-static void            copy_printer_state_reasons(ipp_t *ipp, ipp_tag_t group_tag, _ipp_printer_t *printer);
-static void            copy_subscription_attributes(_ipp_client_t *client, _ipp_subscription_t *sub, cups_array_t *ra);
-static _ipp_client_t   *create_client(_ipp_printer_t *printer, int sock);
-static _ipp_device_t   *create_device(_ipp_client_t *client);
-static _ipp_job_t      *create_job(_ipp_client_t *client);
-static void            create_job_filename(_ipp_printer_t *printer, _ipp_job_t *job, const char *format, char *fname, size_t fnamesize);
-static int             create_listener(int family, int port);
-static _ipp_subscription_t *create_subscription(_ipp_printer_t *printer, _ipp_job_t *job, int interval, int lease, const char *username, ipp_attribute_t *notify_events, ipp_attribute_t *notify_attributes, ipp_attribute_t *notify_user_data);
-static _ipp_printer_t  *create_printer(const char *servername, int port, const char *name, const char *directory, const char *proxy_user, const char *proxy_pass);
-static void            debug_attributes(const char *title, ipp_t *ipp,
-                                        int response);
-static void            delete_client(_ipp_client_t *client);
-static void            delete_device(_ipp_device_t *device);
-static void            delete_job(_ipp_job_t *job);
-static void            delete_printer(_ipp_printer_t *printer);
-static void            delete_subscription(_ipp_subscription_t *sub);
-static int             filter_cb(_ipp_filter_t *filter, ipp_t *dst, ipp_attribute_t *attr);
-static _ipp_device_t   *find_device(_ipp_client_t *client);
-static _ipp_job_t      *find_job(_ipp_client_t *client, int job_id);
-static _ipp_subscription_t *find_subscription(_ipp_client_t *client, int sub_id);
-static _ipp_jreason_t  get_job_state_reasons_bits(ipp_attribute_t *attr);
-static _ipp_event_t    get_notify_events_bits(ipp_attribute_t *attr);
-static const char      *get_notify_subscribed_event(_ipp_event_t event);
-static _ipp_preason_t  get_printer_state_reasons_bits(ipp_attribute_t *attr);
-static void            html_escape(_ipp_client_t *client, const char *s,
-                                   size_t slen);
-static void            html_footer(_ipp_client_t *client);
-static void            html_header(_ipp_client_t *client, const char *title);
-static void            html_printf(_ipp_client_t *client, const char *format, ...) __attribute__((__format__(__printf__, 2, 3)));
-static void            ipp_acknowledge_document(_ipp_client_t *client);
-static void            ipp_acknowledge_identify_printer(_ipp_client_t *client);
-static void            ipp_acknowledge_job(_ipp_client_t *client);
-static void            ipp_cancel_job(_ipp_client_t *client);
-static void            ipp_cancel_my_jobs(_ipp_client_t *client);
-static void            ipp_cancel_subscription(_ipp_client_t *client);
-static void            ipp_close_job(_ipp_client_t *client);
-static void            ipp_create_job(_ipp_client_t *client);
-static void            ipp_create_xxx_subscriptions(_ipp_client_t *client);
-static void            ipp_deregister_output_device(_ipp_client_t *client);
-static void            ipp_fetch_document(_ipp_client_t *client);
-static void            ipp_fetch_job(_ipp_client_t *client);
-static void            ipp_get_document_attributes(_ipp_client_t *client);
-static void            ipp_get_documents(_ipp_client_t *client);
-static void            ipp_get_job_attributes(_ipp_client_t *client);
-static void            ipp_get_jobs(_ipp_client_t *client);
-static void            ipp_get_notifications(_ipp_client_t *client);
-static void            ipp_get_output_device_attributes(_ipp_client_t *client);
-static void            ipp_get_printer_attributes(_ipp_client_t *client);
-static void            ipp_get_printer_supported_values(_ipp_client_t *client);
-static void            ipp_get_subscription_attributes(_ipp_client_t *client);
-static void            ipp_get_subscriptions(_ipp_client_t *client);
-static void            ipp_identify_printer(_ipp_client_t *client);
-static void            ipp_print_job(_ipp_client_t *client);
-static void            ipp_print_uri(_ipp_client_t *client);
-static void            ipp_renew_subscription(_ipp_client_t *client);
-static void            ipp_send_document(_ipp_client_t *client);
-static void            ipp_send_uri(_ipp_client_t *client);
-static void            ipp_update_active_jobs(_ipp_client_t *client);
-static void            ipp_update_document_status(_ipp_client_t *client);
-static void            ipp_update_job_status(_ipp_client_t *client);
-static void            ipp_update_output_device_attributes(_ipp_client_t *client);
-static void            ipp_validate_document(_ipp_client_t *client);
-static void            ipp_validate_job(_ipp_client_t *client);
-//static int           parse_options(_ipp_client_t *client, cups_option_t **options);
-static void            *process_client(_ipp_client_t *client);
-static int             process_http(_ipp_client_t *client);
-static int             process_ipp(_ipp_client_t *client);
-static void            *process_job(_ipp_job_t *job);
-static int             respond_http(_ipp_client_t *client, http_status_t code,
-                                    const char *content_coding,
-                                    const char *type, size_t length);
-static void            respond_ipp(_ipp_client_t *client, ipp_status_t status,
-                                   const char *message, ...)
-                       __attribute__ ((__format__ (__printf__, 3, 4)));
-static void            respond_unsupported(_ipp_client_t *client,
-                                           ipp_attribute_t *attr);
-static void            run_printer(_ipp_printer_t *printer);
-static char            *time_string(time_t tv, char *buffer, size_t bufsize);
-static void            update_device_attributes_no_lock(_ipp_printer_t *printer);
-static void            update_device_state_no_lock(_ipp_printer_t *printer);
-static void            usage(int status) __attribute__((noreturn));
-static int             valid_doc_attributes(_ipp_client_t *client);
-static int             valid_job_attributes(_ipp_client_t *client);
-
-
-/*
- * Globals...
- */
-
-static int             KeepFiles = 0,
-                       Verbosity = 0;
-//static _cups_mutex_t SubscriptionMutex = _CUPS_MUTEX_INITIALIZER;
-static _cups_cond_t    SubscriptionCondition = _CUPS_COND_INITIALIZER;
-
-
-/*
- * 'main()' - Main entry to the sample infrastructure server.
- */
-
-int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line args */
-     char *argv[])                     /* I - Command-line arguments */
-{
-  int          i;                      /* Looping var */
-  const char   *opt,                   /* Current option character */
-               *servername = NULL,     /* Server host name */
-               *name = NULL;           /* Printer name */
-#ifdef HAVE_SSL
-  const char   *keypath = NULL;        /* Keychain path */
-#endif /* HAVE_SSL */
-  int          port = 0;               /* Port number (0 = auto) */
-  char         directory[1024] = "",   /* Spool directory */
-               hostname[1024],         /* Auto-detected hostname */
-               proxy_user[256] = "",   /* Proxy username */
-               *proxy_pass = NULL;     /* Proxy password */
-  _ipp_printer_t *printer;             /* Printer object */
-
-
- /*
-  * Parse command-line arguments...
-  */
-
-  for (i = 1; i < argc; i ++)
-    if (argv[i][0] == '-')
-    {
-      for (opt = argv[i] + 1; *opt; opt ++)
-      {
-        switch (*opt)
-       {
-#ifdef HAVE_SSL
-         case 'K' : /* -K keypath */
-             i ++;
-             if (i >= argc)
-               usage(1);
-             keypath = argv[i];
-             break;
-#endif /* HAVE_SSL */
-
-         case 'd' : /* -d spool-directory */
-             i ++;
-             if (i >= argc)
-               usage(1);
-             strlcpy(directory, argv[i], sizeof(directory));
-             break;
-
-          case 'h' : /* -h (show help) */
-             usage(0);
-
-         case 'k' : /* -k (keep files) */
-             KeepFiles = 1;
-             break;
-
-         case 'n' : /* -n hostname */
-             i ++;
-             if (i >= argc)
-               usage(1);
-             servername = argv[i];
-             break;
-
-         case 'p' : /* -p port */
-             i ++;
-             if (i >= argc || !isdigit(argv[i][0] & 255))
-               usage(1);
-             port = atoi(argv[i]);
-             break;
-
-          case 'u' : /* -u user:pass */
-             i ++;
-             if (i >= argc)
-               usage(1);
-             strlcpy(proxy_user, argv[i], sizeof(proxy_user));
-             if ((proxy_pass = strchr(proxy_user, ':')) != NULL)
-               *proxy_pass++ = '\0';
-             break;
-
-         case 'v' : /* -v (be verbose) */
-             Verbosity ++;
-             break;
-
-          default : /* Unknown */
-             fprintf(stderr, "Unknown option \"-%c\".\n", *opt);
-             usage(1);
-       }
-      }
-    }
-    else if (!name)
-    {
-      name = argv[i];
-    }
-    else
-    {
-      fprintf(stderr, "Unexpected command-line argument \"%s\"\n", argv[i]);
-      usage(1);
-    }
-
-  if (!name)
-    usage(1);
-
- /*
-  * Apply defaults as needed...
-  */
-
-  if (!servername)
-    servername = httpGetHostname(NULL, hostname, sizeof(hostname));
-
-  if (!port)
-  {
-#ifdef WIN32
-   /*
-    * Windows is almost always used as a single user system, so use a default port
-    * number of 8631.
-    */
-
-    port = 8631;
-
-#else
-   /*
-    * Use 8000 + UID mod 1000 for the default port number...
-    */
-
-    port = 8000 + ((int)getuid() % 1000);
-#endif /* WIN32 */
-
-    fprintf(stderr, "Listening on port %d.\n", port);
-  }
-
-  if (!directory[0])
-  {
-    snprintf(directory, sizeof(directory), "/tmp/ippserver.%d", (int)getpid());
-
-    if (mkdir(directory, 0777) && errno != EEXIST)
-    {
-      fprintf(stderr, "Unable to create spool directory \"%s\": %s\n",
-             directory, strerror(errno));
-      usage(1);
-    }
-
-    if (Verbosity)
-      fprintf(stderr, "Using spool directory \"%s\".\n", directory);
-  }
-
-  if (!proxy_user[0])
-  {
-    strlcpy(proxy_user, "test", sizeof(proxy_user));
-
-    if (Verbosity)
-      fputs("Using proxy username \"test\".\n", stderr);
-  }
-
-  if (!proxy_pass)
-  {
-    proxy_pass = "test123";
-
-    if (Verbosity)
-      fputs("Using proxy password \"test123\".\n", stderr);
-  }
-
-#ifdef HAVE_SSL
-  cupsSetServerCredentials(keypath, servername, 1);
-#endif /* HAVE_SSL */
-
- /*
-  * Create the printer...
-  */
-
-  if ((printer = create_printer(servername, port, name, directory, proxy_user, proxy_pass)) == NULL)
-    return (1);
-
- /*
-  * Run the print service...
-  */
-
-  run_printer(printer);
-
- /*
-  * Destroy the printer and exit...
-  */
-
-  delete_printer(printer);
-
-  return (0);
-}
-
-
-/*
- * 'add_event()' - Add an event to a subscription.
- */
-
-static void
-add_event(_ipp_printer_t *printer,     /* I - Printer */
-          _ipp_job_t     *job,         /* I - Job, if any */
-         _ipp_event_t   event,         /* I - Event */
-         const char     *message,      /* I - Printf-style notify-text message */
-         ...)                          /* I - Additional printf arguments */
-{
-  _ipp_subscription_t *sub;            /* Current subscription */
-  ipp_t                *n;                     /* Notify attributes */
-  char         text[1024];             /* notify-text value */
-  va_list      ap;                     /* Argument pointer */
-
-
-  va_start(ap, message);
-  vsnprintf(text, sizeof(text), message, ap);
-  va_end(ap);
-
-  for (sub = (_ipp_subscription_t *)cupsArrayFirst(printer->subscriptions);
-       sub;
-       sub = (_ipp_subscription_t *)cupsArrayNext(printer->subscriptions))
-  {
-    if (sub->mask & event && (!sub->job || job == sub->job))
-    {
-      _cupsRWLockWrite(&sub->rwlock);
-
-      n = ippNew();
-      ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_CHARSET, "notify-charset", NULL, "utf-8");
-      ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_LANGUAGE, "notify-natural-language", NULL, "en");
-      ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "notify-printer-up-time", time(NULL) - printer->start_time);
-      ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_URI, "notify-printer-uri", NULL, printer->uri);
-      if (job)
-       ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "notify-job-id", job->id);
-      ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "notify-subcription-id", sub->id);
-      ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_URI, "notify-subscription-uuid", NULL, sub->uuid);
-      ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_INTEGER, "notify-sequence-number", ++ sub->last_sequence);
-      ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_KEYWORD, "notify-subscribed-event", NULL, get_notify_subscribed_event(event));
-      ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_TEXT, "notify-text", NULL, text);
-      if (event & _IPP_EVENT_PRINTER_ALL)
-      {
-       ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_ENUM, "printer-state", printer->state);
-       copy_printer_state_reasons(n, IPP_TAG_EVENT_NOTIFICATION, printer);
-      }
-      if (event & _IPP_EVENT_JOB_ALL)
-      {
-       ippAddInteger(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_ENUM, "job-state", job->state);
-       copy_job_state_reasons(n, IPP_TAG_EVENT_NOTIFICATION, job);
-       if (event == _IPP_EVENT_JOB_CREATED)
-       {
-         ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_NAME, "job-name", NULL, job->name);
-         ippAddString(n, IPP_TAG_EVENT_NOTIFICATION, IPP_TAG_NAME, "job-originating-user-name", NULL, job->username);
-       }
-      }
-
-      cupsArrayAdd(sub->events, n);
-      if (cupsArrayCount(sub->events) > 100)
-      {
-        n = (ipp_t *)cupsArrayFirst(sub->events);
-       cupsArrayRemove(sub->events, n);
-       ippDelete(n);
-       sub->first_sequence ++;
-      }
-
-      _cupsRWUnlock(&sub->rwlock);
-      _cupsCondBroadcast(&SubscriptionCondition);
-    }
-  }
-}
-
-
-/*
- * 'check_jobs()' - Check for new jobs to process.
- */
-
-static void
-check_jobs(_ipp_printer_t *printer)    /* I - Printer */
-{
-  _ipp_job_t   *job;                   /* Current job */
-
-
-  if (printer->processing_job)
-    return;
-
-  _cupsRWLockWrite(&(printer->rwlock));
-  for (job = (_ipp_job_t *)cupsArrayFirst(printer->active_jobs);
-       job;
-       job = (_ipp_job_t *)cupsArrayNext(printer->active_jobs))
-  {
-    if (job->state == IPP_JSTATE_PENDING)
-    {
-      if (!_cupsThreadCreate((_cups_thread_func_t)process_job, job))
-      {
-        job->state     = IPP_JSTATE_ABORTED;
-       job->completed = time(NULL);
-
-        add_event(printer, job, _IPP_EVENT_JOB_COMPLETED, "Job aborted because creation of processing thread failed.");
-      }
-      break;
-    }
-  }
-  _cupsRWUnlock(&(printer->rwlock));
-}
-
-
-/*
- * 'clean_jobs()' - Clean out old (completed) jobs.
- */
-
-static void
-clean_jobs(_ipp_printer_t *printer)    /* I - Printer */
-{
-  _ipp_job_t   *job;                   /* Current job */
-  time_t       cleantime;              /* Clean time */
-
-
-  if (cupsArrayCount(printer->jobs) == 0)
-    return;
-
-  cleantime = time(NULL) - 60;
-
-  _cupsRWLockWrite(&(printer->rwlock));
-  for (job = (_ipp_job_t *)cupsArrayFirst(printer->jobs);
-       job;
-       job = (_ipp_job_t *)cupsArrayNext(printer->jobs))
-    if (job->completed && job->completed < cleantime)
-    {
-      cupsArrayRemove(printer->jobs, job);
-      delete_job(job);
-    }
-    else
-      break;
-  _cupsRWUnlock(&(printer->rwlock));
-}
-
-
-/*
- * 'compare_active_jobs()' - Compare two active jobs.
- */
-
-static int                             /* O - Result of comparison */
-compare_active_jobs(_ipp_job_t *a,     /* I - First job */
-                    _ipp_job_t *b)     /* I - Second job */
-{
-  int  diff;                           /* Difference */
-
-
-  if ((diff = b->priority - a->priority) == 0)
-    diff = b->id - a->id;
-
-  return (diff);
-}
-
-
-/*
- * 'compare_completed_jobs()' - Compare two completed jobs.
- */
-
-static int                             /* O - Result of comparison */
-compare_completed_jobs(_ipp_job_t *a,  /* I - First job */
-                       _ipp_job_t *b)  /* I - Second job */
-{
-  int  diff;                           /* Difference */
-
-
-  if ((diff = a->completed - b->completed) == 0)
-    diff = b->id - a->id;
-
-  return (diff);
-}
-
-
-/*
- * 'compare_devices()' - Compare two devices...
- */
-
-static int                             /* O - Result of comparison */
-compare_devices(_ipp_device_t *a,      /* I - First device */
-                _ipp_device_t *b)      /* I - Second device */
-{
-  return (strcmp(a->uuid, b->uuid));
-}
-
-
-/*
- * 'compare_jobs()' - Compare two jobs.
- */
-
-static int                             /* O - Result of comparison */
-compare_jobs(_ipp_job_t *a,            /* I - First job */
-             _ipp_job_t *b)            /* I - Second job */
-{
-  return (b->id - a->id);
-}
-
-
-/*
- * 'copy_attributes()' - Copy attributes from one request to another.
- */
-
-static void
-copy_attributes(ipp_t        *to,      /* I - Destination request */
-               ipp_t        *from,     /* I - Source request */
-               cups_array_t *ra,       /* I - Requested attributes */
-               ipp_tag_t    group_tag, /* I - Group to copy */
-               int          quickcopy) /* I - Do a quick copy? */
-{
-  _ipp_filter_t        filter;                 /* Filter data */
-
-
-  filter.ra        = ra;
-  filter.group_tag = group_tag;
-
-  ippCopyAttributes(to, from, quickcopy, (ipp_copycb_t)filter_cb, &filter);
-}
-
-
-/*
- * 'copy_job_attrs()' - Copy job attributes to the response.
- */
-
-static void
-copy_job_attributes(
-    _ipp_client_t *client,             /* I - Client */
-    _ipp_job_t    *job,                        /* I - Job */
-    cups_array_t  *ra)                 /* I - requested-attributes */
-{
-  copy_attributes(client->response, job->attrs, ra, IPP_TAG_JOB, 0);
-
-  if (!ra || cupsArrayFind(ra, "date-time-at-completed"))
-  {
-    if (job->completed)
-      ippAddDate(client->response, IPP_TAG_JOB, "date-time-at-completed", ippTimeToDate(job->completed));
-    else
-      ippAddOutOfBand(client->response, IPP_TAG_JOB, IPP_TAG_NOVALUE, "date-time-at-completed");
-  }
-
-  if (!ra || cupsArrayFind(ra, "date-time-at-processing"))
-  {
-    if (job->processing)
-      ippAddDate(client->response, IPP_TAG_JOB, "date-time-at-processing", ippTimeToDate(job->processing));
-    else
-      ippAddOutOfBand(client->response, IPP_TAG_JOB, IPP_TAG_NOVALUE, "date-time-at-processing");
-  }
-
-  if (!ra || cupsArrayFind(ra, "job-impressions"))
-    ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-impressions", job->impressions);
-
-  if (!ra || cupsArrayFind(ra, "job-impressions-completed"))
-    ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-impressions-completed", job->impcompleted);
-
-  if (!ra || cupsArrayFind(ra, "job-printer-up-time"))
-    ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-printer-up-time", (int)(time(NULL) - client->printer->start_time));
-
-  if (!ra || cupsArrayFind(ra, "job-state"))
-    ippAddInteger(client->response, IPP_TAG_JOB, IPP_TAG_ENUM,
-                 "job-state", job->state);
-
-  if (!ra || cupsArrayFind(ra, "job-state-message"))
-  {
-    if (job->dev_state_message)
-    {
-      ippAddString(client->response, IPP_TAG_JOB, IPP_TAG_TEXT, "job-state-message", NULL, job->dev_state_message);
-    }
-    else
-    {
-      const char *message = "";                /* Message string */
-
-      switch (job->state)
-      {
-       case IPP_JSTATE_PENDING :
-           message = "Job pending.";
-           break;
-
-       case IPP_JSTATE_HELD :
-           if (job->state_reasons & _IPP_JREASON_JOB_INCOMING)
-             message = "Job incoming.";
-           else if (ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_ZERO))
-             message = "Job held.";
-           else
-             message = "Job created.";
-           break;
-
-       case IPP_JSTATE_PROCESSING :
-           if (job->state_reasons & _IPP_JREASON_PROCESSING_TO_STOP_POINT)
-           {
-             if (job->cancel)
-               message = "Cancel in progress.";
-             else
-               message = "Abort in progress.";
-           }
-           else
-             message = "Job printing.";
-           break;
-
-       case IPP_JSTATE_STOPPED :
-           message = "Job stopped.";
-           break;
-
-       case IPP_JSTATE_CANCELED :
-           message = "Job canceled.";
-           break;
-
-       case IPP_JSTATE_ABORTED :
-           message = "Job aborted.";
-           break;
-
-       case IPP_JSTATE_COMPLETED :
-           message = "Job completed.";
-           break;
-      }
-
-      ippAddString(client->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_TEXT), "job-state-message", NULL, message);
-    }
-  }
-
-  if (!ra || cupsArrayFind(ra, "job-state-reasons"))
-    copy_job_state_reasons(client->response, IPP_TAG_JOB, job);
-/*
-    switch (job->state)
-    {
-      case IPP_JSTATE_PENDING :
-         ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
-                      NULL, "none");
-         break;
-
-      case IPP_JSTATE_HELD :
-          if (job->fd >= 0)
-           ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_CONST_TAG(IPP_TAG_KEYWORD),
-                        "job-state-reasons", NULL, "job-incoming");
-         else if (ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_ZERO))
-           ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_CONST_TAG(IPP_TAG_KEYWORD),
-                        "job-state-reasons", NULL, "job-hold-until-specified");
-          else
-           ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_CONST_TAG(IPP_TAG_KEYWORD),
-                        "job-state-reasons", NULL, "job-data-insufficient");
-         break;
-
-      case IPP_JSTATE_PROCESSING :
-         if (job->cancel)
-           ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_CONST_TAG(IPP_TAG_KEYWORD),
-                        "job-state-reasons", NULL, "processing-to-stop-point");
-         else
-           ippAddString(client->response, IPP_TAG_JOB,
-                        IPP_CONST_TAG(IPP_TAG_KEYWORD),
-                        "job-state-reasons", NULL, "job-printing");
-         break;
-
-      case IPP_JSTATE_STOPPED :
-         ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
-                      NULL, "job-stopped");
-         break;
-
-      case IPP_JSTATE_CANCELED :
-         ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
-                      NULL, "job-canceled-by-user");
-         break;
-
-      case IPP_JSTATE_ABORTED :
-         ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
-                      NULL, "aborted-by-system");
-         break;
-
-      case IPP_JSTATE_COMPLETED :
-         ippAddString(client->response, IPP_TAG_JOB,
-                      IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons",
-                      NULL, "job-completed-successfully");
-         break;
-    }
-*/
-
-  if (!ra || cupsArrayFind(ra, "time-at-completed"))
-    ippAddInteger(client->response, IPP_TAG_JOB,
-                  job->completed ? IPP_TAG_INTEGER : IPP_TAG_NOVALUE,
-                  "time-at-completed", (int)(job->completed - client->printer->start_time));
-
-  if (!ra || cupsArrayFind(ra, "time-at-processing"))
-    ippAddInteger(client->response, IPP_TAG_JOB,
-                  job->processing ? IPP_TAG_INTEGER : IPP_TAG_NOVALUE,
-                  "time-at-processing", (int)(job->processing - client->printer->start_time));
-}
-
-
-/*
- * 'copy_job_state_reasons()' - Copy printer-state-reasons values.
- */
-
-static void
-copy_job_state_reasons(
-    ipp_t      *ipp,                   /* I - Attributes */
-    ipp_tag_t  group_tag,              /* I - Group */
-    _ipp_job_t *job)                   /* I - Printer */
-{
-  _ipp_jreason_t       creasons;       /* Combined job-state-reasons */
-
-
-  creasons = job->state_reasons | job->dev_state_reasons;
-
-  if (!creasons)
-  {
-    ippAddString(ipp, group_tag, IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons", NULL, "none");
-  }
-  else
-  {
-    int                        i,              /* Looping var */
-                       num_reasons = 0;/* Number of reasons */
-    _ipp_jreason_t     reason;         /* Current reason */
-    const char         *reasons[32];   /* Reason strings */
-
-    for (i = 0, reason = 1; i < (int)(sizeof(_ipp_jreasons) / sizeof(_ipp_jreasons[0])); i ++, reason <<= 1)
-    {
-      if (creasons & reason)
-        reasons[num_reasons ++] = _ipp_jreasons[i];
-    }
-
-    ippAddStrings(ipp, group_tag, IPP_CONST_TAG(IPP_TAG_KEYWORD), "job-state-reasons", num_reasons, NULL, reasons);
-  }
-}
-
-
-/*
- * 'copy_printer_state_reasons()' - Copy printer-state-reasons values.
- */
-
-static void
-copy_printer_state_reasons(
-    ipp_t          *ipp,               /* I - Attributes */
-    ipp_tag_t      group_tag,          /* I - Group */
-    _ipp_printer_t *printer)           /* I - Printer */
-{
-  _ipp_preason_t       creasons = printer->state_reasons | printer->dev_reasons;
-                                       /* Combined reasons */
-
-
-  if (creasons == _IPP_PREASON_NONE)
-  {
-    ippAddString(ipp, group_tag, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-state-reasons", NULL, "none");
-  }
-  else
-  {
-    int                        i,              /* Looping var */                               num_reasons = 0;/* Number of reasons */
-    _ipp_preason_t     reason;         /* Current reason */
-    const char         *reasons[32];   /* Reason strings */
-
-    for (i = 0, reason = 1; i < (int)(sizeof(_ipp_preasons) / sizeof(_ipp_preasons[0])); i ++, reason <<= 1)
-    {
-      if (creasons & reason)
-       reasons[num_reasons ++] = _ipp_preasons[i];
-    }
-
-    ippAddStrings(ipp, group_tag, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-state-reasons", num_reasons, NULL, reasons);
-  }
-}
-
-
-/*
- * 'copy_sub_attrs()' - Copy job attributes to the response.
- */
-
-static void
-copy_subscription_attributes(
-    _ipp_client_t       *client,       /* I - Client */
-    _ipp_subscription_t *sub,          /* I - Subscription */
-    cups_array_t        *ra)           /* I - requested-attributes */
-{
-  copy_attributes(client->response, sub->attrs, ra, IPP_TAG_SUBSCRIPTION, 0);
-
-  if (!ra || cupsArrayFind(ra, "notify-lease-expiration-time"))
-    ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-lease-expiration-time", (int)(sub->expire - client->printer->start_time));
-
-  if (!ra || cupsArrayFind(ra, "notify-printer-up-time"))
-    ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-printer-up-time", (int)(time(NULL) - client->printer->start_time));
-
-  if (!ra || cupsArrayFind(ra, "notify-sequence-number"))
-    ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-sequence-number", sub->last_sequence);
-}
-
-
-/*
- * 'create_client()' - Accept a new network connection and create a client
- *                     object.
- */
-
-static _ipp_client_t *                 /* O - Client */
-create_client(_ipp_printer_t *printer, /* I - Printer */
-              int            sock)     /* I - Listen socket */
-{
-  _ipp_client_t        *client;                /* Client */
-
-
-  if ((client = calloc(1, sizeof(_ipp_client_t))) == NULL)
-  {
-    perror("Unable to allocate memory for client");
-    return (NULL);
-  }
-
-  client->printer    = printer;
-  client->fetch_file = -1;
-
- /*
-  * Accept the client and get the remote address...
-  */
-
-  if ((client->http = httpAcceptConnection(sock, 1)) == NULL)
-  {
-    perror("Unable to accept client connection");
-
-    free(client);
-
-    return (NULL);
-  }
-
-  httpGetHostname(client->http, client->hostname, sizeof(client->hostname));
-
-  if (Verbosity)
-    fprintf(stderr, "Accepted connection from %s\n", client->hostname);
-
-  return (client);
-}
-
-
-/*
- * 'create_device()' - Create an output device tracking object.
- */
-
-static _ipp_device_t *                 /* O - Device */
-create_device(_ipp_client_t *client)   /* I - Client */
-{
-  _ipp_device_t                *device;        /* Device */
-  ipp_attribute_t      *uuid;          /* output-device-uuid */
-
-
-  if ((uuid = ippFindAttribute(client->request, "output-device-uuid", IPP_TAG_URI)) == NULL)
-    return (NULL);
-
-  if ((device = calloc(1, sizeof(_ipp_device_t))) == NULL)
-    return (NULL);
-
-  _cupsRWInit(&device->rwlock);
-
-  device->uuid  = strdup(ippGetString(uuid, 0, NULL));
-  device->state = IPP_PSTATE_STOPPED;
-
-  _cupsRWLockWrite(&client->printer->rwlock);
-  cupsArrayAdd(client->printer->devices, device);
-  _cupsRWUnlock(&client->printer->rwlock);
-
-  return (device);
-}
-
-
-/*
- * 'create_job()' - Create a new job object from a Print-Job or Create-Job
- *                  request.
- */
-
-static _ipp_job_t *                    /* O - Job */
-create_job(_ipp_client_t *client)      /* I - Client */
-{
-  _ipp_job_t           *job;           /* Job */
-  ipp_attribute_t      *attr;          /* Job attribute */
-  char                 uri[1024],      /* job-uri value */
-                       uuid[64];       /* job-uuid value */
-
-
-  _cupsRWLockWrite(&(client->printer->rwlock));
-
- /*
-  * Allocate and initialize the job object...
-  */
-
-  if ((job = calloc(1, sizeof(_ipp_job_t))) == NULL)
-  {
-    perror("Unable to allocate memory for job");
-    return (NULL);
-  }
-
-  job->printer    = client->printer;
-  job->attrs      = ippNew();
-  job->state      = IPP_JSTATE_HELD;
-  job->fd         = -1;
-
- /*
-  * Copy all of the job attributes...
-  */
-
-  copy_attributes(job->attrs, client->request, NULL, IPP_TAG_JOB, 0);
-
- /*
-  * Get the requesting-user-name, document format, and priority...
-  */
-
-  if ((attr = ippFindAttribute(client->request, "job-priority", IPP_TAG_INTEGER)) != NULL)
-    job->priority = ippGetInteger(attr, 0);
-  else
-    job->priority = 50;
-
-  if ((attr = ippFindAttribute(client->request, "requesting-user-name", IPP_TAG_NAME)) != NULL)
-    job->username = ippGetString(attr, 0, NULL);
-  else
-    job->username = "anonymous";
-
-  ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-originating-user-name", NULL, job->username);
-
-  if (ippGetOperation(client->request) != IPP_OP_CREATE_JOB)
-  {
-    if ((attr = ippFindAttribute(job->attrs, "document-format-detected", IPP_TAG_MIMETYPE)) != NULL)
-      job->format = ippGetString(attr, 0, NULL);
-    else if ((attr = ippFindAttribute(job->attrs, "document-format-supplied", IPP_TAG_MIMETYPE)) != NULL)
-      job->format = ippGetString(attr, 0, NULL);
-    else
-      job->format = "application/octet-stream";
-  }
-
-  if ((attr = ippFindAttribute(client->request, "job-impressions", IPP_TAG_INTEGER)) != NULL)
-    job->impressions = ippGetInteger(attr, 0);
-
-  if ((attr = ippFindAttribute(client->request, "job-name", IPP_TAG_NAME)) != NULL)
-    job->name = ippGetString(attr, 0, NULL);
-
- /*
-  * Add job description attributes and add to the jobs array...
-  */
-
-  job->id = client->printer->next_job_id ++;
-
-  snprintf(uri, sizeof(uri), "%s/%d", client->printer->uri, job->id);
-  httpAssembleUUID(client->printer->hostname, client->printer->port, client->printer->name, job->id, uuid, sizeof(uuid));
-
-  ippAddDate(job->attrs, IPP_TAG_JOB, "date-time-at-creation", ippTimeToDate(time(&job->created)));
-  ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-id", job->id);
-  ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uri", NULL, uri);
-  ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-uuid", NULL, uuid);
-  ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI, "job-printer-uri", NULL, client->printer->uri);
-  ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "time-at-creation", (int)(job->created - client->printer->start_time));
-
-  cupsArrayAdd(client->printer->jobs, job);
-  cupsArrayAdd(client->printer->active_jobs, job);
-
-  _cupsRWUnlock(&(client->printer->rwlock));
-
-  return (job);
-}
-
-
-/*
- * 'create_job_filename()' - Create the filename for a document in a job.
- */
-
-static void create_job_filename(
-    _ipp_printer_t *printer,           /* I - Printer */
-    _ipp_job_t     *job,               /* I - Job */
-    const char     *format,            /* I - Format or NULL */
-    char           *fname,             /* I - Filename buffer */
-    size_t         fnamesize)          /* I - Size of filename buffer */
-{
-  char                 name[256],      /* "Safe" filename */
-                       *nameptr;       /* Pointer into filename */
-  const char           *ext,           /* Filename extension */
-                       *job_name;      /* job-name value */
-  ipp_attribute_t      *job_name_attr; /* job-name attribute */
-
-
- /*
-  * Make a name from the job-name attribute...
-  */
-
-  if ((job_name_attr = ippFindAttribute(job->attrs, "job-name", IPP_TAG_NAME)) != NULL)
-    job_name = ippGetString(job_name_attr, 0, NULL);
-  else
-    job_name = "untitled";
-
-  for (nameptr = name; *job_name && nameptr < (name + sizeof(name) - 1); job_name ++)
-    if (isalnum(*job_name & 255) || *job_name == '-')
-      *nameptr++ = (char)tolower(*job_name & 255);
-    else
-      *nameptr++ = '_';
-
-  *nameptr = '\0';
-
- /*
-  * Figure out the extension...
-  */
-
-  if (!format)
-    format = job->format;
-
-  if (!strcasecmp(format, "image/jpeg"))
-    ext = "jpg";
-  else if (!strcasecmp(format, "image/png"))
-    ext = "png";
-  else if (!strcasecmp(format, "image/pwg-raster"))
-    ext = "ras";
-  else if (!strcasecmp(format, "image/urf"))
-    ext = "urf";
-  else if (!strcasecmp(format, "application/pdf"))
-    ext = "pdf";
-  else if (!strcasecmp(format, "application/postscript"))
-    ext = "ps";
-  else
-    ext = "prn";
-
- /*
-  * Create a filename with the job-id, job-name, and document-format (extension)...
-  */
-
-  snprintf(fname, fnamesize, "%s/%d-%s.%s", printer->directory, job->id, name, ext);
-}
-
-
-/*
- * 'create_listener()' - Create a listener socket.
- */
-
-static int                             /* O - Listener socket or -1 on error */
-create_listener(int family,            /* I - Address family */
-                int port)              /* I - Port number */
-{
-  int                  sock;           /* Listener socket */
-  http_addrlist_t      *addrlist;      /* Listen address */
-  char                 service[255];   /* Service port */
-
-
-  snprintf(service, sizeof(service), "%d", port);
-  if ((addrlist = httpAddrGetList(NULL, family, service)) == NULL)
-    return (-1);
-
-  sock = httpAddrListen(&(addrlist->addr), port);
-
-  httpAddrFreeList(addrlist);
-
-  return (sock);
-}
-
-
-/*
- * 'create_printer()' - Create, register, and listen for connections to a
- *                      printer object.
- */
-
-static _ipp_printer_t *                        /* O - Printer */
-create_printer(const char *servername, /* I - Server hostname (NULL for default) */
-               int        port,                /* I - Port number */
-               const char *name,       /* I - printer-name */
-              const char *directory,   /* I - Spool directory */
-              const char *proxy_user,  /* I - Proxy account username */
-              const char *proxy_pass)  /* I - Proxy account password */
-{
-  _ipp_printer_t       *printer;       /* Printer */
-  char                 uri[1024],      /* Printer URI */
-                       adminurl[1024], /* printer-more-info URI */
-                       supplyurl[1024],/* printer-supply-info-uri URI */
-                       uuid[128];      /* printer-uuid */
-  int                  k_supported;    /* Maximum file size supported */
-#ifdef HAVE_STATVFS
-  struct statvfs       spoolinfo;      /* FS info for spool directory */
-  double               spoolsize;      /* FS size */
-#elif defined(HAVE_STATFS)
-  struct statfs                spoolinfo;      /* FS info for spool directory */
-  double               spoolsize;      /* FS size */
-#endif /* HAVE_STATVFS */
-  static const char * const versions[] =/* ipp-versions-supported values */
-  {
-    "1.0",
-    "1.1",
-    "2.0"
-  };
-  static const char * const features[] =/* ipp-features-supported values */
-  {
-    "document-object",
-    "ipp-everywhere",
-    "infrastructure-printer",
-    "page-overrides"
-  };
-  static const int     ops[] =         /* operations-supported values */
-  {
-    IPP_OP_PRINT_JOB,
-    IPP_OP_PRINT_URI,
-    IPP_OP_VALIDATE_JOB,
-    IPP_OP_CREATE_JOB,
-    IPP_OP_SEND_DOCUMENT,
-    IPP_OP_SEND_URI,
-    IPP_OP_CANCEL_JOB,
-    IPP_OP_GET_JOB_ATTRIBUTES,
-    IPP_OP_GET_JOBS,
-    IPP_OP_GET_PRINTER_ATTRIBUTES,
-    IPP_OP_GET_PRINTER_SUPPORTED_VALUES,
-    IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS,
-    IPP_OP_CREATE_JOB_SUBSCRIPTIONS,
-    IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES,
-    IPP_OP_GET_SUBSCRIPTIONS,
-    IPP_OP_RENEW_SUBSCRIPTION,
-    IPP_OP_CANCEL_SUBSCRIPTION,
-    IPP_OP_GET_NOTIFICATIONS,
-    IPP_OP_GET_DOCUMENT_ATTRIBUTES,
-    IPP_OP_GET_DOCUMENTS,
-    IPP_OP_CANCEL_MY_JOBS,
-    IPP_OP_CLOSE_JOB,
-    IPP_OP_IDENTIFY_PRINTER,
-    IPP_OP_VALIDATE_DOCUMENT,
-    _IPP_OP_ACKNOWLEDGE_DOCUMENT,
-    _IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER,
-    _IPP_OP_ACKNOWLEDGE_JOB,
-    _IPP_OP_FETCH_DOCUMENT,
-    _IPP_OP_FETCH_JOB,
-    _IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES,
-    _IPP_OP_UPDATE_ACTIVE_JOBS,
-    _IPP_OP_UPDATE_DOCUMENT_STATUS,
-    _IPP_OP_UPDATE_JOB_STATUS,
-    _IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES,
-    _IPP_OP_DEREGISTER_OUTPUT_DEVICE
-  };
-  static const char * const charsets[] =/* charset-supported values */
-  {
-    "us-ascii",
-    "utf-8"
-  };
-  static const char * const compressions[] =/* compression-supported values */
-  {
-#ifdef HAVE_LIBZ
-    "deflate",
-    "gzip",
-#endif /* HAVE_LIBZ */
-    "none"
-  };
-  static const char * const notify_attributes[] =
-  {                                    /* notify-attributes-supported */
-    "printer-state-change-time",
-    "notify-lease-expiration-time",
-    "notify-subscriber-user-name"
-  };
-  static const char * const reference_uri_schemes_supported[] =
-  {                                    /* reference-uri-schemes-supported */
-    "file",
-    "ftp",
-    "http"
-#ifdef HAVE_SSL
-    , "https"
-#endif /* HAVE_SSL */
-  };
-  static const char * const which_jobs[] =
-  {                                    /* which-jobs-supported values */
-    "completed",
-    "not-completed",
-    "aborted",
-    "all",
-    "canceled",
-    "pending",
-    "pending-held",
-    "processing",
-    "processing-stopped"
-  };
-
-
- /*
-  * Allocate memory for the printer...
-  */
-
-  if ((printer = calloc(1, sizeof(_ipp_printer_t))) == NULL)
-  {
-    perror("ippserver: Unable to allocate memory for printer");
-    return (NULL);
-  }
-
-  printer->ipv4           = -1;
-  printer->ipv6           = -1;
-  printer->name           = strdup(name);
-  printer->directory      = strdup(directory);
-  printer->hostname       = strdup(servername);
-  printer->port           = port;
-  printer->start_time     = time(NULL);
-  printer->config_time    = printer->start_time;
-  printer->state          = IPP_PSTATE_IDLE;
-  printer->state_reasons  = _IPP_PREASON_NONE;
-  printer->state_time     = printer->start_time;
-  printer->jobs           = cupsArrayNew3((cups_array_func_t)compare_jobs, NULL, NULL, 0, NULL, (cups_afree_func_t)delete_job);
-  printer->active_jobs    = cupsArrayNew((cups_array_func_t)compare_active_jobs, NULL);
-  printer->completed_jobs = cupsArrayNew((cups_array_func_t)compare_completed_jobs, NULL);
-  printer->next_job_id    = 1;
-
-  httpAssembleURI(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
-                 printer->hostname, printer->port, "/ipp/print");
-  printer->uri    = strdup(uri);
-  printer->urilen = strlen(uri);
-
-  if (proxy_user)
-    printer->proxy_user = strdup(proxy_user);
-  if (proxy_pass)
-    printer->proxy_pass = strdup(proxy_pass);
-
-  printer->devices = cupsArrayNew((cups_array_func_t)compare_devices, NULL);
-
-  _cupsRWInit(&(printer->rwlock));
-
- /*
-  * Create the listener sockets...
-  */
-
-  if ((printer->ipv4 = create_listener(AF_INET, printer->port)) < 0)
-  {
-    perror("Unable to create IPv4 listener");
-    goto bad_printer;
-  }
-
-  if ((printer->ipv6 = create_listener(AF_INET6, printer->port)) < 0)
-  {
-    perror("Unable to create IPv6 listener");
-    goto bad_printer;
-  }
-
- /*
-  * Prepare values for the printer attributes...
-  */
-
-  httpAssembleURI(HTTP_URI_CODING_ALL, adminurl, sizeof(adminurl), "http", NULL, printer->hostname, printer->port, "/");
-  httpAssembleURI(HTTP_URI_CODING_ALL, supplyurl, sizeof(supplyurl), "http", NULL, printer->hostname, printer->port, "/supplies");
-
-  if (Verbosity)
-  {
-    fprintf(stderr, "printer-more-info=\"%s\"\n", adminurl);
-    fprintf(stderr, "printer-supply-info-uri=\"%s\"\n", supplyurl);
-    fprintf(stderr, "printer-uri=\"%s\"\n", uri);
-  }
-
- /*
-  * Get the maximum spool size based on the size of the filesystem used for
-  * the spool directory.  If the host OS doesn't support the statfs call
-  * or the filesystem is larger than 2TiB, always report INT_MAX.
-  */
-
-#ifdef HAVE_STATVFS
-  if (statvfs(printer->directory, &spoolinfo))
-    k_supported = INT_MAX;
-  else if ((spoolsize = (double)spoolinfo.f_frsize *
-                        spoolinfo.f_blocks / 1024) > INT_MAX)
-    k_supported = INT_MAX;
-  else
-    k_supported = (int)spoolsize;
-
-#elif defined(HAVE_STATFS)
-  if (statfs(printer->directory, &spoolinfo))
-    k_supported = INT_MAX;
-  else if ((spoolsize = (double)spoolinfo.f_bsize *
-                        spoolinfo.f_blocks / 1024) > INT_MAX)
-    k_supported = INT_MAX;
-  else
-    k_supported = (int)spoolsize;
-
-#else
-  k_supported = INT_MAX;
-#endif /* HAVE_STATVFS */
-
- /*
-  * Create the printer attributes.  This list of attributes is sorted to improve
-  * performance when the client provides a requested-attributes attribute...
-  */
-
-  printer->attrs = ippNew();
-
-  /* charset-configured */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_CONST_TAG(IPP_TAG_CHARSET),
-               "charset-configured", NULL, "utf-8");
-
-  /* charset-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_CONST_TAG(IPP_TAG_CHARSET),
-                "charset-supported", sizeof(charsets) / sizeof(charsets[0]),
-               NULL, charsets);
-
-  /* compression-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_CONST_TAG(IPP_TAG_KEYWORD),
-               "compression-supported",
-               (int)(sizeof(compressions) / sizeof(compressions[0])), NULL,
-               compressions);
-
-  /* generated-natural-language-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_CONST_TAG(IPP_TAG_LANGUAGE),
-               "generated-natural-language-supported", NULL, "en");
-
-  /* ipp-features-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-features-supported", sizeof(features) / sizeof(features[0]), NULL, features);
-
-  /* ipp-versions-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "ipp-versions-supported", sizeof(versions) / sizeof(versions[0]), NULL, versions);
-
-  /* ippget-event-life */
-  ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "ippget-event-life", 300);
-
-  /* job-ids-supported */
-  ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "job-ids-supported", 1);
-
-  /* job-k-octets-supported */
-  ippAddRange(printer->attrs, IPP_TAG_PRINTER, "job-k-octets-supported", 0,
-             k_supported);
-
-  /* job-priority-default */
-  ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
-                "job-priority-default", 50);
-
-  /* job-priority-supported */
-  ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
-                "job-priority-supported", 100);
-
-  /* multiple-document-jobs-supported */
-  ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "multiple-document-jobs-supported", 0);
-
-  /* multiple-operation-time-out */
-  ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "multiple-operation-time-out", 60);
-
-  /* multiple-operation-time-out-action */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "multiple-operation-time-out-action", NULL, "abort-job");
-
-  /* natural-language-configured */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_CONST_TAG(IPP_TAG_LANGUAGE),
-               "natural-language-configured", NULL, "en");
-
-  /* notify-attributes-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-attributes-supported", sizeof(notify_attributes) / sizeof(notify_attributes[0]), NULL, notify_attributes);
-
-  /* notify-events-default */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-events-default", NULL, "job-completed");
-
-  /* notify-events-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-events-supported", sizeof(_ipp_events) / sizeof(_ipp_events[0]), NULL, _ipp_events);
-
-  /* notify-lease-duration-default */
-  ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "notify-lease-duration-default", 86400);
-
-  /* notify-lease-duration-supported */
-  ippAddRange(printer->attrs, IPP_TAG_PRINTER, "notify-lease-duration-supported", 0, _IPP_NOTIFY_LEASE_DURATION_MAX);
-
-  /* notify-max-events-supported */
-  ippAddInteger(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "notify-lease-duration-default", (int)(sizeof(_ipp_events) / sizeof(_ipp_events[0])));
-
-  /* notify-pull-method-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-pull-method-supported", NULL, "ippget");
-
-  /* operations-supported */
-  ippAddIntegers(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
-                "operations-supported", sizeof(ops) / sizeof(ops[0]), ops);
-
-  /* printer-get-attributes-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_KEYWORD), "printer-get-attributes-supported", NULL, "document-format");
-
-  /* printer-is-accepting-jobs */
-  ippAddBoolean(printer->attrs, IPP_TAG_PRINTER, "printer-is-accepting-jobs", 1);
-
-  /* printer-info */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_TEXT, "printer-info", NULL, name);
-
-  /* printer-more-info */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-more-info", NULL, adminurl);
-
-  /* printer-name */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_NAME, "printer-name", NULL, name);
-
-  /* printer-supply-info-uri */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-supply-info-uri", NULL, supplyurl);
-
-  /* printer-uri-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported", NULL, uri);
-
-  /* printer-uuid */
-  httpAssembleUUID(printer->hostname, port, name, 0, uuid, sizeof(uuid));
-  ippAddString(printer->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uuid", NULL, uuid);
-
-  /* reference-uri-scheme-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_CONST_TAG(IPP_TAG_URISCHEME),
-                "reference-uri-schemes-supported",
-                (int)(sizeof(reference_uri_schemes_supported) /
-                      sizeof(reference_uri_schemes_supported[0])),
-                NULL, reference_uri_schemes_supported);
-
-  /* uri-authentication-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_CONST_TAG(IPP_TAG_KEYWORD),
-               "uri-authentication-supported", NULL, "basic");
-
-  /* uri-security-supported */
-  ippAddString(printer->attrs, IPP_TAG_PRINTER,
-               IPP_CONST_TAG(IPP_TAG_KEYWORD),
-               "uri-security-supported", NULL, "tls");
-
-  /* which-jobs-supported */
-  ippAddStrings(printer->attrs, IPP_TAG_PRINTER,
-                IPP_CONST_TAG(IPP_TAG_KEYWORD),
-                "which-jobs-supported",
-                sizeof(which_jobs) / sizeof(which_jobs[0]), NULL, which_jobs);
-
-  debug_attributes("Printer", printer->attrs, 0);
-
- /*
-  * Return it!
-  */
-
-  return (printer);
-
-
- /*
-  * If we get here we were unable to create the printer...
-  */
-
-  bad_printer:
-
-  delete_printer(printer);
-  return (NULL);
-}
-
-
-/*
- * 'create_subscription()' - Create a new subscription object from a
- *                           Print-Job, Create-Job, or Create-xxx-Subscription
- *                           request.
- */
-
-static _ipp_subscription_t *           /* O - Subscription object */
-create_subscription(
-    _ipp_printer_t  *printer,          /* I - Printer */
-    _ipp_job_t      *job,              /* I - Job, if any */
-    int             interval,          /* I - Interval for progress events */
-    int             lease,             /* I - Lease duration */
-    const char      *username,         /* I - User creating the subscription */
-    ipp_attribute_t *notify_events,    /* I - Events to monitor */
-    ipp_attribute_t *notify_attributes,        /* I - Attributes to report */
-    ipp_attribute_t *notify_user_data) /* I - User data, if any */
-{
-  _ipp_subscription_t  *sub;           /* Subscription */
-  ipp_attribute_t      *attr;          /* Subscription attribute */
-  char                 uuid[64];       /* notify-subscription-uuid value */
-
-
- /*
-  * Allocate and initialize the subscription object...
-  */
-
-  if ((sub = calloc(1, sizeof(_ipp_subscription_t))) == NULL)
-  {
-    perror("Unable to allocate memory for subscription");
-    return (NULL);
-  }
-
-  _cupsRWLockWrite(&(printer->rwlock));
-
-  sub->id       = printer->next_sub_id ++;
-  sub->mask     = notify_events ? get_notify_events_bits(notify_events) : _IPP_EVENT_DEFAULT;
-  sub->printer  = printer;
-  sub->job      = job;
-  sub->interval = interval;
-  sub->lease    = lease;
-  sub->attrs    = ippNew();
-
-  if (lease)
-    sub->expire = time(NULL) + sub->lease;
-  else
-    sub->expire = INT_MAX;
-
-  _cupsRWInit(&(sub->rwlock));
-
- /*
-  * Add subscription description attributes and add to the subscriptions
-  * array...
-  */
-
-  ippAddInteger(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-subscription-id", sub->id);
-
-  httpAssembleUUID(printer->hostname, printer->port, printer->name, -sub->id, uuid, sizeof(uuid));
-  attr = ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, "notify-subscription-uuid", NULL, uuid);
-  sub->uuid = ippGetString(attr, 0, NULL);
-
-  ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_URI, "notify-printer-uri", NULL, printer->uri);
-
-  if (job)
-    ippAddInteger(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-job-id", job->id);
-  else
-    ippAddInteger(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-lease-duration", sub->lease);
-
-  attr = ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_TAG_NAME, "notify-subscriber-user-name", NULL, username);
-  sub->username = ippGetString(attr, 0, NULL);
-
-  if (notify_events)
-    ippCopyAttribute(sub->attrs, notify_events, 0);
-  else
-    ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-events", NULL, _IPP_EVENT_DEFAULT_STRING);
-
-  ippAddString(sub->attrs, IPP_TAG_SUBSCRIPTION, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-pull-method", NULL, "ippget");
-
-  if (notify_attributes)
-    ippCopyAttribute(sub->attrs, notify_attributes, 0);
-
-  if (notify_user_data)
-    ippCopyAttribute(sub->attrs, notify_user_data, 0);
-
-  sub->events = cupsArrayNew3(NULL, NULL, NULL, 0, NULL, (cups_afree_func_t)ippDelete);
-
-  cupsArrayAdd(printer->subscriptions, sub);
-
-  _cupsRWUnlock(&(printer->rwlock));
-
-  return (sub);
-}
-
-
-/*
- * 'debug_attributes()' - Print attributes in a request or response.
- */
-
-static void
-debug_attributes(const char *title,    /* I - Title */
-                 ipp_t      *ipp,      /* I - Request/response */
-                 int        type)      /* I - 0 = object, 1 = request, 2 = response */
-{
-  ipp_tag_t            group_tag;      /* Current group */
-  ipp_attribute_t      *attr;          /* Current attribute */
-  char                 buffer[2048];   /* String buffer for value */
-  int                  major, minor;   /* Version */
-
-
-  if (Verbosity <= 1)
-    return;
-
-  fprintf(stderr, "%s:\n", title);
-  major = ippGetVersion(ipp, &minor);
-  fprintf(stderr, "  version=%d.%d\n", major, minor);
-  if (type == 1)
-    fprintf(stderr, "  operation-id=%s(%04x)\n",
-            ippOpString(ippGetOperation(ipp)), ippGetOperation(ipp));
-  else if (type == 2)
-    fprintf(stderr, "  status-code=%s(%04x)\n",
-            ippErrorString(ippGetStatusCode(ipp)), ippGetStatusCode(ipp));
-  fprintf(stderr, "  request-id=%d\n\n", ippGetRequestId(ipp));
-
-  for (attr = ippFirstAttribute(ipp), group_tag = IPP_TAG_ZERO;
-       attr;
-       attr = ippNextAttribute(ipp))
-  {
-    if (ippGetGroupTag(attr) != group_tag)
-    {
-      group_tag = ippGetGroupTag(attr);
-      fprintf(stderr, "  %s\n", ippTagString(group_tag));
-    }
-
-    if (ippGetName(attr))
-    {
-      ippAttributeString(attr, buffer, sizeof(buffer));
-      fprintf(stderr, "    %s (%s%s) %s\n", ippGetName(attr),
-             ippGetCount(attr) > 1 ? "1setOf " : "",
-             ippTagString(ippGetValueTag(attr)), buffer);
-    }
-  }
-}
-
-
-/*
- * 'delete_client()' - Close the socket and free all memory used by a client
- *                     object.
- */
-
-static void
-delete_client(_ipp_client_t *client)   /* I - Client */
-{
-  if (Verbosity)
-    fprintf(stderr, "Closing connection from %s\n", client->hostname);
-
- /*
-  * Flush pending writes before closing...
-  */
-
-  httpFlushWrite(client->http);
-
- /*
-  * Free memory...
-  */
-
-  httpClose(client->http);
-
-  ippDelete(client->request);
-  ippDelete(client->response);
-
-  free(client);
-}
-
-
-/*
- * 'delete_device()' - Remove a device from a printer.
- *
- * Note: Caller is responsible for locking the printer object.
- */
-
-static void
-delete_device(_ipp_device_t *device)   /* I - Device */
-{
- /*
-  * Free memory used for the device...
-  */
-
-  _cupsRWDeinit(&device->rwlock);
-
-  if (device->name)
-    free(device->name);
-
-  free(device->uuid);
-
-  ippDelete(device->attrs);
-
-  free(device);
-}
-
-
-/*
- * 'delete_job()' - Remove from the printer and free all memory used by a job
- *                  object.
- */
-
-static void
-delete_job(_ipp_job_t *job)            /* I - Job */
-{
-  if (Verbosity)
-    fprintf(stderr, "Removing job #%d from history.\n", job->id);
-
-  _cupsRWLockWrite(&job->rwlock);
-
-  ippDelete(job->attrs);
-
-  if (job->filename)
-  {
-    if (!KeepFiles)
-      unlink(job->filename);
-
-    free(job->filename);
-  }
-
-  _cupsRWDeinit(&job->rwlock);
-
-  free(job);
-}
-
-
-/*
- * 'delete_printer()' - Unregister, close listen sockets, and free all memory
- *                      used by a printer object.
- */
-
-static void
-delete_printer(_ipp_printer_t *printer)        /* I - Printer */
-{
-  _cupsRWLockWrite(&printer->rwlock);
-
-  if (printer->ipv4 >= 0)
-    close(printer->ipv4);
-
-  if (printer->ipv6 >= 0)
-    close(printer->ipv6);
-
-  if (printer->name)
-    free(printer->name);
-  if (printer->directory)
-    free(printer->directory);
-  if (printer->hostname)
-    free(printer->hostname);
-  if (printer->uri)
-    free(printer->uri);
-  if (printer->proxy_user)
-    free(printer->proxy_user);
-  if (printer->proxy_pass)
-    free(printer->proxy_pass);
-
-
-  ippDelete(printer->attrs);
-  ippDelete(printer->dev_attrs);
-
-  cupsArrayDelete(printer->active_jobs);
-  cupsArrayDelete(printer->completed_jobs);
-  cupsArrayDelete(printer->jobs);
-  cupsArrayDelete(printer->subscriptions);
-
-  _cupsRWDeinit(&printer->rwlock);
-
-  free(printer);
-}
-
-
-/*
- * 'delete_subscription()' - Delete a subscription.
- */
-
-static void
-delete_subscription(
-    _ipp_subscription_t *sub)          /* I - Subscription */
-{
-  sub->pending_delete = 1;
-
-  _cupsCondBroadcast(&SubscriptionCondition);
-
-  _cupsRWLockWrite(&sub->rwlock);
-
-  ippDelete(sub->attrs);
-  cupsArrayDelete(sub->events);
-
-  _cupsRWDeinit(&sub->rwlock);
-
-  free(sub);
-}
-
-
-/*
- * 'filter_cb()' - Filter printer attributes based on the requested array.
- */
-
-static int                             /* O - 1 to copy, 0 to ignore */
-filter_cb(_ipp_filter_t   *filter,     /* I - Filter parameters */
-          ipp_t           *dst,                /* I - Destination (unused) */
-         ipp_attribute_t *attr)        /* I - Source attribute */
-{
- /*
-  * Filter attributes as needed...
-  */
-
-  (void)dst;
-
-  ipp_tag_t group = ippGetGroupTag(attr);
-  const char *name = ippGetName(attr);
-
-  if ((filter->group_tag != IPP_TAG_ZERO && group != filter->group_tag && group != IPP_TAG_ZERO) || !name || (!strcmp(name, "media-col-database") && !cupsArrayFind(filter->ra, (void *)name)))
-    return (0);
-
-  return (!filter->ra || cupsArrayFind(filter->ra, (void *)name) != NULL);
-}
-
-
-/*
- * 'find_device()' - Find a device.
- */
-
-static _ipp_device_t *                 /* I - Device */
-find_device(_ipp_client_t *client)     /* I - Client */
-{
-  ipp_attribute_t      *uuid;          /* output-device-uuid */
-  _ipp_device_t                key,            /* Search key */
-                       *device;        /* Matching device */
-
-
-  if ((uuid = ippFindAttribute(client->request, "output-device-uuid", IPP_TAG_URI)) == NULL)
-    return (NULL);
-
-  key.uuid = (char *)ippGetString(uuid, 0, NULL);
-
-  _cupsRWLockRead(&client->printer->rwlock);
-  device = (_ipp_device_t *)cupsArrayFind(client->printer->devices, &key);
-  _cupsRWUnlock(&client->printer->rwlock);
-
-  return (device);
-}
-
-
-/*
- * 'find_job()' - Find a job specified in a request.
- */
-
-static _ipp_job_t *                    /* O - Job or NULL */
-find_job(_ipp_client_t *client,                /* I - Client */
-         int           job_id)         /* I - Job ID to find or 0 to lookup */
-{
-  ipp_attribute_t      *attr;          /* job-id or job-uri attribute */
-  _ipp_job_t           key,            /* Job search key */
-                       *job;           /* Matching job, if any */
-
-
-  if (job_id > 0)
-  {
-    key.id = job_id;
-  }
-  else if ((attr = ippFindAttribute(client->request, "job-uri", IPP_TAG_URI)) != NULL)
-  {
-    const char *uri = ippGetString(attr, 0, NULL);
-
-    if (!strncmp(uri, client->printer->uri, client->printer->urilen) &&
-        uri[client->printer->urilen] == '/')
-      key.id = atoi(uri + client->printer->urilen + 1);
-    else
-      return (NULL);
-  }
-  else if ((attr = ippFindAttribute(client->request, "job-id", IPP_TAG_INTEGER)) != NULL)
-  {
-    key.id = ippGetInteger(attr, 0);
-  }
-
-  _cupsRWLockRead(&(client->printer->rwlock));
-  job = (_ipp_job_t *)cupsArrayFind(client->printer->jobs, &key);
-  _cupsRWUnlock(&(client->printer->rwlock));
-
-  return (job);
-}
-
-
-/*
- * 'find_subscription()' - Find a subcription.
- */
-
-static _ipp_subscription_t *           /* O - Subscription */
-find_subscription(_ipp_client_t *client,/* I - Client */
-                  int           sub_id)        /* I - Subscription ID or 0 */
-{
-  ipp_attribute_t      *notify_subscription_id;
-                                       /* notify-subscription-id */
-  _ipp_subscription_t  key,            /* Search key */
-                       *sub;           /* Matching subscription */
-
-
-  if (sub_id > 0)
-    key.id = sub_id;
-  else if ((notify_subscription_id = ippFindAttribute(client->request, "notify-subscription-id", IPP_TAG_INTEGER)) == NULL)
-    return (NULL);
-  else
-    key.id = ippGetInteger(notify_subscription_id, 0);
-
-  _cupsRWLockRead(&client->printer->rwlock);
-  sub = (_ipp_subscription_t *)cupsArrayFind(client->printer->subscriptions, &key);
-  _cupsRWUnlock(&client->printer->rwlock);
-
-  return (sub);
-}
-
-
-/*
- * 'get_job_state_reasons_bits()' - Get the bits associates with "job-state-reasons" values.
- */
-
-static _ipp_jreason_t                  /* O - Bits */
-get_job_state_reasons_bits(
-    ipp_attribute_t *attr)             /* I - "job-state-reasons" attribute */
-{
-  int                  i, j,           /* Looping vars */
-                       count;          /* Number of "job-state-reasons" values */
-  const char           *keyword;       /* "job-state-reasons" value */
-  _ipp_jreason_t       jreasons = _IPP_JREASON_NONE;
-                                       /* Bits for "job-state-reasons" values */
-
-
-  count = ippGetCount(attr);
-  for (i = 0; i < count; i ++)
-  {
-    keyword = ippGetString(attr, i, NULL);
-
-    for (j = 0; j < (int)(sizeof(_ipp_jreasons) / sizeof(_ipp_jreasons[0])); j ++)
-    {
-      if (!strcmp(keyword, _ipp_jreasons[j]))
-      {
-        jreasons |= 1 << j;
-       break;
-      }
-    }
-  }
-
-  return (jreasons);
-}
-
-
-/*
- * 'get_notify_event_bits()' - Get the bits associated with "notify-events" values.
- */
-
-static _ipp_event_t                    /* O - Bits */
-get_notify_events_bits(
-    ipp_attribute_t *attr)             /* I - "notify-events" attribute */
-{
-  int          i, j,                   /* Looping vars */
-               count;                  /* Number of "notify-events" values */
-  const char   *keyword;               /* "notify-events" value */
-  _ipp_event_t events = _IPP_EVENT_NONE;
-                                       /* Bits for "notify-events" values */
-
-
-  count = ippGetCount(attr);
-  for (i = 0; i < count; i ++)
-  {
-    keyword = ippGetString(attr, i, NULL);
-
-    for (j = 0; j < (int)(sizeof(_ipp_events) / sizeof(_ipp_events[0])); j ++)
-    {
-      if (!strcmp(keyword, _ipp_jreasons[j]))
-      {
-        events |= 1 << j;
-       break;
-      }
-    }
-  }
-
-  return (events);
-}
-
-
-/*
- * 'get_notify_subscribed_event()' - Get the event name.
- */
-
-static const char *                    /* O - Event name */
-get_notify_subscribed_event(
-    _ipp_event_t event)                        /* I - Event bit */
-{
-  int          i;                      /* Looping var */
-  _ipp_event_t mask;                   /* Current mask */
-
-  for (i = 0, mask = 1; i < (int)(sizeof(_ipp_events) / sizeof(_ipp_events[0])); i ++, mask <<= 1)
-    if (event & mask)
-      return (_ipp_events[i]);
-
-  return ("none");
-}
-
-
-/*
- * 'get_printer_state_reasons_bits()' - Get the bits associated with "printer-state-reasons" values.
- */
-
-static _ipp_preason_t                  /* O - Bits */
-get_printer_state_reasons_bits(
-    ipp_attribute_t *attr)             /* I - "printer-state-reasons" bits */
-{
-  int                  i, j,           /* Looping vars */
-                       count;          /* Number of "printer-state-reasons" values */
-  const char           *keyword;       /* "printer-state-reasons" value */
-  _ipp_preason_t       preasons = _IPP_PREASON_NONE;
-                                       /* Bits for "printer-state-reasons" values */
-
-
-  count = ippGetCount(attr);
-  for (i = 0; i < count; i ++)
-  {
-    keyword = ippGetString(attr, i, NULL);
-
-    for (j = 0; j < (int)(sizeof(_ipp_preasons) / sizeof(_ipp_preasons[0])); j ++)
-    {
-      if (!strcmp(keyword, _ipp_preasons[j]))
-      {
-        preasons |= 1 << j;
-       break;
-      }
-    }
-  }
-
-  return (preasons);
-}
-
-
-/*
- * 'html_escape()' - Write a HTML-safe string.
- */
-
-static void
-html_escape(_ipp_client_t *client,     /* I - Client */
-           const char    *s,           /* I - String to write */
-           size_t        slen)         /* I - Number of characters to write */
-{
-  const char   *start,                 /* Start of segment */
-               *end;                   /* End of string */
-
-
-  start = s;
-  end   = s + (slen > 0 ? slen : strlen(s));
-
-  while (*s && s < end)
-  {
-    if (*s == '&' || *s == '<')
-    {
-      if (s > start)
-        httpWrite2(client->http, start, (size_t)(s - start));
-
-      if (*s == '&')
-        httpWrite2(client->http, "&amp;", 5);
-      else
-        httpWrite2(client->http, "&lt;", 4);
-
-      start = s + 1;
-    }
-
-    s ++;
-  }
-
-  if (s > start)
-    httpWrite2(client->http, start, (size_t)(s - start));
-}
-
-
-/*
- * 'html_footer()' - Show the web interface footer.
- *
- * This function also writes the trailing 0-length chunk.
- */
-
-static void
-html_footer(_ipp_client_t *client)     /* I - Client */
-{
-  html_printf(client,
-             "</div>\n"
-             "</body>\n"
-             "</html>\n");
-  httpWrite2(client->http, "", 0);
-}
-
-
-/*
- * 'html_header()' - Show the web interface header and title.
- */
-
-static void
-html_header(_ipp_client_t *client,     /* I - Client */
-            const char    *title)      /* I - Title */
-{
-  html_printf(client,
-             "<!doctype html>\n"
-             "<html>\n"
-             "<head>\n"
-             "<title>%s</title>\n"
-             "<link rel=\"shortcut icon\" href=\"/icon.png\" type=\"image/png\">\n"
-             "<link rel=\"apple-touch-icon\" href=\"/icon.png\" type=\"image/png\">\n"
-             "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=9\">\n"
-             "<meta name=\"viewport\" content=\"width=device-width\">\n"
-             "<style>\n"
-             "body { font-family: sans-serif; margin: 0; }\n"
-             "div.body { padding: 0px 10px 10px; }\n"
-             "blockquote { background: #dfd; border-radius: 5px; color: #006; padding: 10px; }\n"
-             "table.form { border-collapse: collapse; margin-top: 10px; width: 100%%; }\n"
-             "table.form td, table.form th { padding: 5px 2px; width: 50%%; }\n"
-             "table.form th { text-align: right; }\n"
-             "table.striped { border-bottom: solid thin black; border-collapse: collapse; width: 100%%; }\n"
-             "table.striped tr:nth-child(even) { background: #fcfcfc; }\n"
-             "table.striped tr:nth-child(odd) { background: #f0f0f0; }\n"
-             "table.striped th { background: white; border-bottom: solid thin black; text-align: left; vertical-align: bottom; }\n"
-             "table.striped td { margin: 0; padding: 5px; vertical-align: top; }\n"
-             "table.nav { border-collapse: collapse; width: 100%%; }\n"
-             "table.nav td { margin: 0; text-align: center; }\n"
-             "td.nav a, td.nav a:active, td.nav a:hover, td.nav a:hover:link, td.nav a:hover:link:visited, td.nav a:link, td.nav a:link:visited, td.nav a:visited { background: inherit; color: inherit; font-size: 80%%; text-decoration: none; }\n"
-             "td.nav { background: #333; color: #fff; padding: 4px 8px; width: 33%%; }\n"
-             "td.nav.sel { background: #fff; color: #000; font-weight: bold; }\n"
-             "td.nav:hover { background: #666; color: #fff; }\n"
-             "td.nav:active { background: #000; color: #ff0; }\n"
-             "</style>\n"
-             "</head>\n"
-             "<body>\n"
-             "<table class=\"nav\"><tr>"
-             "<td class=\"nav%s\"><a href=\"/\">Status</a></td>"
-             "<td class=\"nav%s\"><a href=\"/supplies\">Supplies</a></td>"
-             "<td class=\"nav%s\"><a href=\"/media\">Media</a></td>"
-             "</tr></table>\n"
-             "<div class=\"body\">\n", title, !strcmp(client->uri, "/") ? " sel" : "", !strcmp(client->uri, "/supplies") ? " sel" : "", !strcmp(client->uri, "/media") ? " sel" : "");
-}
-
-
-/*
- * 'html_printf()' - Send formatted text to the client, quoting as needed.
- */
-
-static void
-html_printf(_ipp_client_t *client,     /* I - Client */
-           const char    *format,      /* I - Printf-style format string */
-           ...)                        /* I - Additional arguments as needed */
-{
-  va_list      ap;                     /* Pointer to arguments */
-  const char   *start;                 /* Start of string */
-  char         size,                   /* Size character (h, l, L) */
-               type;                   /* Format type character */
-  int          width,                  /* Width of field */
-               prec;                   /* Number of characters of precision */
-  char         tformat[100],           /* Temporary format string for sprintf() */
-               *tptr,                  /* Pointer into temporary format */
-               temp[1024];             /* Buffer for formatted numbers */
-  char         *s;                     /* Pointer to string */
-
-
- /*
-  * Loop through the format string, formatting as needed...
-  */
-
-  va_start(ap, format);
-  start = format;
-
-  while (*format)
-  {
-    if (*format == '%')
-    {
-      if (format > start)
-        httpWrite2(client->http, start, (size_t)(format - start));
-
-      tptr    = tformat;
-      *tptr++ = *format++;
-
-      if (*format == '%')
-      {
-        httpWrite2(client->http, "%", 1);
-        format ++;
-       start = format;
-       continue;
-      }
-      else if (strchr(" -+#\'", *format))
-        *tptr++ = *format++;
-
-      if (*format == '*')
-      {
-       /*
-        * Get width from argument...
-       */
-
-       format ++;
-       width = va_arg(ap, int);
-
-       snprintf(tptr, sizeof(tformat) - (size_t)(tptr - tformat), "%d", width);
-       tptr += strlen(tptr);
-      }
-      else
-      {
-       width = 0;
-
-       while (isdigit(*format & 255))
-       {
-         if (tptr < (tformat + sizeof(tformat) - 1))
-           *tptr++ = *format;
-
-         width = width * 10 + *format++ - '0';
-       }
-      }
-
-      if (*format == '.')
-      {
-       if (tptr < (tformat + sizeof(tformat) - 1))
-         *tptr++ = *format;
-
-        format ++;
-
-        if (*format == '*')
-       {
-         /*
-         * Get precision from argument...
-         */
-
-         format ++;
-         prec = va_arg(ap, int);
-
-         snprintf(tptr, sizeof(tformat) - (size_t)(tptr - tformat), "%d", prec);
-         tptr += strlen(tptr);
-       }
-       else
-       {
-         prec = 0;
-
-         while (isdigit(*format & 255))
-         {
-           if (tptr < (tformat + sizeof(tformat) - 1))
-             *tptr++ = *format;
-
-           prec = prec * 10 + *format++ - '0';
-         }
-       }
-      }
-
-      if (*format == 'l' && format[1] == 'l')
-      {
-        size = 'L';
-
-       if (tptr < (tformat + sizeof(tformat) - 2))
-       {
-         *tptr++ = 'l';
-         *tptr++ = 'l';
-       }
-
-       format += 2;
-      }
-      else if (*format == 'h' || *format == 'l' || *format == 'L')
-      {
-       if (tptr < (tformat + sizeof(tformat) - 1))
-         *tptr++ = *format;
-
-        size = *format++;
-      }
-      else
-        size = 0;
-
-
-      if (!*format)
-      {
-        start = format;
-        break;
-      }
-
-      if (tptr < (tformat + sizeof(tformat) - 1))
-        *tptr++ = *format;
-
-      type  = *format++;
-      *tptr = '\0';
-      start = format;
-
-      switch (type)
-      {
-       case 'E' : /* Floating point formats */
-       case 'G' :
-       case 'e' :
-       case 'f' :
-       case 'g' :
-           if ((size_t)(width + 2) > sizeof(temp))
-             break;
-
-           sprintf(temp, tformat, va_arg(ap, double));
-
-            httpWrite2(client->http, temp, strlen(temp));
-           break;
-
-        case 'B' : /* Integer formats */
-       case 'X' :
-       case 'b' :
-        case 'd' :
-       case 'i' :
-       case 'o' :
-       case 'u' :
-       case 'x' :
-           if ((size_t)(width + 2) > sizeof(temp))
-             break;
-
-#  ifdef HAVE_LONG_LONG
-            if (size == 'L')
-             sprintf(temp, tformat, va_arg(ap, long long));
-           else
-#  endif /* HAVE_LONG_LONG */
-            if (size == 'l')
-             sprintf(temp, tformat, va_arg(ap, long));
-           else
-             sprintf(temp, tformat, va_arg(ap, int));
-
-            httpWrite2(client->http, temp, strlen(temp));
-           break;
-
-       case 'p' : /* Pointer value */
-           if ((size_t)(width + 2) > sizeof(temp))
-             break;
-
-           sprintf(temp, tformat, va_arg(ap, void *));
-
-            httpWrite2(client->http, temp, strlen(temp));
-           break;
-
-        case 'c' : /* Character or character array */
-            if (width <= 1)
-            {
-              temp[0] = (char)va_arg(ap, int);
-              temp[1] = '\0';
-              html_escape(client, temp, 1);
-            }
-            else
-              html_escape(client, va_arg(ap, char *), (size_t)width);
-           break;
-
-       case 's' : /* String */
-           if ((s = va_arg(ap, char *)) == NULL)
-             s = "(null)";
-
-            html_escape(client, s, strlen(s));
-           break;
-      }
-    }
-    else
-      format ++;
-  }
-
-  if (format > start)
-    httpWrite2(client->http, start, (size_t)(format - start));
-
-  va_end(ap);
-}
-
-
-/*
- * 'ipp_acknowledge_document()' - Acknowledge receipt of a document.
- */
-
-static void
-ipp_acknowledge_document(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_device_t                *device;        /* Device */
-  _ipp_job_t           *job;           /* Job */
-  ipp_attribute_t      *attr;          /* Attribute */
-
-
-  if ((device = find_device(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
-    return;
-  }
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
-    return;
-  }
-
-  if (!job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "document-number", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(attr) != IPP_TAG_OPERATION || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) != 1)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, attr ? "Bad document-number attribute." : "Missing document-number attribute.");
-    return;
-  }
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_acknowledge_identify_printer()' - Acknowledge an identify command.
- */
-
-static void
-ipp_acknowledge_identify_printer(
-    _ipp_client_t *client)             /* I - Client */
-{
-  // TODO: Implement this!
-  respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
-}
-
-
-/*
- * 'ipp_acknowledge_job()' - Acknowledge receipt of a job.
- */
-
-static void
-ipp_acknowledge_job(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_device_t                *device;        /* Device */
-  _ipp_job_t           *job;           /* Job */
-
-
-  if ((device = find_device(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
-    return;
-  }
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
-    return;
-  }
-
-  if (job->dev_uuid && strcmp(job->dev_uuid, device->uuid))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_AUTHORIZED, "Job not assigned to device.");
-    return;
-  }
-
-  if (!(job->state_reasons & _IPP_JREASON_JOB_FETCHABLE))
-  {
-    respond_ipp(client, _IPP_STATUS_ERROR_NOT_FETCHABLE, "Job not fetchable.");
-    return;
-  }
-
-  if (!job->dev_uuid)
-    job->dev_uuid = strdup(device->uuid);
-
-  job->state_reasons &= (_ipp_jreason_t)~_IPP_JREASON_JOB_FETCHABLE;
-
-  add_event(client->printer, job, _IPP_EVENT_JOB_STATE_CHANGED, "Job acknowledged.");
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_cancel_job()' - Cancel a job.
- */
-
-static void
-ipp_cancel_job(_ipp_client_t *client)  /* I - Client */
-{
-  _ipp_job_t           *job;           /* Job information */
-
-
- /*
-  * Get the job...
-  */
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
-    return;
-  }
-
- /*
-  * See if the job is already completed, canceled, or aborted; if so,
-  * we can't cancel...
-  */
-
-  switch (job->state)
-  {
-    case IPP_JSTATE_CANCELED :
-       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                   "Job #%d is already canceled - can\'t cancel.", job->id);
-        break;
-
-    case IPP_JSTATE_ABORTED :
-       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                   "Job #%d is already aborted - can\'t cancel.", job->id);
-        break;
-
-    case IPP_JSTATE_COMPLETED :
-       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                   "Job #%d is already completed - can\'t cancel.", job->id);
-        break;
-
-    default :
-       /*
-        * Cancel the job...
-       */
-
-       _cupsRWLockWrite(&(client->printer->rwlock));
-
-       if (job->state == IPP_JSTATE_PROCESSING ||
-           (job->state == IPP_JSTATE_HELD && job->fd >= 0))
-          job->cancel = 1;
-       else
-       {
-         job->state     = IPP_JSTATE_CANCELED;
-         job->completed = time(NULL);
-       }
-
-       _cupsRWUnlock(&(client->printer->rwlock));
-
-        add_event(client->printer, job, _IPP_EVENT_JOB_COMPLETED, NULL);
-
-       respond_ipp(client, IPP_STATUS_OK, NULL);
-        break;
-  }
-}
-
-
-/*
- * 'ipp_cancel_my_jobs()' - Cancel a user's jobs.
- */
-
-static void
-ipp_cancel_my_jobs(
-    _ipp_client_t *client)             /* I - Client */
-{
-  // TODO: Implement this!
-  respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
-}
-
-
-/*
- * 'ipp_cancel_subscription()' - Cancel a subscription.
- */
-
-static void
-ipp_cancel_subscription(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_subscription_t  *sub;           /* Subscription */
-
-
-  if ((sub = find_subscription(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Subscription was not found.");
-    return;
-  }
-
-  _cupsRWLockWrite(&client->printer->rwlock);
-  cupsArrayRemove(client->printer->subscriptions, sub);
-  delete_subscription(sub);
-  _cupsRWUnlock(&client->printer->rwlock);
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_close_job()' - Close an open job.
- */
-
-static void
-ipp_close_job(_ipp_client_t *client)   /* I - Client */
-{
-  _ipp_job_t           *job;           /* Job information */
-
-
- /*
-  * Get the job...
-  */
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
-    return;
-  }
-
- /*
-  * See if the job is already completed, canceled, or aborted; if so,
-  * we can't cancel...
-  */
-
-  switch (job->state)
-  {
-    case IPP_JSTATE_CANCELED :
-       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                   "Job #%d is canceled - can\'t close.", job->id);
-        break;
-
-    case IPP_JSTATE_ABORTED :
-       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                   "Job #%d is aborted - can\'t close.", job->id);
-        break;
-
-    case IPP_JSTATE_COMPLETED :
-       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                   "Job #%d is completed - can\'t close.", job->id);
-        break;
-
-    case IPP_JSTATE_PROCESSING :
-    case IPP_JSTATE_STOPPED :
-       respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                   "Job #%d is already closed.", job->id);
-        break;
-
-    default :
-       respond_ipp(client, IPP_STATUS_OK, NULL);
-        break;
-  }
-}
-
-
-/*
- * 'ipp_create_job()' - Create a job object.
- */
-
-static void
-ipp_create_job(_ipp_client_t *client)  /* I - Client */
-{
-  _ipp_job_t           *job;           /* New job */
-  cups_array_t         *ra;            /* Attributes to send in response */
-
-
- /*
-  * Validate print job attributes...
-  */
-
-  if (!valid_job_attributes(client))
-  {
-    httpFlush(client->http);
-    return;
-  }
-
- /*
-  * Do we have a file to print?
-  */
-
-  if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                "Unexpected document data following request.");
-    return;
-  }
-
- /*
-  * Create the job...
-  */
-
-  if ((job = create_job(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_TOO_MANY_JOBS, "Too many jobs are queued.");
-    return;
-  }
-
- /*
-  * Return the job info...
-  */
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
-  cupsArrayAdd(ra, "job-id");
-  cupsArrayAdd(ra, "job-state");
-  cupsArrayAdd(ra, "job-state-message");
-  cupsArrayAdd(ra, "job-state-reasons");
-  cupsArrayAdd(ra, "job-uri");
-
-  copy_job_attributes(client, job, ra);
-  cupsArrayDelete(ra);
-
- /*
-  * Add any subscriptions...
-  */
-
-  client->job = job;
-  ipp_create_xxx_subscriptions(client);
-}
-
-
-/*
- * 'ipp_create_xxx_subscriptions()' - Create job and printer subscriptions.
- */
-
-static void
-ipp_create_xxx_subscriptions(
-    _ipp_client_t *client)
-{
-  _ipp_subscription_t  *sub;           /* Subscription */
-  ipp_attribute_t      *attr;          /* Subscription attribute */
-  const char           *username;      /* requesting-user-name or
-                                          authenticated username */
-  int                  num_subs = 0,   /* Number of subscriptions */
-                       ok_subs = 0;    /* Number of good subscriptions */
-
-
- /*
-  * For the Create-xxx-Subscriptions operations, queue up a successful-ok
-  * response...
-  */
-
-  if (ippGetOperation(client->request) == IPP_OP_CREATE_JOB_SUBSCRIPTIONS || ippGetOperation(client->request) == IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS)
-    respond_ipp(client, IPP_STATUS_OK, NULL);
-
- /*
-  * Get the authenticated user name, if any...
-  */
-
-  if (client->username[0])
-    username = client->username;
-  else if ((attr = ippFindAttribute(client->request, "requesting-user-name", IPP_TAG_NAME)) != NULL && ippGetGroupTag(attr) == IPP_TAG_OPERATION && ippGetCount(attr) == 1)
-    username = ippGetString(attr, 0, NULL);
-  else
-    username = "guest";
-
- /*
-  * Skip past the initial attributes to the first subscription group.
-  */
-
-  attr = ippFirstAttribute(client->request);
-  while (attr && ippGetGroupTag(attr) != IPP_TAG_SUBSCRIPTION)
-    attr = ippNextAttribute(client->request);
-
-  while (attr)
-  {
-    _ipp_job_t         *job = NULL;    /* Job */
-    const char         *attrname,      /* Attribute name */
-                       *pullmethod = NULL;
-                                       /* notify-pull-method */
-    ipp_attribute_t    *notify_attributes = NULL,
-                                       /* notify-attributes */
-                       *notify_events = NULL,
-                                       /* notify-events */
-                       *notify_user_data = NULL;
-                                       /* notify-user-data */
-    int                        interval = 0,   /* notify-time-interval */
-                       lease = _IPP_NOTIFY_LEASE_DURATION_DEFAULT;
-                                       /* notify-lease-duration */
-    ipp_status_t       status = IPP_STATUS_OK;
-                                       /* notify-status-code */
-
-    num_subs ++;
-
-    while (attr)
-    {
-      if ((attrname = ippGetName(attr)) == NULL)
-        break;
-
-      if (!strcmp(attrname, "notify-recipient-uri"))
-      {
-       /*
-        * Push notifications not supported.
-       */
-
-        status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-       ippCopyAttribute(client->response, attr, 0);
-      }
-      else if (!strcmp(attrname, "notify-pull-method"))
-      {
-       pullmethod = ippGetString(attr, 0, NULL);
-
-        if (ippGetValueTag(attr) != IPP_TAG_KEYWORD || ippGetCount(attr) != 1 || !pullmethod || strcmp(pullmethod, "ippget"))
-       {
-          ippCopyAttribute(client->response, attr, 0);
-         pullmethod = NULL;
-         status     = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-       }
-      }
-      else if (!strcmp(attrname, "notify-attributes"))
-      {
-        if (ippGetValueTag(attr) != IPP_TAG_KEYWORD)
-       {
-         status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-
-       notify_attributes = attr;
-      }
-      else if (!strcmp(attrname, "notify-charset"))
-      {
-        if (ippGetValueTag(attr) != IPP_TAG_CHARSET || ippGetCount(attr) != 1 ||
-           (strcmp(ippGetString(attr, 0, NULL), "us-ascii") && strcmp(ippGetString(attr, 0, NULL), "utf-8")))
-       {
-         status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-      }
-      else if (!strcmp(attrname, "notify-natural-language"))
-      {
-        if (ippGetValueTag(attr) !=  IPP_TAG_LANGUAGE || ippGetCount(attr) != 1 || strcmp(ippGetString(attr, 0, NULL), "en"))
-        {
-         status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-      }
-      else if (!strcmp(attrname, "notify-user-data"))
-      {
-        int    datalen;                /* Length of data */
-
-        if (ippGetValueTag(attr) != IPP_TAG_STRING || ippGetCount(attr) != 1 || !ippGetOctetString(attr, 0, &datalen) || datalen > 63)
-       {
-         status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-       else
-         notify_user_data = attr;
-      }
-      else if (!strcmp(attrname, "notify-events"))
-      {
-        if (ippGetValueTag(attr) != IPP_TAG_KEYWORD)
-       {
-         status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-       else
-          notify_events = attr;
-      }
-      else if (!strcmp(attrname, "notify-lease-duration"))
-      {
-        if (ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) < 0)
-       {
-         status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-       else
-          lease = ippGetInteger(attr, 0);
-      }
-      else if (!strcmp(attrname, "notify-time-interval"))
-      {
-        if (ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) < 0)
-       {
-         status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-       else
-          interval = ippGetInteger(attr, 0);
-      }
-      else if (!strcmp(attrname, "notify-job-id"))
-      {
-        if (ippGetOperation(client->request) != IPP_OP_CREATE_JOB_SUBSCRIPTIONS || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetInteger(attr, 0) < 1)
-        {
-         status = IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-       else if ((job = find_job(client, ippGetInteger(attr, 0))) == NULL)
-       {
-         status = IPP_STATUS_ERROR_NOT_FOUND;
-         ippCopyAttribute(client->response, attr, 0);
-       }
-      }
-
-      attr = ippNextAttribute(client->request);
-    }
-
-    if (status)
-    {
-      ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_ENUM, "notify-status-code", status);
-    }
-    else if (!pullmethod)
-    {
-      ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_ENUM, "notify-status-code", IPP_STATUS_ERROR_BAD_REQUEST);
-    }
-    else
-    {
-      switch (ippGetOperation(client->request))
-      {
-       case IPP_OP_PRINT_JOB :
-       case IPP_OP_PRINT_URI :
-       case IPP_OP_CREATE_JOB :
-           job = client->job;
-           break;
-
-       default :
-           break;
-      }
-
-      if ((sub = create_subscription(client->printer, job, interval, lease, username, notify_events, notify_attributes, notify_user_data)) == NULL)
-      {
-        ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_INTEGER, "notify-subscription-id", sub->id);
-        ok_subs ++;
-      }
-      else
-        ippAddInteger(client->response, IPP_TAG_SUBSCRIPTION, IPP_TAG_ENUM, "notify-status-code", IPP_STATUS_ERROR_INTERNAL);
-    }
-  }
-
-  if (ok_subs == 0)
-    ippSetStatusCode(client->response, IPP_STATUS_ERROR_IGNORED_ALL_SUBSCRIPTIONS);
-  else if (ok_subs != num_subs)
-    ippSetStatusCode(client->response, IPP_STATUS_OK_IGNORED_SUBSCRIPTIONS);
-}
-
-
-/*
- * 'ipp_deregister_output_device()' - Unregister an output device.
- */
-
-static void
-ipp_deregister_output_device(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_device_t        *device;                /* Device */
-
-
- /*
-  * Find the device...
-  */
-
-  if ((device = find_device(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Output device not found.");
-    return;
-  }
-
- /*
-  * Remove the device from the printer...
-  */
-
-  _cupsRWLockWrite(&client->printer->rwlock);
-
-  cupsArrayRemove(client->printer->devices, device);
-
-  update_device_attributes_no_lock(client->printer);
-  update_device_state_no_lock(client->printer);
-
-  _cupsRWUnlock(&client->printer->rwlock);
-
- /*
-  * Delete the device...
-  */
-
-  delete_device(device);
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_fetch_document()' - Download a document.
- */
-
-static void
-ipp_fetch_document(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_device_t                *device;        /* Device */
-  _ipp_job_t           *job;           /* Job */
-  ipp_attribute_t      *attr;          /* Attribute */
-  int                  compression;    /* compression */
-  char                 filename[1024]; /* Job filename */
-  const char           *format;        /* document-format */
-
-
-  if ((device = find_device(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
-    return;
-  }
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
-    return;
-  }
-
-  if (!job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "document-number", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(attr) != IPP_TAG_OPERATION || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) != 1)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, attr ? "Bad document-number attribute." : "Missing document-number attribute.");
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "compression-accepted", IPP_TAG_KEYWORD)) != NULL)
-    compression = !strcmp(ippGetString(attr, 0, NULL), "gzip");
-  else
-    compression = 0;
-
-  if ((attr = ippFindAttribute(client->request, "document-format-accepted", IPP_TAG_MIMETYPE)) != NULL)
-  {
-    int        i,                              /* Looping var */
-       count = ippGetCount(attr);      /* Number of values */
-
-
-    for (i = 0; i < count; i ++)
-    {
-      format = ippGetString(attr, i, NULL);
-
-      create_job_filename(client->printer, job, NULL, filename, sizeof(filename));
-
-      if (!access(filename, R_OK))
-        break;
-    }
-
-    if (i >= count)
-    {
-      respond_ipp(client, _IPP_STATUS_ERROR_NOT_FETCHABLE, "Document not available in requested format.");
-      return;
-    }
-  }
-  else if ((attr = ippFindAttribute(job->attrs, "document-format", IPP_TAG_MIMETYPE)) != NULL)
-    format = ippGetString(attr, 0, NULL);
-  else
-  {
-    respond_ipp(client, _IPP_STATUS_ERROR_NOT_FETCHABLE, "Document format unknown.");
-    return;
-  }
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-  ippAddString(client->response, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format", NULL, format);
-  ippAddString(client->response, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "compression", NULL, compression ? "gzip" : "none");
-
-  client->fetch_file = open(filename, O_RDONLY);
-}
-
-
-/*
- * 'ipp_fetch_job()' - Download a job.
- */
-
-static void
-ipp_fetch_job(_ipp_client_t *client)   /* I - Client */
-{
-  _ipp_device_t                *device;        /* Device */
-  _ipp_job_t           *job;           /* Job */
-
-
-  if ((device = find_device(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
-    return;
-  }
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
-    return;
-  }
-
-  if (job->dev_uuid && strcmp(job->dev_uuid, device->uuid))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
-    return;
-  }
-
-  if (!(job->state_reasons & _IPP_JREASON_JOB_FETCHABLE))
-  {
-    respond_ipp(client, _IPP_STATUS_ERROR_NOT_FETCHABLE, "Job not fetchable.");
-    return;
-  }
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-  copy_attributes(client->response, job->attrs, NULL, IPP_TAG_JOB, 0);
-}
-
-
-/*
- * 'ipp_get_document_attributes()' - Get the attributes for a document object.
- *
- * Note: This implementation only supports single document jobs so we
- *       synthesize the information for a single document from the job.
- */
-
-static void
-ipp_get_document_attributes(
-    _ipp_client_t *client)             /* I - Client */
-{
-  // TODO: Implement this!
-  respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
-}
-
-
-/*
- * 'ipp_get_documents()' - Get the list of documents in a job.
- *
- * Note: This implementation only supports single document jobs so we
- *       synthesize the information for a single document from the job.
- */
-
-static void
-ipp_get_documents(_ipp_client_t *client)/* I - Client */
-{
-  // TODO: Implement this!
-  respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
-}
-
-
-/*
- * 'ipp_get_job_attributes()' - Get the attributes for a job object.
- */
-
-static void
-ipp_get_job_attributes(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_job_t   *job;                   /* Job */
-  cups_array_t *ra;                    /* requested-attributes */
-
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job not found.");
-    return;
-  }
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  ra = ippCreateRequestedArray(client->request);
-  copy_job_attributes(client, job, ra);
-  cupsArrayDelete(ra);
-}
-
-
-/*
- * 'ipp_get_jobs()' - Get a list of job objects.
- */
-
-static void
-ipp_get_jobs(_ipp_client_t *client)    /* I - Client */
-{
-  ipp_attribute_t      *attr;          /* Current attribute */
-  const char           *which_jobs = NULL;
-                                       /* which-jobs values */
-  int                  job_comparison; /* Job comparison */
-  ipp_jstate_t         job_state;      /* job-state value */
-  int                  first_job_id,   /* First job ID */
-                       limit,          /* Maximum number of jobs to return */
-                       count;          /* Number of jobs that match */
-  const char           *username;      /* Username */
-  _ipp_job_t           *job;           /* Current job pointer */
-  cups_array_t         *ra;            /* Requested attributes array */
-
-
- /*
-  * See if the "which-jobs" attribute have been specified...
-  */
-
-  if ((attr = ippFindAttribute(client->request, "which-jobs",
-                               IPP_TAG_KEYWORD)) != NULL)
-  {
-    which_jobs = ippGetString(attr, 0, NULL);
-    fprintf(stderr, "%s Get-Jobs which-jobs=%s", client->hostname, which_jobs);
-  }
-
-  if (!which_jobs || !strcmp(which_jobs, "not-completed"))
-  {
-    job_comparison = -1;
-    job_state      = IPP_JSTATE_STOPPED;
-  }
-  else if (!strcmp(which_jobs, "completed"))
-  {
-    job_comparison = 1;
-    job_state      = IPP_JSTATE_CANCELED;
-  }
-  else if (!strcmp(which_jobs, "aborted"))
-  {
-    job_comparison = 0;
-    job_state      = IPP_JSTATE_ABORTED;
-  }
-  else if (!strcmp(which_jobs, "all"))
-  {
-    job_comparison = 1;
-    job_state      = IPP_JSTATE_PENDING;
-  }
-  else if (!strcmp(which_jobs, "canceled"))
-  {
-    job_comparison = 0;
-    job_state      = IPP_JSTATE_CANCELED;
-  }
-  else if (!strcmp(which_jobs, "pending"))
-  {
-    job_comparison = 0;
-    job_state      = IPP_JSTATE_PENDING;
-  }
-  else if (!strcmp(which_jobs, "pending-held"))
-  {
-    job_comparison = 0;
-    job_state      = IPP_JSTATE_HELD;
-  }
-  else if (!strcmp(which_jobs, "processing"))
-  {
-    job_comparison = 0;
-    job_state      = IPP_JSTATE_PROCESSING;
-  }
-  else if (!strcmp(which_jobs, "processing-stopped"))
-  {
-    job_comparison = 0;
-    job_state      = IPP_JSTATE_STOPPED;
-  }
-  else
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
-                "The which-jobs value \"%s\" is not supported.", which_jobs);
-    ippAddString(client->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_KEYWORD,
-                 "which-jobs", NULL, which_jobs);
-    return;
-  }
-
- /*
-  * See if they want to limit the number of jobs reported...
-  */
-
-  if ((attr = ippFindAttribute(client->request, "limit",
-                               IPP_TAG_INTEGER)) != NULL)
-  {
-    limit = ippGetInteger(attr, 0);
-
-    fprintf(stderr, "%s Get-Jobs limit=%d", client->hostname, limit);
-  }
-  else
-    limit = 0;
-
-  if ((attr = ippFindAttribute(client->request, "first-job-id",
-                               IPP_TAG_INTEGER)) != NULL)
-  {
-    first_job_id = ippGetInteger(attr, 0);
-
-    fprintf(stderr, "%s Get-Jobs first-job-id=%d", client->hostname,
-            first_job_id);
-  }
-  else
-    first_job_id = 1;
-
- /*
-  * See if we only want to see jobs for a specific user...
-  */
-
-  username = NULL;
-
-  if ((attr = ippFindAttribute(client->request, "my-jobs",
-                               IPP_TAG_BOOLEAN)) != NULL)
-  {
-    int my_jobs = ippGetBoolean(attr, 0);
-
-    fprintf(stderr, "%s Get-Jobs my-jobs=%s\n", client->hostname,
-            my_jobs ? "true" : "false");
-
-    if (my_jobs)
-    {
-      if ((attr = ippFindAttribute(client->request, "requesting-user-name",
-                                       IPP_TAG_NAME)) == NULL)
-      {
-       respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                   "Need requesting-user-name with my-jobs.");
-       return;
-      }
-
-      username = ippGetString(attr, 0, NULL);
-
-      fprintf(stderr, "%s Get-Jobs requesting-user-name=\"%s\"\n",
-              client->hostname, username);
-    }
-  }
-
- /*
-  * OK, build a list of jobs for this printer...
-  */
-
-  ra = ippCreateRequestedArray(client->request);
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  _cupsRWLockRead(&(client->printer->rwlock));
-
-  for (count = 0, job = (_ipp_job_t *)cupsArrayFirst(client->printer->jobs);
-       (limit <= 0 || count < limit) && job;
-       job = (_ipp_job_t *)cupsArrayNext(client->printer->jobs))
-  {
-   /*
-    * Filter out jobs that don't match...
-    */
-
-    if ((job_comparison < 0 && job->state > job_state) ||
-       (job_comparison == 0 && job->state != job_state) ||
-       (job_comparison > 0 && job->state < job_state) ||
-       job->id < first_job_id ||
-       (username && job->username &&
-        strcasecmp(username, job->username)))
-      continue;
-
-    if (count > 0)
-      ippAddSeparator(client->response);
-
-    count ++;
-    copy_job_attributes(client, job, ra);
-  }
-
-  cupsArrayDelete(ra);
-
-  _cupsRWUnlock(&(client->printer->rwlock));
-}
-
-
-/*
- * 'ipp_get_notifications()' - Get notification events for one or more subscriptions.
- */
-
-static void
-ipp_get_notifications(
-    _ipp_client_t *client)             /* I - Client */
-{
-  ipp_attribute_t      *sub_ids,       /* notify-subscription-ids */
-                       *seq_nums,      /* notify-sequence-numbers */
-                       *notify_wait;   /* Wait for events? */
-  int                  i,              /* Looping vars */
-                       count,          /* Number of IDs */
-                       first = 1,      /* First event? */
-                       seq_num;        /* Sequence number */
-  _ipp_subscription_t  *sub;           /* Current subscription */
-  ipp_t                        *event;         /* Current event */
-
-
-  if ((sub_ids = ippFindAttribute(client->request, "notify-subscription-ids", IPP_TAG_INTEGER)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing notify-subscription-ids attribute.");
-    return;
-  }
-
-  count       = ippGetCount(sub_ids);
-  seq_nums    = ippFindAttribute(client->request, "notify-sequence-numbers", IPP_TAG_INTEGER);
-  notify_wait = ippFindAttribute(client->request, "notify-wait", IPP_TAG_BOOLEAN);
-
-  if (seq_nums && count != ippGetCount(seq_nums))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "The notify-subscription-ids and notify-sequence-numbers attributes are different lengths.");
-    return;
-  }
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-  ippAddInteger(client->response, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "notify-get-interval", 30);
-
-  for (i = 0; i < count; i ++)
-  {
-    if ((sub = find_subscription(client, ippGetInteger(sub_ids, i))) == NULL)
-      continue;
-
-    seq_num = ippGetInteger(seq_nums, i);
-    if (seq_num < sub->first_sequence)
-      seq_num = sub->first_sequence;
-
-    if (seq_num > sub->last_sequence)
-      continue;
-
-    for (event = (ipp_t *)cupsArrayIndex(sub->events, seq_num - sub->first_sequence);
-         event;
-        event = (ipp_t *)cupsArrayNext(sub->events))
-    {
-      if (first)
-        first = 0;
-      else
-        ippAddSeparator(client->response);
-
-      ippCopyAttributes(client->response, event, 0, NULL, NULL);
-    }
-  }
-}
-
-
-/*
- * 'ipp_get_output_device_attributes()' - Get attributes for an output device.
- */
-
-static void
-ipp_get_output_device_attributes(
-    _ipp_client_t *client)             /* I - Client */
-{
-  // TODO: Implement this!
-  respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Need to implement this.");
-}
-
-
-/*
- * 'ipp_get_printer_attributes()' - Get the attributes for a printer object.
- */
-
-static void
-ipp_get_printer_attributes(
-    _ipp_client_t *client)             /* I - Client */
-{
-  cups_array_t         *ra;            /* Requested attributes array */
-  _ipp_printer_t       *printer;       /* Printer */
-
-
- /*
-  * Send the attributes...
-  */
-
-  ra      = ippCreateRequestedArray(client->request);
-  printer = client->printer;
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  _cupsRWLockRead(&(printer->rwlock));
-
-  copy_attributes(client->response, printer->attrs, ra, IPP_TAG_ZERO,
-                 IPP_TAG_CUPS_CONST);
-  copy_attributes(client->response, printer->dev_attrs, ra, IPP_TAG_ZERO, IPP_TAG_ZERO);
-
-  if (!ra || cupsArrayFind(ra, "printer-config-change-date-time"))
-    ippAddDate(client->response, IPP_TAG_PRINTER, "printer-config-change-date-time", ippTimeToDate(printer->config_time));
-
-  if (!ra || cupsArrayFind(ra, "printer-config-change-time"))
-    ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-config-change-time", (int)(printer->config_time - printer->start_time));
-
-  if (!ra || cupsArrayFind(ra, "printer-current-time"))
-    ippAddDate(client->response, IPP_TAG_PRINTER, "printer-current-time", ippTimeToDate(time(NULL)));
-
-
-  if (!ra || cupsArrayFind(ra, "printer-state"))
-    ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_ENUM,
-                  "printer-state", printer->state > printer->dev_state ? printer->state : printer->dev_state);
-
-  if (!ra || cupsArrayFind(ra, "printer-state-change-date-time"))
-    ippAddDate(client->response, IPP_TAG_PRINTER, "printer-state-change-date-time", ippTimeToDate(printer->state_time));
-
-  if (!ra || cupsArrayFind(ra, "printer-state-change-time"))
-    ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-state-change-time", (int)(printer->state_time - printer->start_time));
-
-  if (!ra || cupsArrayFind(ra, "printer-state-message"))
-  {
-    static const char * const messages[] = { "Idle.", "Printing.", "Stopped." };
-
-    if (printer->state > printer->dev_state)
-      ippAddString(client->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-state-message", NULL, messages[printer->state - IPP_PSTATE_IDLE]);
-    else
-      ippAddString(client->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_TEXT), "printer-state-message", NULL, messages[printer->dev_state - IPP_PSTATE_IDLE]);
-  }
-
-  if (!ra || cupsArrayFind(ra, "printer-state-reasons"))
-    copy_printer_state_reasons(client->response, IPP_TAG_PRINTER, printer);
-
-  if (!ra || cupsArrayFind(ra, "printer-up-time"))
-    ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "printer-up-time", (int)(time(NULL) - printer->start_time));
-
-  if (!ra || cupsArrayFind(ra, "queued-job-count"))
-    ippAddInteger(client->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER, "queued-job-count", cupsArrayCount(printer->active_jobs));
-
-  _cupsRWUnlock(&(printer->rwlock));
-
-  cupsArrayDelete(ra);
-}
-
-
-/*
- * 'ipp_get_printer_supported_values()' - Return the supported values for
- *                                        the infrastructure printer.
- */
-
-static void
-ipp_get_printer_supported_values(
-    _ipp_client_t *client)             /* I - Client */
-{
-  cups_array_t *ra = ippCreateRequestedArray(client->request);
-                                       /* Requested attributes */
-
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  copy_attributes(client->response, client->printer->attrs, ra, IPP_TAG_PRINTER, 1);
-
-  cupsArrayDelete(ra);
-}
-
-
-/*
- * 'ipp_get_subscription_attributes()' - Get attributes for a subscription.
- */
-
-static void
-ipp_get_subscription_attributes(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_subscription_t  *sub;           /* Subscription */
-  cups_array_t         *ra = ippCreateRequestedArray(client->request);
-                                       /* Requested attributes */
-
-
-  if ((sub = find_subscription(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Subscription was not found.");
-  }
-  else
-  {
-    respond_ipp(client, IPP_STATUS_OK, NULL);
-    copy_subscription_attributes(client, sub, ra);
-  }
-
-  cupsArrayDelete(ra);
-}
-
-
-/*
- * 'ipp_get_subscriptions()' - Get attributes for all subscriptions.
- */
-
-static void
-ipp_get_subscriptions(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_subscription_t  *sub;           /* Current subscription */
-  cups_array_t         *ra = ippCreateRequestedArray(client->request);
-                                       /* Requested attributes */
-  int                  first = 1;      /* First time? */
-
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-  _cupsRWLockRead(&client->printer->rwlock);
-  for (sub = (_ipp_subscription_t *)cupsArrayFirst(client->printer->subscriptions);
-       sub;
-       sub = (_ipp_subscription_t *)cupsArrayNext(client->printer->subscriptions))
-  {
-    if (first)
-      first = 0;
-    else
-      ippAddSeparator(client->response);
-
-    copy_subscription_attributes(client, sub, ra);
-  }
-
-  cupsArrayDelete(ra);
-}
-
-
-/*
- * 'ipp_identify_printer()' - Beep or display a message.
- */
-
-static void
-ipp_identify_printer(
-    _ipp_client_t *client)             /* I - Client */
-{
-  /* TODO: Do something */
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_print_job()' - Create a job object with an attached document.
- */
-
-static void
-ipp_print_job(_ipp_client_t *client)   /* I - Client */
-{
-  _ipp_job_t           *job;           /* New job */
-  char                 filename[1024], /* Filename buffer */
-                       buffer[4096];   /* Copy buffer */
-  ssize_t              bytes;          /* Bytes read */
-  cups_array_t         *ra;            /* Attributes to send in response */
-
-
- /*
-  * Validate print job attributes...
-  */
-
-  if (!valid_job_attributes(client))
-  {
-    httpFlush(client->http);
-    return;
-  }
-
- /*
-  * Do we have a file to print?
-  */
-
-  if (httpGetState(client->http) == HTTP_STATE_POST_SEND)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "No file in request.");
-    return;
-  }
-
- /*
-  * Print the job...
-  */
-
-  if ((job = create_job(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BUSY,
-                "Currently printing another job.");
-    return;
-  }
-
- /*
-  * Create a file for the request data...
-  */
-
-  create_job_filename(client->printer, job, NULL, filename, sizeof(filename));
-
-  if (Verbosity)
-    fprintf(stderr, "Creating job file \"%s\", format \"%s\".\n", filename, job->format);
-
-  if ((job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0)
-  {
-    job->state = IPP_JSTATE_ABORTED;
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to create print file: %s", strerror(errno));
-    return;
-  }
-
-  while ((bytes = httpRead2(client->http, buffer, sizeof(buffer))) > 0)
-  {
-    if (write(job->fd, buffer, (size_t)bytes) < bytes)
-    {
-      int error = errno;               /* Write error */
-
-      job->state = IPP_JSTATE_ABORTED;
-
-      close(job->fd);
-      job->fd = -1;
-
-      unlink(filename);
-
-      respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                  "Unable to write print file: %s", strerror(error));
-      return;
-    }
-  }
-
-  if (bytes < 0)
-  {
-   /*
-    * Got an error while reading the print data, so abort this job.
-    */
-
-    job->state = IPP_JSTATE_ABORTED;
-
-    close(job->fd);
-    job->fd = -1;
-
-    unlink(filename);
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to read print file.");
-    return;
-  }
-
-  if (close(job->fd))
-  {
-    int error = errno;         /* Write error */
-
-    job->state = IPP_JSTATE_ABORTED;
-    job->fd    = -1;
-
-    unlink(filename);
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to write print file: %s", strerror(error));
-    return;
-  }
-
-  job->fd       = -1;
-  job->filename = strdup(filename);
-  job->state    = IPP_JSTATE_PENDING;
-
- /*
-  * Process the job, if possible...
-  */
-
-  check_jobs(client->printer);
-  
- /*
-  * Return the job info...
-  */
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
-  cupsArrayAdd(ra, "job-id");
-  cupsArrayAdd(ra, "job-state");
-  cupsArrayAdd(ra, "job-state-message");
-  cupsArrayAdd(ra, "job-state-reasons");
-  cupsArrayAdd(ra, "job-uri");
-
-  copy_job_attributes(client, job, ra);
-  cupsArrayDelete(ra);
-
- /*
-  * Process any pending subscriptions...
-  */
-
-  client->job = job;
-  ipp_create_xxx_subscriptions(client);
-}
-
-
-/*
- * 'ipp_print_uri()' - Create a job object with a referenced document.
- */
-
-static void
-ipp_print_uri(_ipp_client_t *client)   /* I - Client */
-{
-  _ipp_job_t           *job;           /* New job */
-  ipp_attribute_t      *uri;           /* document-uri */
-  char                 scheme[256],    /* URI scheme */
-                       userpass[256],  /* Username and password info */
-                       hostname[256],  /* Hostname */
-                       resource[1024]; /* Resource path */
-  int                  port;           /* Port number */
-  http_uri_status_t    uri_status;     /* URI decode status */
-  http_encryption_t    encryption;     /* Encryption to use, if any */
-  http_t               *http;          /* Connection for http/https URIs */
-  http_status_t                status;         /* Access status for http/https URIs */
-  int                  infile;         /* Input file for local file URIs */
-  char                 filename[1024], /* Filename buffer */
-                       buffer[4096];   /* Copy buffer */
-  ssize_t              bytes;          /* Bytes read */
-  cups_array_t         *ra;            /* Attributes to send in response */
-  static const char * const uri_status_strings[] =
-  {                                    /* URI decode errors */
-    "URI too large.",
-    "Bad arguments to function.",
-    "Bad resource in URI.",
-    "Bad port number in URI.",
-    "Bad hostname in URI.",
-    "Bad username in URI.",
-    "Bad scheme in URI.",
-    "Bad/empty URI."
-  };
-
-
- /*
-  * Validate print job attributes...
-  */
-
-  if (!valid_job_attributes(client))
-  {
-    httpFlush(client->http);
-    return;
-  }
-
- /*
-  * Do we have a file to print?
-  */
-
-  if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                "Unexpected document data following request.");
-    return;
-  }
-
- /*
-  * Do we have a document URI?
-  */
-
-  if ((uri = ippFindAttribute(client->request, "document-uri",
-                              IPP_TAG_URI)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing document-uri.");
-    return;
-  }
-
-  if (ippGetCount(uri) != 1)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                "Too many document-uri values.");
-    return;
-  }
-
-  uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, ippGetString(uri, 0, NULL),
-                               scheme, sizeof(scheme), userpass,
-                               sizeof(userpass), hostname, sizeof(hostname),
-                               &port, resource, sizeof(resource));
-  if (uri_status < HTTP_URI_STATUS_OK)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad document-uri: %s",
-                uri_status_strings[uri_status - HTTP_URI_STATUS_OVERFLOW]);
-    return;
-  }
-
-  if (strcmp(scheme, "file") &&
-#ifdef HAVE_SSL
-      strcmp(scheme, "https") &&
-#endif /* HAVE_SSL */
-      strcmp(scheme, "http"))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_URI_SCHEME,
-                "URI scheme \"%s\" not supported.", scheme);
-    return;
-  }
-
-  if (!strcmp(scheme, "file") && access(resource, R_OK))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                "Unable to access URI: %s", strerror(errno));
-    return;
-  }
-
- /*
-  * Print the job...
-  */
-
-  if ((job = create_job(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BUSY,
-                "Currently printing another job.");
-    return;
-  }
-
- /*
-  * Create a file for the request data...
-  */
-
-  if (!strcasecmp(job->format, "image/jpeg"))
-    snprintf(filename, sizeof(filename), "%s/%d.jpg",
-             client->printer->directory, job->id);
-  else if (!strcasecmp(job->format, "image/png"))
-    snprintf(filename, sizeof(filename), "%s/%d.png",
-             client->printer->directory, job->id);
-  else if (!strcasecmp(job->format, "application/pdf"))
-    snprintf(filename, sizeof(filename), "%s/%d.pdf",
-             client->printer->directory, job->id);
-  else if (!strcasecmp(job->format, "application/postscript"))
-    snprintf(filename, sizeof(filename), "%s/%d.ps",
-             client->printer->directory, job->id);
-  else
-    snprintf(filename, sizeof(filename), "%s/%d.prn",
-             client->printer->directory, job->id);
-
-  if ((job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600)) < 0)
-  {
-    job->state = IPP_JSTATE_ABORTED;
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to create print file: %s", strerror(errno));
-    return;
-  }
-
-  if (!strcmp(scheme, "file"))
-  {
-    if ((infile = open(resource, O_RDONLY)) < 0)
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                  "Unable to access URI: %s", strerror(errno));
-      return;
-    }
-
-    do
-    {
-      if ((bytes = read(infile, buffer, sizeof(buffer))) < 0 &&
-          (errno == EAGAIN || errno == EINTR))
-        bytes = 1;
-      else if (bytes > 0 && write(job->fd, buffer, (size_t)bytes) < bytes)
-      {
-       int error = errno;              /* Write error */
-
-       job->state = IPP_JSTATE_ABORTED;
-
-       close(job->fd);
-       job->fd = -1;
-
-       unlink(filename);
-       close(infile);
-
-       respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                   "Unable to write print file: %s", strerror(error));
-       return;
-      }
-    }
-    while (bytes > 0);
-
-    close(infile);
-  }
-  else
-  {
-#ifdef HAVE_SSL
-    if (port == 443 || !strcmp(scheme, "https"))
-      encryption = HTTP_ENCRYPTION_ALWAYS;
-    else
-#endif /* HAVE_SSL */
-    encryption = HTTP_ENCRYPTION_IF_REQUESTED;
-
-    if ((http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption,
-                             1, 30000, NULL)) == NULL)
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                  "Unable to connect to %s: %s", hostname,
-                 cupsLastErrorString());
-      job->state = IPP_JSTATE_ABORTED;
-
-      close(job->fd);
-      job->fd = -1;
-
-      unlink(filename);
-      return;
-    }
-
-    httpClearFields(http);
-    httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
-    if (httpGet(http, resource))
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                  "Unable to GET URI: %s", strerror(errno));
-
-      job->state = IPP_JSTATE_ABORTED;
-
-      close(job->fd);
-      job->fd = -1;
-
-      unlink(filename);
-      httpClose(http);
-      return;
-    }
-
-    while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
-
-    if (status != HTTP_STATUS_OK)
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                  "Unable to GET URI: %s", httpStatus(status));
-
-      job->state = IPP_JSTATE_ABORTED;
-
-      close(job->fd);
-      job->fd = -1;
-
-      unlink(filename);
-      httpClose(http);
-      return;
-    }
-
-    while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
-    {
-      if (write(job->fd, buffer, (size_t)bytes) < bytes)
-      {
-       int error = errno;              /* Write error */
-
-       job->state = IPP_JSTATE_ABORTED;
-
-       close(job->fd);
-       job->fd = -1;
-
-       unlink(filename);
-       httpClose(http);
-
-       respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                   "Unable to write print file: %s", strerror(error));
-       return;
-      }
-    }
-
-    httpClose(http);
-  }
-
-  if (close(job->fd))
-  {
-    int error = errno;         /* Write error */
-
-    job->state = IPP_JSTATE_ABORTED;
-    job->fd    = -1;
-
-    unlink(filename);
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to write print file: %s", strerror(error));
-    return;
-  }
-
-  job->fd       = -1;
-  job->filename = strdup(filename);
-  job->state    = IPP_JSTATE_PENDING;
-
-  /* TODO: Do something different here - only process if the printer is idle */
- /*
-  * Process the job...
-  */
-
-  check_jobs(client->printer);
-
- /*
-  * Return the job info...
-  */
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
-  cupsArrayAdd(ra, "job-id");
-  cupsArrayAdd(ra, "job-state");
-  cupsArrayAdd(ra, "job-state-reasons");
-  cupsArrayAdd(ra, "job-uri");
-
-  copy_job_attributes(client, job, ra);
-  cupsArrayDelete(ra);
-
- /*
-  * Process any pending subscriptions...
-  */
-
-  client->job = job;
-  ipp_create_xxx_subscriptions(client);
-}
-
-
-/*
- * 'ipp_renew_subscription()' - Renew a subscription.
- */
-
-static void
-ipp_renew_subscription(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_subscription_t  *sub;           /* Subscription */
-  ipp_attribute_t      *attr;          /* notify-lease-duration */
-  int                  lease;          /* Lease duration in seconds */
-
-
-  if ((sub = find_subscription(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Subscription was not found.");
-    return;
-  }
-
-  if (sub->job)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Per-job subscriptions cannot be renewed.");
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "notify-lease-duration", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetGroupTag(attr) != IPP_TAG_SUBSCRIPTION || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) < 0)
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES, "Bad notify-lease-duration.");
-      return;
-    }
-
-    lease = ippGetInteger(attr, 0);
-  }
-  else
-    lease = _IPP_NOTIFY_LEASE_DURATION_DEFAULT;
-
-  sub->lease = lease;
-
-  if (lease)
-    sub->expire = time(NULL) + sub->lease;
-  else
-    sub->expire = INT_MAX;
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_send_document()' - Add an attached document to a job object created with
- *                         Create-Job.
- */
-
-static void
-ipp_send_document(_ipp_client_t *client)/* I - Client */
-{
-  _ipp_job_t           *job;           /* Job information */
-  char                 filename[1024], /* Filename buffer */
-                       buffer[4096];   /* Copy buffer */
-  ssize_t              bytes;          /* Bytes read */
-  ipp_attribute_t      *attr;          /* Current attribute */
-  cups_array_t         *ra;            /* Attributes to send in response */
-
-
- /*
-  * Get the job...
-  */
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
-    httpFlush(client->http);
-    return;
-  }
-
- /*
-  * See if we already have a document for this job or the job has already
-  * in a non-pending state...
-  */
-
-  if (job->state > IPP_JSTATE_HELD)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                "Job is not in a pending state.");
-    httpFlush(client->http);
-    return;
-  }
-  else if (job->filename || job->fd >= 0)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
-                "Multiple document jobs are not supported.");
-    httpFlush(client->http);
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "last-document",
-                               IPP_TAG_ZERO)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                "Missing required last-document attribute.");
-    httpFlush(client->http);
-    return;
-  }
-  else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1 ||
-           !ippGetBoolean(attr, 0))
-  {
-    respond_unsupported(client, attr);
-    httpFlush(client->http);
-    return;
-  }
-
- /*
-  * Validate document attributes...
-  */
-
-  if (!valid_doc_attributes(client))
-  {
-    httpFlush(client->http);
-    return;
-  }
-
-  copy_attributes(job->attrs, client->request, NULL, IPP_TAG_JOB, 0);
-
- /*
-  * Get the document format for the job...
-  */
-
-  _cupsRWLockWrite(&(client->printer->rwlock));
-
-  if ((attr = ippFindAttribute(job->attrs, "document-format-detected", IPP_TAG_MIMETYPE)) != NULL)
-    job->format = ippGetString(attr, 0, NULL);
-  else if ((attr = ippFindAttribute(job->attrs, "document-format-supplied", IPP_TAG_MIMETYPE)) != NULL)
-    job->format = ippGetString(attr, 0, NULL);
-  else
-    job->format = "application/octet-stream";
-
- /*
-  * Create a file for the request data...
-  */
-
-  create_job_filename(client->printer, job, NULL, filename, sizeof(filename));
-
-  if (Verbosity)
-    fprintf(stderr, "Creating job file \"%s\", format \"%s\".\n", filename, job->format);
-
-  job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600);
-
-  _cupsRWUnlock(&(client->printer->rwlock));
-
-  if (job->fd < 0)
-  {
-    job->state = IPP_JSTATE_ABORTED;
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to create print file: %s", strerror(errno));
-    return;
-  }
-
-  while ((bytes = httpRead2(client->http, buffer, sizeof(buffer))) > 0)
-  {
-    if (write(job->fd, buffer, (size_t)bytes) < bytes)
-    {
-      int error = errno;               /* Write error */
-
-      job->state = IPP_JSTATE_ABORTED;
-
-      close(job->fd);
-      job->fd = -1;
-
-      unlink(filename);
-
-      respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                  "Unable to write print file: %s", strerror(error));
-      return;
-    }
-  }
-
-  if (bytes < 0)
-  {
-   /*
-    * Got an error while reading the print data, so abort this job.
-    */
-
-    job->state = IPP_JSTATE_ABORTED;
-
-    close(job->fd);
-    job->fd = -1;
-
-    unlink(filename);
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to read print file.");
-    return;
-  }
-
-  if (close(job->fd))
-  {
-    int error = errno;                 /* Write error */
-
-    job->state = IPP_JSTATE_ABORTED;
-    job->fd    = -1;
-
-    unlink(filename);
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to write print file: %s", strerror(error));
-    return;
-  }
-
-  _cupsRWLockWrite(&(client->printer->rwlock));
-
-  job->fd       = -1;
-  job->filename = strdup(filename);
-  job->state    = IPP_JSTATE_PENDING;
-
-  _cupsRWUnlock(&(client->printer->rwlock));
-
- /*
-  * Process the job, if possible...
-  */
-
-  check_jobs(client->printer);
-  
- /*
-  * Return the job info...
-  */
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
-  cupsArrayAdd(ra, "job-id");
-  cupsArrayAdd(ra, "job-state");
-  cupsArrayAdd(ra, "job-state-reasons");
-  cupsArrayAdd(ra, "job-uri");
-
-  copy_job_attributes(client, job, ra);
-  cupsArrayDelete(ra);
-}
-
-
-/*
- * 'ipp_send_uri()' - Add a referenced document to a job object created with
- *                    Create-Job.
- */
-
-static void
-ipp_send_uri(_ipp_client_t *client)    /* I - Client */
-{
-  _ipp_job_t           *job;           /* Job information */
-  ipp_attribute_t      *uri;           /* document-uri */
-  char                 scheme[256],    /* URI scheme */
-                       userpass[256],  /* Username and password info */
-                       hostname[256],  /* Hostname */
-                       resource[1024]; /* Resource path */
-  int                  port;           /* Port number */
-  http_uri_status_t    uri_status;     /* URI decode status */
-  http_encryption_t    encryption;     /* Encryption to use, if any */
-  http_t               *http;          /* Connection for http/https URIs */
-  http_status_t                status;         /* Access status for http/https URIs */
-  int                  infile;         /* Input file for local file URIs */
-  char                 filename[1024], /* Filename buffer */
-                       buffer[4096];   /* Copy buffer */
-  ssize_t              bytes;          /* Bytes read */
-  ipp_attribute_t      *attr;          /* Current attribute */
-  cups_array_t         *ra;            /* Attributes to send in response */
-  static const char * const uri_status_strings[] =
-  {                                    /* URI decode errors */
-    "URI too large.",
-    "Bad arguments to function.",
-    "Bad resource in URI.",
-    "Bad port number in URI.",
-    "Bad hostname in URI.",
-    "Bad username in URI.",
-    "Bad scheme in URI.",
-    "Bad/empty URI."
-  };
-
-
- /*
-  * Get the job...
-  */
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job does not exist.");
-    httpFlush(client->http);
-    return;
-  }
-
- /*
-  * See if we already have a document for this job or the job has already
-  * in a non-pending state...
-  */
-
-  if (job->state > IPP_JSTATE_HELD)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE,
-                "Job is not in a pending state.");
-    httpFlush(client->http);
-    return;
-  }
-  else if (job->filename || job->fd >= 0)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_MULTIPLE_JOBS_NOT_SUPPORTED,
-                "Multiple document jobs are not supported.");
-    httpFlush(client->http);
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "last-document",
-                               IPP_TAG_ZERO)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                "Missing required last-document attribute.");
-    httpFlush(client->http);
-    return;
-  }
-  else if (ippGetValueTag(attr) != IPP_TAG_BOOLEAN || ippGetCount(attr) != 1 ||
-           !ippGetBoolean(attr, 0))
-  {
-    respond_unsupported(client, attr);
-    httpFlush(client->http);
-    return;
-  }
-
- /*
-  * Validate document attributes...
-  */
-
-  if (!valid_doc_attributes(client))
-  {
-    httpFlush(client->http);
-    return;
-  }
-
- /*
-  * Do we have a file to print?
-  */
-
-  if (httpGetState(client->http) == HTTP_STATE_POST_RECV)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                "Unexpected document data following request.");
-    return;
-  }
-
- /*
-  * Do we have a document URI?
-  */
-
-  if ((uri = ippFindAttribute(client->request, "document-uri",
-                              IPP_TAG_URI)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Missing document-uri.");
-    return;
-  }
-
-  if (ippGetCount(uri) != 1)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                "Too many document-uri values.");
-    return;
-  }
-
-  uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, ippGetString(uri, 0, NULL),
-                               scheme, sizeof(scheme), userpass,
-                               sizeof(userpass), hostname, sizeof(hostname),
-                               &port, resource, sizeof(resource));
-  if (uri_status < HTTP_URI_STATUS_OK)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad document-uri: %s",
-                uri_status_strings[uri_status - HTTP_URI_STATUS_OVERFLOW]);
-    return;
-  }
-
-  if (strcmp(scheme, "file") &&
-#ifdef HAVE_SSL
-      strcmp(scheme, "https") &&
-#endif /* HAVE_SSL */
-      strcmp(scheme, "http"))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_URI_SCHEME,
-                "URI scheme \"%s\" not supported.", scheme);
-    return;
-  }
-
-  if (!strcmp(scheme, "file") && access(resource, R_OK))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                "Unable to access URI: %s", strerror(errno));
-    return;
-  }
-
- /*
-  * Get the document format for the job...
-  */
-
-  _cupsRWLockWrite(&(client->printer->rwlock));
-
-  if ((attr = ippFindAttribute(job->attrs, "document-format",
-                               IPP_TAG_MIMETYPE)) != NULL)
-    job->format = ippGetString(attr, 0, NULL);
-  else
-    job->format = "application/octet-stream";
-
- /*
-  * Create a file for the request data...
-  */
-
-  if (!strcasecmp(job->format, "image/jpeg"))
-    snprintf(filename, sizeof(filename), "%s/%d.jpg",
-             client->printer->directory, job->id);
-  else if (!strcasecmp(job->format, "image/png"))
-    snprintf(filename, sizeof(filename), "%s/%d.png",
-             client->printer->directory, job->id);
-  else if (!strcasecmp(job->format, "application/pdf"))
-    snprintf(filename, sizeof(filename), "%s/%d.pdf",
-             client->printer->directory, job->id);
-  else if (!strcasecmp(job->format, "application/postscript"))
-    snprintf(filename, sizeof(filename), "%s/%d.ps",
-             client->printer->directory, job->id);
-  else
-    snprintf(filename, sizeof(filename), "%s/%d.prn",
-             client->printer->directory, job->id);
-
-  job->fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, 0600);
-
-  _cupsRWUnlock(&(client->printer->rwlock));
-
-  if (job->fd < 0)
-  {
-    job->state = IPP_JSTATE_ABORTED;
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to create print file: %s", strerror(errno));
-    return;
-  }
-
-  if (!strcmp(scheme, "file"))
-  {
-    if ((infile = open(resource, O_RDONLY)) < 0)
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                  "Unable to access URI: %s", strerror(errno));
-      return;
-    }
-
-    do
-    {
-      if ((bytes = read(infile, buffer, sizeof(buffer))) < 0 &&
-          (errno == EAGAIN || errno == EINTR))
-        bytes = 1;
-      else if (bytes > 0 && write(job->fd, buffer, (size_t)bytes) < bytes)
-      {
-       int error = errno;              /* Write error */
-
-       job->state = IPP_JSTATE_ABORTED;
-
-       close(job->fd);
-       job->fd = -1;
-
-       unlink(filename);
-       close(infile);
-
-       respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                   "Unable to write print file: %s", strerror(error));
-       return;
-      }
-    }
-    while (bytes > 0);
-
-    close(infile);
-  }
-  else
-  {
-#ifdef HAVE_SSL
-    if (port == 443 || !strcmp(scheme, "https"))
-      encryption = HTTP_ENCRYPTION_ALWAYS;
-    else
-#endif /* HAVE_SSL */
-    encryption = HTTP_ENCRYPTION_IF_REQUESTED;
-
-    if ((http = httpConnect2(hostname, port, NULL, AF_UNSPEC, encryption,
-                             1, 30000, NULL)) == NULL)
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                  "Unable to connect to %s: %s", hostname,
-                 cupsLastErrorString());
-      job->state = IPP_JSTATE_ABORTED;
-
-      close(job->fd);
-      job->fd = -1;
-
-      unlink(filename);
-      return;
-    }
-
-    httpClearFields(http);
-    httpSetField(http, HTTP_FIELD_ACCEPT_LANGUAGE, "en");
-    if (httpGet(http, resource))
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                  "Unable to GET URI: %s", strerror(errno));
-
-      job->state = IPP_JSTATE_ABORTED;
-
-      close(job->fd);
-      job->fd = -1;
-
-      unlink(filename);
-      httpClose(http);
-      return;
-    }
-
-    while ((status = httpUpdate(http)) == HTTP_STATUS_CONTINUE);
-
-    if (status != HTTP_STATUS_OK)
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_DOCUMENT_ACCESS,
-                  "Unable to GET URI: %s", httpStatus(status));
-
-      job->state = IPP_JSTATE_ABORTED;
-
-      close(job->fd);
-      job->fd = -1;
-
-      unlink(filename);
-      httpClose(http);
-      return;
-    }
-
-    while ((bytes = httpRead2(http, buffer, sizeof(buffer))) > 0)
-    {
-      if (write(job->fd, buffer, (size_t)bytes) < bytes)
-      {
-       int error = errno;              /* Write error */
-
-       job->state = IPP_JSTATE_ABORTED;
-
-       close(job->fd);
-       job->fd = -1;
-
-       unlink(filename);
-       httpClose(http);
-
-       respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                   "Unable to write print file: %s", strerror(error));
-       return;
-      }
-    }
-
-    httpClose(http);
-  }
-
-  if (close(job->fd))
-  {
-    int error = errno;         /* Write error */
-
-    job->state = IPP_JSTATE_ABORTED;
-    job->fd    = -1;
-
-    unlink(filename);
-
-    respond_ipp(client, IPP_STATUS_ERROR_INTERNAL,
-                "Unable to write print file: %s", strerror(error));
-    return;
-  }
-
-  _cupsRWLockWrite(&(client->printer->rwlock));
-
-  job->fd       = -1;
-  job->filename = strdup(filename);
-  job->state    = IPP_JSTATE_PENDING;
-
-  _cupsRWUnlock(&(client->printer->rwlock));
-
- /*
-  * Process the job, if possible...
-  */
-
-  check_jobs(client->printer);
-  
- /*
-  * Return the job info...
-  */
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  ra = cupsArrayNew((cups_array_func_t)strcmp, NULL);
-  cupsArrayAdd(ra, "job-id");
-  cupsArrayAdd(ra, "job-state");
-  cupsArrayAdd(ra, "job-state-reasons");
-  cupsArrayAdd(ra, "job-uri");
-
-  copy_job_attributes(client, job, ra);
-  cupsArrayDelete(ra);
-}
-
-
-/*
- * 'ipp_update_active_jobs()' - Update the list of active jobs.
- */
-
-static void
-ipp_update_active_jobs(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_device_t                *device;        /* Output device */
-  _ipp_job_t           *job;           /* Job */
-  ipp_attribute_t      *job_ids,       /* job-ids */
-                       *job_states;    /* output-device-job-states */
-  int                  i,              /* Looping var */
-                       count,          /* Number of values */
-                       num_different = 0,
-                                       /* Number of jobs with different states */
-                       different[1000],/* Jobs with different states */
-                       num_unsupported = 0,
-                                       /* Number of unsupported job-ids */
-                       unsupported[1000];
-                                       /* Unsupported job-ids */
-  ipp_jstate_t         states[1000];   /* Different job state values */
-
-
- /*
-  * Process the job-ids and output-device-job-states values...
-  */
-
-  if ((device = find_device(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
-    return;
-  }
-
-  if ((job_ids = ippFindAttribute(client->request, "job-ids", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(job_ids) != IPP_TAG_OPERATION || ippGetValueTag(job_ids) != IPP_TAG_INTEGER)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, job_ids ? "Bad job-ids attribute." : "Missing required job-ids attribute.");
-    return;
-  }
-
-  if ((job_states = ippFindAttribute(client->request, "output-device-job-states", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(job_states) != IPP_TAG_OPERATION || ippGetValueTag(job_states) != IPP_TAG_ENUM)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, job_ids ? "Bad output-device-job-states attribute." : "Missing required output-device-job-states attribute.");
-    return;
-  }
-
-  count = ippGetCount(job_ids);
-  if (count != ippGetCount(job_states))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "The job-ids and output-device-job-states attributes do not have the same number of values.");
-    return;
-  }
-
-  for (i = 0; i < count; i ++)
-  {
-    if ((job = find_job(client, ippGetInteger(job_ids, i))) == NULL || !job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
-    {
-      if (num_unsupported < 1000)
-        unsupported[num_unsupported ++] = ippGetInteger(job_ids, i);
-    }
-    else
-    {
-      ipp_jstate_t     state = (ipp_jstate_t)ippGetInteger(job_states, i);
-
-      if (job->state >= IPP_JSTATE_STOPPED && state != job->state)
-      {
-        if (num_different < 1000)
-       {
-         different[num_different] = job->id;
-         states[num_different ++] = job->state;
-       }
-      }
-      else
-        job->dev_state = state;
-    }
-  }
-
- /*
-  * Then look for jobs assigned to the device but not listed...
-  */
-
-  for (job = (_ipp_job_t *)cupsArrayFirst(client->printer->jobs);
-       job && num_different < 1000;
-       job = (_ipp_job_t *)cupsArrayNext(client->printer->jobs))
-  {
-    if (job->dev_uuid && !strcmp(job->dev_uuid, device->uuid) && !ippContainsInteger(job_ids, job->id))
-    {
-      different[num_different] = job->id;
-      states[num_different ++] = job->state;
-    }
-  }
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-
-  if (num_different > 0)
-  {
-    ippAddIntegers(client->response, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-ids", num_different, different);
-    ippAddIntegers(client->response, IPP_TAG_OPERATION, IPP_TAG_ENUM, "output-device-job-states", num_different, (int *)states);
-  }
-
-  if (num_unsupported > 0)
-  {
-    ippAddIntegers(client->response, IPP_TAG_UNSUPPORTED_GROUP, IPP_TAG_INTEGER, "job-ids", num_unsupported, unsupported);
-  }
-}
-
-
-/*
- * 'ipp_update_document_status()' - Update the state of a document.
- */
-
-static void
-ipp_update_document_status(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_device_t                *device;        /* Device */
-  _ipp_job_t           *job;           /* Job */
-  ipp_attribute_t      *attr;          /* Attribute */
-
-
-  if ((device = find_device(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
-    return;
-  }
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
-    return;
-  }
-
-  if (!job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "document-number", IPP_TAG_ZERO)) == NULL || ippGetGroupTag(attr) != IPP_TAG_OPERATION || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetCount(attr) != 1 || ippGetInteger(attr, 0) != 1)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, attr ? "Bad document-number attribute." : "Missing document-number attribute.");
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "impressions-completed", IPP_TAG_INTEGER)) != NULL)
-  {
-    job->impcompleted = ippGetInteger(attr, 0);
-    add_event(client->printer, job, _IPP_EVENT_JOB_PROGRESS, NULL);
-  }
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_update_job_status()' - Update the state of a job.
- */
-
-static void
-ipp_update_job_status(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_device_t                *device;        /* Device */
-  _ipp_job_t           *job;           /* Job */
-  ipp_attribute_t      *attr;          /* Attribute */
-  _ipp_event_t         events = _IPP_EVENT_NONE;
-                                       /* Event(s) */
-
-
-  if ((device = find_device(client)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Device was not found.");
-    return;
-  }
-
-  if ((job = find_job(client, 0)) == NULL)
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "Job was not found.");
-    return;
-  }
-
-  if (!job->dev_uuid || strcmp(job->dev_uuid, device->uuid))
-  {
-    respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Job not assigned to device.");
-    return;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "job-impressions-completed", IPP_TAG_INTEGER)) != NULL)
-  {
-    job->impcompleted = ippGetInteger(attr, 0);
-    events |= _IPP_EVENT_JOB_PROGRESS;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "output-device-job-state", IPP_TAG_ENUM)) != NULL)
-  {
-    job->dev_state = (ipp_jstate_t)ippGetInteger(attr, 0);
-    events |= _IPP_EVENT_JOB_STATE_CHANGED;
-  }
-
-  if ((attr = ippFindAttribute(client->request, "output-device-job-state-reasons", IPP_TAG_KEYWORD)) != NULL)
-  {
-    job->dev_state_reasons = get_job_state_reasons_bits(attr);
-    events |= _IPP_EVENT_JOB_STATE_CHANGED;
-  }
-
-  if (events)
-    add_event(client->printer, job, events, NULL);
-
-  respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_update_output_device_attributes()' - Update the values for an output device.
- */
-
-static void
-ipp_update_output_device_attributes(
-    _ipp_client_t *client)             /* I - Client */
-{
-  _ipp_device_t                *device;        /* Device */
-  ipp_attribute_t      *attr,          /* Current attribute */
-                       *dev_attr;      /* Device attribute */
-  _ipp_event_t         events = _IPP_EVENT_NONE;
-                                       /* Config/state changed? */
-
-
-  if ((device = find_device(client)) == NULL)
-  {
-    if ((device = create_device(client)) == NULL)
-    {
-      respond_ipp(client, IPP_STATUS_ERROR_NOT_POSSIBLE, "Unable to add output device.");
-      return;
-    }
-  }
-
-  _cupsRWLockWrite(&device->rwlock);
-
-  attr = ippFirstAttribute(client->request);
-  while (attr && ippGetGroupTag(attr) != IPP_TAG_PRINTER)
-    attr = ippNextAttribute(client->request);
-
-  for (; attr; attr = ippNextAttribute(client->request))
-  {
-    const char *attrname = ippGetName(attr),
-                                       /* Attribute name */
-               *dotptr;                /* Pointer to dot in name */
-
-   /*
-    * Skip attributes we don't care about...
-    */
-
-    if (!attrname)
-      continue;
-
-    if (strncmp(attrname, "copies", 6) && strncmp(attrname, "document-format", 15) && strncmp(attrname, "finishings", 10) && strncmp(attrname, "media", 5) && strncmp(attrname, "print-", 6) && strncmp(attrname, "sides", 5) && strncmp(attrname, "printer-alert", 13) && strncmp(attrname, "printer-input", 13) && strncmp(attrname, "printer-output", 14) && strncmp(attrname, "printer-resolution", 18) && strncmp(attrname, "pwg-raster", 10) && strncmp(attrname, "urf-", 4))
-      continue;
-
-    if (strncmp(attrname, "printer-alert", 13) || strncmp(attrname, "printer-state", 13))
-      events |= _IPP_EVENT_PRINTER_CONFIG_CHANGED;
-    else
-      events |= _IPP_EVENT_PRINTER_STATE_CHANGED;
-
-    if (!strcmp(attrname, "media-col-ready") || !strcmp(attrname, "media-ready"))
-      events |= _IPP_EVENT_PRINTER_MEDIA_CHANGED;
-
-    if (!strcmp(attrname, "finishings-col-ready") || !strcmp(attrname, "finishings-ready"))
-      events |= _IPP_EVENT_PRINTER_FINISHINGS_CHANGED;
-
-    if ((dotptr = strrchr(attrname, '.')) != NULL && isdigit(dotptr[1] & 255))
-    {
-#if 0
-     /*
-      * Sparse representation: name.NNN or name.NNN-NNN
-      */
-
-      char     temp[256],              /* Temporary name string */
-               *tempptr;               /* Pointer into temporary string */
-      int      low, high;              /* Low and high numbers in range */
-
-      low = (int)strtol(dotptr + 1, (char **)&dotptr, 10);
-      if (dotptr && *dotptr == '-')
-        high = (int)strtol(dotptr + 1, NULL, 10);
-      else
-        high = low;
-
-      strlcpy(temp, attrname, sizeof(temp));
-      if ((tempptr = strrchr(temp, '.')) != NULL)
-        *tempptr = '\0';
-
-      if ((dev_attr = ippFindAttribute(device->attrs, temp, IPP_TAG_ZERO)) != NULL)
-      {
-      }
-      else
-#endif /* 0 */
-        respond_unsupported(client, attr);
-    }
-    else
-    {
-     /*
-      * Regular representation - replace or delete current attribute,
-      * if any...
-      */
-
-      if ((dev_attr = ippFindAttribute(device->attrs, attrname, IPP_TAG_ZERO)) != NULL)
-        ippDeleteAttribute(device->attrs, dev_attr);
-
-      if (ippGetValueTag(attr) != IPP_TAG_DELETEATTR)
-        ippCopyAttribute(device->attrs, attr, 0);
-    }
-  }
-
-  _cupsRWUnlock(&device->rwlock);
-
-  if (events)
-  {
-    _cupsRWLockWrite(&client->printer->rwlock);
-    if (events & _IPP_EVENT_PRINTER_CONFIG_CHANGED)
-      update_device_attributes_no_lock(client->printer);
-    if (events & _IPP_EVENT_PRINTER_STATE_CHANGED)
-      update_device_state_no_lock(client->printer);
-    _cupsRWUnlock(&client->printer->rwlock);
-
-    add_event(client->printer, NULL, events, NULL);
-  }
-}
-
-
-/*
- * 'ipp_validate_document()' - Validate document creation attributes.
- */
-
-static void
-ipp_validate_document(
-    _ipp_client_t *client)             /* I - Client */
-{
-  if (valid_doc_attributes(client))
-    respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-/*
- * 'ipp_validate_job()' - Validate job creation attributes.
- */
-
-static void
-ipp_validate_job(_ipp_client_t *client)        /* I - Client */
-{
-  if (valid_job_attributes(client))
-    respond_ipp(client, IPP_STATUS_OK, NULL);
-}
-
-
-#if 0
-/*
- * 'parse_options()' - Parse URL options into CUPS options.
- *
- * The client->options string is destroyed by this function.
- */
-
-static int                             /* O - Number of options */
-parse_options(_ipp_client_t *client,   /* I - Client */
-              cups_option_t **options) /* O - Options */
-{
-  char *name,                          /* Name */
-       *value,                         /* Value */
-       *next;                          /* Next name=value pair */
-  int  num_options = 0;                /* Number of options */
-
-
-  *options = NULL;
-
-  for (name = client->options; name && *name; name = next)
-  {
-    if ((value = strchr(name, '=')) == NULL)
-      break;
-
-    *value++ = '\0';
-    if ((next = strchr(value, '&')) != NULL)
-      *next++ = '\0';
-
-    num_options = cupsAddOption(name, value, num_options, options);
-  }
-
-  return (num_options);
-}
-#endif /* 0 */
-
-
-/*
- * 'process_client()' - Process client requests on a thread.
- */
-
-static void *                          /* O - Exit status */
-process_client(_ipp_client_t *client)  /* I - Client */
-{
- /*
-  * Loop until we are out of requests or timeout (30 seconds)...
-  */
-
-#ifdef HAVE_SSL
-  int first_time = 1;                  /* First time request? */
-#endif /* HAVE_SSL */
-
-  while (httpWait(client->http, 30000))
-  {
-#ifdef HAVE_SSL
-    if (first_time)
-    {
-     /*
-      * See if we need to negotiate a TLS connection...
-      */
-
-      char buf[1];                     /* First byte from client */
-
-      if (recv(httpGetFd(client->http), buf, 1, MSG_PEEK) == 1 && (!buf[0] || !strchr("DGHOPT", buf[0])))
-      {
-        fprintf(stderr, "%s Starting HTTPS session.\n", client->hostname);
-
-       if (httpEncryption(client->http, HTTP_ENCRYPTION_ALWAYS))
-       {
-         fprintf(stderr, "%s Unable to encrypt connection: %s\n", client->hostname, cupsLastErrorString());
-         break;
-        }
-
-        fprintf(stderr, "%s Connection now encrypted.\n", client->hostname);
-      }
-
-      first_time = 0;
-    }
-#endif /* HAVE_SSL */
-
-    if (!process_http(client))
-      break;
-  }
-
- /*
-  * Close the conection to the client and return...
-  */
-
-  delete_client(client);
-
-  return (NULL);
-}
-
-
-/*
- * 'process_http()' - Process a HTTP request.
- */
-
-int                                    /* O - 1 on success, 0 on failure */
-process_http(_ipp_client_t *client)    /* I - Client connection */
-{
-  char                 uri[1024];      /* URI */
-  http_state_t         http_state;     /* HTTP state */
-  http_status_t                http_status;    /* HTTP status */
-  ipp_state_t          ipp_state;      /* State of IPP transfer */
-  char                 scheme[32],     /* Method/scheme */
-                       userpass[128],  /* Username:password */
-                       hostname[HTTP_MAX_HOST];
-                                       /* Hostname */
-  int                  port;           /* Port number */
-  const char           *encoding;      /* Content-Encoding value */
-  static const char * const http_states[] =
-  {                                    /* Strings for logging HTTP method */
-    "WAITING",
-    "OPTIONS",
-    "GET",
-    "GET_SEND",
-    "HEAD",
-    "POST",
-    "POST_RECV",
-    "POST_SEND",
-    "PUT",
-    "PUT_RECV",
-    "DELETE",
-    "TRACE",
-    "CONNECT",
-    "STATUS",
-    "UNKNOWN_METHOD",
-    "UNKNOWN_VERSION"
-  };
-
-
- /*
-  * Clear state variables...
-  */
-
-  ippDelete(client->request);
-  ippDelete(client->response);
-
-  client->request   = NULL;
-  client->response  = NULL;
-  client->operation = HTTP_STATE_WAITING;
-
- /*
-  * Read a request from the connection...
-  */
-
-  while ((http_state = httpReadRequest(client->http, uri,
-                                       sizeof(uri))) == HTTP_STATE_WAITING)
-    usleep(1);
-
- /*
-  * Parse the request line...
-  */
-
-  if (http_state == HTTP_STATE_ERROR)
-  {
-    if (httpError(client->http) == EPIPE)
-      fprintf(stderr, "%s Client closed connection.\n", client->hostname);
-    else
-      fprintf(stderr, "%s Bad request line (%s).\n", client->hostname,
-              strerror(httpError(client->http)));
-
-    return (0);
-  }
-  else if (http_state == HTTP_STATE_UNKNOWN_METHOD)
-  {
-    fprintf(stderr, "%s Bad/unknown operation.\n", client->hostname);
-    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
-    return (0);
-  }
-  else if (http_state == HTTP_STATE_UNKNOWN_VERSION)
-  {
-    fprintf(stderr, "%s Bad HTTP version.\n", client->hostname);
-    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
-    return (0);
-  }
-
-  fprintf(stderr, "%s %s %s\n", client->hostname, http_states[http_state],
-          uri);
-
- /*
-  * Separate the URI into its components...
-  */
-
-  if (httpSeparateURI(HTTP_URI_CODING_MOST, uri, scheme, sizeof(scheme),
-                     userpass, sizeof(userpass),
-                     hostname, sizeof(hostname), &port,
-                     client->uri, sizeof(client->uri)) < HTTP_URI_STATUS_OK &&
-      (http_state != HTTP_STATE_OPTIONS || strcmp(uri, "*")))
-  {
-    fprintf(stderr, "%s Bad URI \"%s\".\n", client->hostname, uri);
-    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
-    return (0);
-  }
-
-  if ((client->options = strchr(client->uri, '?')) != NULL)
-    *(client->options)++ = '\0';
-
- /*
-  * Process the request...
-  */
-
-  client->start     = time(NULL);
-  client->operation = httpGetState(client->http);
-
- /*
-  * Parse incoming parameters until the status changes...
-  */
-
-  while ((http_status = httpUpdate(client->http)) == HTTP_STATUS_CONTINUE);
-
-  if (http_status != HTTP_STATUS_OK)
-  {
-    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
-    return (0);
-  }
-
-  if (!httpGetField(client->http, HTTP_FIELD_HOST)[0] &&
-      httpGetVersion(client->http) >= HTTP_VERSION_1_1)
-  {
-   /*
-    * HTTP/1.1 and higher require the "Host:" field...
-    */
-
-    respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
-    return (0);
-  }
-
- /*
-  * Handle HTTP Upgrade...
-  */
-
-  if (!strcasecmp(httpGetField(client->http, HTTP_FIELD_CONNECTION),
-                        "Upgrade"))
-  {
-#ifdef HAVE_SSL
-    if (strstr(httpGetField(client->http, HTTP_FIELD_UPGRADE), "TLS/") != NULL && !httpIsEncrypted(client->http))
-    {
-      if (!respond_http(client, HTTP_STATUS_SWITCHING_PROTOCOLS, NULL, NULL, 0))
-        return (0);
-
-      fprintf(stderr, "%s Upgrading to encrypted connection.\n", client->hostname);
-
-      if (httpEncryption(client->http, HTTP_ENCRYPTION_REQUIRED))
-      {
-        fprintf(stderr, "%s Unable to encrypt connection: %s\n", client->hostname, cupsLastErrorString());
-       return (0);
-      }
-
-      fprintf(stderr, "%s Connection now encrypted.\n", client->hostname);
-    }
-    else
-#endif /* HAVE_SSL */
-
-    if (!respond_http(client, HTTP_STATUS_NOT_IMPLEMENTED, NULL, NULL, 0))
-      return (0);
-  }
-
- /*
-  * Handle HTTP Expect...
-  */
-
-  if (httpGetExpect(client->http) &&
-      (client->operation == HTTP_STATE_POST ||
-       client->operation == HTTP_STATE_PUT))
-  {
-    if (httpGetExpect(client->http) == HTTP_STATUS_CONTINUE)
-    {
-     /*
-      * Send 100-continue header...
-      */
-
-      if (!respond_http(client, HTTP_STATUS_CONTINUE, NULL, NULL, 0))
-       return (0);
-    }
-    else
-    {
-     /*
-      * Send 417-expectation-failed header...
-      */
-
-      if (!respond_http(client, HTTP_STATUS_EXPECTATION_FAILED, NULL, NULL, 0))
-       return (0);
-    }
-  }
-
- /*
-  * Handle new transfers...
-  */
-
-  encoding = httpGetContentEncoding(client->http);
-
-  switch (client->operation)
-  {
-    case HTTP_STATE_OPTIONS :
-       /*
-       * Do OPTIONS command...
-       */
-
-       return (respond_http(client, HTTP_STATUS_OK, NULL, NULL, 0));
-
-    case HTTP_STATE_HEAD :
-#if 0 /* TODO: Work out icon support */
-        if (!strcmp(client->uri, "/icon.png"))
-         return (respond_http(client, HTTP_STATUS_OK, NULL, "image/png", 0));
-       else
-#endif /* 0 */
-       if (!strcmp(client->uri, "/") || !strcmp(client->uri, "/media") || !strcmp(client->uri, "/supplies"))
-         return (respond_http(client, HTTP_STATUS_OK, NULL, "text/html", 0));
-       else
-         return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
-
-    case HTTP_STATE_GET :
-#if 0 /* TODO: Work out icon support */
-        if (!strcmp(client->uri, "/icon.png"))
-       {
-        /*
-         * Send PNG icon file.
-         */
-
-          int          fd;             /* Icon file */
-         struct stat   fileinfo;       /* Icon file information */
-         char          buffer[4096];   /* Copy buffer */
-         ssize_t       bytes;          /* Bytes */
-
-          fprintf(stderr, "Icon file is \"%s\".\n", client->printer->icon);
-
-          if (!stat(client->printer->icon, &fileinfo) &&
-             (fd = open(client->printer->icon, O_RDONLY)) >= 0)
-         {
-           if (!respond_http(client, HTTP_STATUS_OK, NULL, "image/png",
-                             (size_t)fileinfo.st_size))
-           {
-             close(fd);
-             return (0);
-           }
-
-           while ((bytes = read(fd, buffer, sizeof(buffer))) > 0)
-             httpWrite2(client->http, buffer, (size_t)bytes);
-
-           httpFlushWrite(client->http);
-
-           close(fd);
-         }
-         else
-           return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
-       }
-       else
-#endif /* 0 */
-       if (!strcmp(client->uri, "/"))
-       {
-        /*
-         * Show web status page...
-         */
-
-          _ipp_job_t   *job;           /* Current job */
-         int           i;              /* Looping var */
-         _ipp_preason_t reason;        /* Current reason */
-         static const char * const reasons[] =
-         {                             /* Reason strings */
-           "Other",
-           "Cover Open",
-           "Input Tray Missing",
-           "Marker Supply Empty",
-           "Marker Supply Low",
-           "Marker Waste Almost Full",
-           "Marker Waste Full",
-           "Media Empty",
-           "Media Jam",
-           "Media Low",
-           "Media Needed",
-           "Moving to Paused",
-           "Paused",
-           "Spool Area Full",
-           "Toner Empty",
-           "Toner Low"
-         };
-
-          if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
-           return (0);
-
-          html_header(client, client->printer->name);
-          html_printf(client,
-                     "<p><img align=\"right\" src=\"/icon.png\" width=\"64\" height=\"64\"><b>ippserver (" CUPS_SVERSION ")</b></p>\n"
-                     "<p>%s, %d job(s).", client->printer->state == IPP_PSTATE_IDLE ? "Idle" : client->printer->state == IPP_PSTATE_PROCESSING ? "Printing" : "Stopped", cupsArrayCount(client->printer->jobs));
-         for (i = 0, reason = 1; i < (int)(sizeof(reasons) / sizeof(reasons[0])); i ++, reason <<= 1)
-           if (client->printer->state_reasons & reason)
-             html_printf(client, "\n<br>&nbsp;&nbsp;&nbsp;&nbsp;%s", reasons[i]);
-         html_printf(client, "</p>\n");
-         
-          if (cupsArrayCount(client->printer->jobs) > 0)
-         {
-            _cupsRWLockRead(&(client->printer->rwlock));
-
-           html_printf(client, "<table class=\"striped\" summary=\"Jobs\"><thead><tr><th>Job #</th><th>Name</th><th>Owner</th><th>When</th></tr></thead><tbody>\n");
-           for (job = (_ipp_job_t *)cupsArrayFirst(client->printer->jobs); job; job = (_ipp_job_t *)cupsArrayNext(client->printer->jobs))
-           {
-             char      when[256],      /* When job queued/started/finished */
-                       hhmmss[64];     /* Time HH:MM:SS */
-
-              switch (job->state)
-             {
-               case IPP_JSTATE_PENDING :
-               case IPP_JSTATE_HELD :
-                   snprintf(when, sizeof(when), "Queued at %s", time_string(job->created, hhmmss, sizeof(hhmmss)));
-                   break;
-               case IPP_JSTATE_PROCESSING :
-               case IPP_JSTATE_STOPPED :
-                   snprintf(when, sizeof(when), "Started at %s", time_string(job->processing, hhmmss, sizeof(hhmmss)));
-                   break;
-               case IPP_JSTATE_ABORTED :
-                   snprintf(when, sizeof(when), "Aborted at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
-                   break;
-               case IPP_JSTATE_CANCELED :
-                   snprintf(when, sizeof(when), "Canceled at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
-                   break;
-               case IPP_JSTATE_COMPLETED :
-                   snprintf(when, sizeof(when), "Completed at %s", time_string(job->completed, hhmmss, sizeof(hhmmss)));
-                   break;
-             }
-
-             html_printf(client, "<tr><td>%d</td><td>%s</td><td>%s</td><td>%s</td></tr>\n", job->id, job->name, job->username, when);
-           }
-           html_printf(client, "</tbody></table>\n");
-
-           _cupsRWUnlock(&(client->printer->rwlock));
-         }
-          html_footer(client);
-
-         return (1);
-       }
-#if 0 /* TODO: Pull media and supply info from device attrs */
-       else if (!strcmp(client->uri, "/media"))
-       {
-        /*
-         * Show web media page...
-         */
-
-         int           i,              /* Looping var */
-                       num_options;    /* Number of form options */
-         cups_option_t *options;       /* Form options */
-          static const char * const sizes[] =
-         {                             /* Size strings */
-           "ISO A4",
-           "ISO A5",
-           "ISO A6",
-           "DL Envelope",
-           "US Legal",
-           "US Letter",
-           "#10 Envelope",
-           "3x5 Photo",
-           "3.5x5 Photo",
-           "4x6 Photo",
-           "5x7 Photo"
-         };
-         static const char * const types[] =
-                                         /* Type strings */
-         {
-           "Auto",
-           "Cardstock",
-           "Envelope",
-           "Labels",
-           "Other",
-           "Glossy Photo",
-           "High-Gloss Photo",
-           "Matte Photo",
-           "Satin Photo",
-           "Semi-Gloss Photo",
-           "Plain",
-           "Letterhead",
-           "Transparency"
-         };
-         static const int sheets[] =   /* Number of sheets */
-         {
-           250,
-           100,
-           25,
-           5,
-           0
-         };
-
-          if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
-           return (0);
-
-          html_header(client, client->printer->name);
-
-         if ((num_options = parse_options(client, &options)) > 0)
-         {
-          /*
-           * WARNING: A real printer/server implementation MUST NOT implement
-           * media updates via a GET request - GET requests are supposed to be
-           * idempotent (without side-effects) and we obviously are not
-           * authenticating access here.  This form is provided solely to
-           * enable testing and development!
-           */
-
-           const char  *val;           /* Form value */
-
-           if ((val = cupsGetOption("main_size", num_options, options)) != NULL)
-             client->printer->main_size = atoi(val);
-           if ((val = cupsGetOption("main_type", num_options, options)) != NULL)
-             client->printer->main_type = atoi(val);
-           if ((val = cupsGetOption("main_level", num_options, options)) != NULL)
-             client->printer->main_level = atoi(val);
-
-           if ((val = cupsGetOption("envelope_size", num_options, options)) != NULL)
-             client->printer->envelope_size = atoi(val);
-           if ((val = cupsGetOption("envelope_level", num_options, options)) != NULL)
-             client->printer->envelope_level = atoi(val);
-
-           if ((val = cupsGetOption("photo_size", num_options, options)) != NULL)
-             client->printer->photo_size = atoi(val);
-           if ((val = cupsGetOption("photo_type", num_options, options)) != NULL)
-             client->printer->photo_type = atoi(val);
-           if ((val = cupsGetOption("photo_level", num_options, options)) != NULL)
-             client->printer->photo_level = atoi(val);
-
-            if ((client->printer->main_level < 100 && client->printer->main_level > 0) || (client->printer->envelope_level < 25 && client->printer->envelope_level > 0) || (client->printer->photo_level < 25 && client->printer->photo_level > 0))
-             client->printer->state_reasons |= _IPP_PREASON_MEDIA_LOW;
-           else
-             client->printer->state_reasons &= (_ipp_preason_t)~_IPP_PREASON_MEDIA_LOW;
-
-            if ((client->printer->main_level == 0 && client->printer->main_size > _IPP_MEDIA_SIZE_NONE) || (client->printer->envelope_level == 0 && client->printer->envelope_size > _IPP_MEDIA_SIZE_NONE) || (client->printer->photo_level == 0 && client->printer->photo_size > _IPP_MEDIA_SIZE_NONE))
-           {
-             client->printer->state_reasons |= _IPP_PREASON_MEDIA_EMPTY;
-             if (client->printer->active_job)
-               client->printer->state_reasons |= _IPP_PREASON_MEDIA_NEEDED;
-           }
-           else
-             client->printer->state_reasons &= (_ipp_preason_t)~(_IPP_PREASON_MEDIA_EMPTY | _IPP_PREASON_MEDIA_NEEDED);
-
-           html_printf(client, "<blockquote>Media updated.</blockquote>\n");
-          }
-
-          html_printf(client, "<form method=\"GET\" action=\"/media\">\n");
-
-          html_printf(client, "<table class=\"form\" summary=\"Media\">\n");
-          html_printf(client, "<tr><th>Main Tray:</th><td><select name=\"main_size\"><option value=\"-1\">None</option>");
-          for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
-           if (!strstr(sizes[i], "Envelope") && !strstr(sizes[i], "Photo"))
-             html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->main_size ? " selected" : "", sizes[i]);
-         html_printf(client, "</select> <select name=\"main_type\"><option value=\"-1\">None</option>");
-          for (i = 0; i < (int)(sizeof(types) / sizeof(types[0])); i ++)
-           if (!strstr(types[i], "Photo"))
-             html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->main_type ? " selected" : "", types[i]);
-         html_printf(client, "</select> <select name=\"main_level\">");
-          for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
-           html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->main_level ? " selected" : "", sheets[i]);
-         html_printf(client, "</select></td></tr>\n");
-
-          html_printf(client,
-                     "<tr><th>Envelope Feeder:</th><td><select name=\"envelope_size\"><option value=\"-1\">None</option>");
-          for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
-           if (strstr(sizes[i], "Envelope"))
-             html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->envelope_size ? " selected" : "", sizes[i]);
-         html_printf(client, "</select> <select name=\"envelope_level\">");
-          for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
-           html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->envelope_level ? " selected" : "", sheets[i]);
-         html_printf(client, "</select></td></tr>\n");
-
-          html_printf(client,
-                     "<tr><th>Photo Tray:</th><td><select name=\"photo_size\"><option value=\"-1\">None</option>");
-          for (i = 0; i < (int)(sizeof(sizes) / sizeof(sizes[0])); i ++)
-           if (strstr(sizes[i], "Photo"))
-             html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->photo_size ? " selected" : "", sizes[i]);
-         html_printf(client, "</select> <select name=\"photo_type\"><option value=\"-1\">None</option>");
-          for (i = 0; i < (int)(sizeof(types) / sizeof(types[0])); i ++)
-           if (strstr(types[i], "Photo"))
-             html_printf(client, "<option value=\"%d\"%s>%s</option>", i, i == client->printer->photo_type ? " selected" : "", types[i]);
-         html_printf(client, "</select> <select name=\"photo_level\">");
-          for (i = 0; i < (int)(sizeof(sheets) / sizeof(sheets[0])); i ++)
-           html_printf(client, "<option value=\"%d\"%s>%d sheets</option>", sheets[i], sheets[i] == client->printer->photo_level ? " selected" : "", sheets[i]);
-         html_printf(client, "</select></td></tr>\n");
-
-         html_printf(client, "<tr><td></td><td><input type=\"submit\" value=\"Update Media\"></td></tr></table></form>\n");
-          html_footer(client);
-
-         return (1);
-       }
-       else if (!strcmp(client->uri, "/supplies"))
-       {
-        /*
-         * Show web supplies page...
-         */
-
-          int          i, j,           /* Looping vars */
-                       num_options;    /* Number of form options */
-         cups_option_t *options;       /* Form options */
-         static const int levels[] = { 0, 5, 10, 25, 50, 75, 90, 95, 100 };
-
-          if (!respond_http(client, HTTP_STATUS_OK, encoding, "text/html", 0))
-           return (0);
-
-          html_header(client, client->printer->name);
-
-         if ((num_options = parse_options(client, &options)) > 0)
-         {
-          /*
-           * WARNING: A real printer/server implementation MUST NOT implement
-           * supply updates via a GET request - GET requests are supposed to be
-           * idempotent (without side-effects) and we obviously are not
-           * authenticating access here.  This form is provided solely to
-           * enable testing and development!
-           */
-
-           char        name[64];       /* Form field */
-           const char  *val;           /* Form value */
-
-            client->printer->state_reasons &= (_ipp_preason_t)~(_IPP_PREASON_MARKER_SUPPLY_EMPTY | _IPP_PREASON_MARKER_SUPPLY_LOW | _IPP_PREASON_MARKER_WASTE_ALMOST_FULL | _IPP_PREASON_MARKER_WASTE_FULL | _IPP_PREASON_TONER_EMPTY | _IPP_PREASON_TONER_LOW);
-
-           for (i = 0; i < (int)(sizeof(printer_supplies) / sizeof(printer_supplies[0])); i ++)
-           {
-             snprintf(name, sizeof(name), "supply_%d", i);
-             if ((val = cupsGetOption(name, num_options, options)) != NULL)
-             {
-               int level = client->printer->supplies[i] = atoi(val);
-                                       /* New level */
-
-               if (i < 4)
-               {
-                 if (level == 0)
-                   client->printer->state_reasons |= _IPP_PREASON_TONER_EMPTY;
-                 else if (level < 10)
-                   client->printer->state_reasons |= _IPP_PREASON_TONER_LOW;
-               }
-               else
-               {
-                 if (level == 100)
-                   client->printer->state_reasons |= _IPP_PREASON_MARKER_WASTE_FULL;
-                 else if (level > 90)
-                   client->printer->state_reasons |= _IPP_PREASON_MARKER_WASTE_ALMOST_FULL;
-               }
-             }
-            }
-
-           html_printf(client, "<blockquote>Supplies updated.</blockquote>\n");
-          }
-
-          html_printf(client, "<form method=\"GET\" action=\"/supplies\">\n");
-
-         html_printf(client, "<table class=\"form\" summary=\"Supplies\">\n");
-         for (i = 0; i < (int)(sizeof(printer_supplies) / sizeof(printer_supplies[0])); i ++)
-         {
-           html_printf(client, "<tr><th>%s:</th><td><select name=\"supply_%d\">", printer_supplies[i], i);
-           for (j = 0; j < (int)(sizeof(levels) / sizeof(levels[0])); j ++)
-             html_printf(client, "<option value=\"%d\"%s>%d%%</option>", levels[j], levels[j] == client->printer->supplies[i] ? " selected" : "", levels[j]);
-           html_printf(client, "</select></td></tr>\n");
-         }
-         html_printf(client, "<tr><td></td><td><input type=\"submit\" value=\"Update Supplies\"></td></tr>\n</table>\n</form>\n");
-          html_footer(client);
-
-         return (1);
-       }
-#endif /* 0 */
-       else
-         return (respond_http(client, HTTP_STATUS_NOT_FOUND, NULL, NULL, 0));
-       break;
-
-    case HTTP_STATE_POST :
-       if (strcmp(httpGetField(client->http, HTTP_FIELD_CONTENT_TYPE),
-                  "application/ipp"))
-        {
-        /*
-         * Not an IPP request...
-         */
-
-         return (respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0));
-       }
-
-       /*
-        * Read the IPP request...
-       */
-
-       client->request = ippNew();
-
-        while ((ipp_state = ippRead(client->http,
-                                    client->request)) != IPP_STATE_DATA)
-       {
-         if (ipp_state == IPP_STATE_ERROR)
-         {
-            fprintf(stderr, "%s IPP read error (%s).\n", client->hostname,
-                   cupsLastErrorString());
-           respond_http(client, HTTP_STATUS_BAD_REQUEST, NULL, NULL, 0);
-           return (0);
-         }
-       }
-
-       /*
-        * Now that we have the IPP request, process the request...
-       */
-
-        return (process_ipp(client));
-
-    default :
-        break; /* Anti-compiler-warning-code */
-  }
-
-  return (1);
-}
-
-
-/*
- * 'process_ipp()' - Process an IPP request.
- */
-
-static int                             /* O - 1 on success, 0 on error */
-process_ipp(_ipp_client_t *client)     /* I - Client */
-{
-  ipp_tag_t            group;          /* Current group tag */
-  ipp_attribute_t      *attr;          /* Current attribute */
-  ipp_attribute_t      *charset;       /* Character set attribute */
-  ipp_attribute_t      *language;      /* Language attribute */
-  ipp_attribute_t      *uri;           /* Printer URI attribute */
-  int                  major, minor;   /* Version number */
-  const char           *name;          /* Name of attribute */
-
-
-  debug_attributes("Request", client->request, 1);
-
- /*
-  * First build an empty response message for this request...
-  */
-
-  client->operation_id = ippGetOperation(client->request);
-  client->response     = ippNewResponse(client->request);
-
- /*
-  * Then validate the request header and required attributes...
-  */
-
-  major = ippGetVersion(client->request, &minor);
-
-  if (major < 1 || major > 2)
-  {
-   /*
-    * Return an error, since we only support IPP 1.x and 2.x.
-    */
-
-    respond_ipp(client, IPP_STATUS_ERROR_VERSION_NOT_SUPPORTED,
-                "Bad request version number %d.%d.", major, minor);
-  }
-  else if (ippGetRequestId(client->request) <= 0)
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST, "Bad request-id %d.",
-                ippGetRequestId(client->request));
-  else if (!ippFirstAttribute(client->request))
-    respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                "No attributes in request.");
-  else
-  {
-   /*
-    * Make sure that the attributes are provided in the correct order and
-    * don't repeat groups...
-    */
-
-    for (attr = ippFirstAttribute(client->request),
-             group = ippGetGroupTag(attr);
-        attr;
-        attr = ippNextAttribute(client->request))
-    {
-      if (ippGetGroupTag(attr) < group && ippGetGroupTag(attr) != IPP_TAG_ZERO)
-      {
-       /*
-       * Out of order; return an error...
-       */
-
-       respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                   "Attribute groups are out of order (%x < %x).",
-                   ippGetGroupTag(attr), group);
-       break;
-      }
-      else
-       group = ippGetGroupTag(attr);
-    }
-
-    if (!attr)
-    {
-     /*
-      * Then make sure that the first three attributes are:
-      *
-      *     attributes-charset
-      *     attributes-natural-language
-      *     printer-uri/job-uri
-      */
-
-      attr = ippFirstAttribute(client->request);
-      name = ippGetName(attr);
-      if (attr && name && !strcmp(name, "attributes-charset") &&
-         ippGetValueTag(attr) == IPP_TAG_CHARSET)
-       charset = attr;
-      else
-       charset = NULL;
-
-      attr = ippNextAttribute(client->request);
-      name = ippGetName(attr);
-
-      if (attr && name && !strcmp(name, "attributes-natural-language") &&
-         ippGetValueTag(attr) == IPP_TAG_LANGUAGE)
-       language = attr;
-      else
-       language = NULL;
-
-      if ((attr = ippFindAttribute(client->request, "printer-uri",
-                                   IPP_TAG_URI)) != NULL)
-       uri = attr;
-      else if ((attr = ippFindAttribute(client->request, "job-uri",
-                                        IPP_TAG_URI)) != NULL)
-       uri = attr;
-      else
-       uri = NULL;
-
-      if (charset &&
-          strcasecmp(ippGetString(charset, 0, NULL), "us-ascii") &&
-          strcasecmp(ippGetString(charset, 0, NULL), "utf-8"))
-      {
-       /*
-        * Bad character set...
-       */
-
-       respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                   "Unsupported character set \"%s\".",
-                   ippGetString(charset, 0, NULL));
-      }
-      else if (!charset || !language || !uri)
-      {
-       /*
-       * Return an error, since attributes-charset,
-       * attributes-natural-language, and printer-uri/job-uri are required
-       * for all operations.
-       */
-
-       respond_ipp(client, IPP_STATUS_ERROR_BAD_REQUEST,
-                   "Missing required attributes.");
-      }
-      else
-      {
-        char           scheme[32],     /* URI scheme */
-                       userpass[32],   /* Username/password in URI */
-                       host[256],      /* Host name in URI */
-                       resource[256];  /* Resource path in URI */
-       int             port;           /* Port number in URI */
-
-        name = ippGetName(uri);
-
-        if (httpSeparateURI(HTTP_URI_CODING_ALL, ippGetString(uri, 0, NULL),
-                            scheme, sizeof(scheme),
-                            userpass, sizeof(userpass),
-                            host, sizeof(host), &port,
-                            resource, sizeof(resource)) < HTTP_URI_STATUS_OK)
-         respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
-                     "Bad %s value '%s'.", name, ippGetString(uri, 0, NULL));
-        else if ((!strcmp(name, "job-uri") && strncmp(resource, "/ipp/print/", 11)) ||
-                 (!strcmp(name, "printer-uri") && strcmp(resource, "/ipp/print")))
-         respond_ipp(client, IPP_STATUS_ERROR_NOT_FOUND, "%s %s not found.",
-                     name, ippGetString(uri, 0, NULL));
-       else
-       {
-        /*
-         * Try processing the operation...
-         */
-
-         switch ((int)ippGetOperation(client->request))
-         {
-           case IPP_OP_PRINT_JOB :
-               ipp_print_job(client);
-               break;
-
-           case IPP_OP_PRINT_URI :
-               ipp_print_uri(client);
-               break;
-
-           case IPP_OP_VALIDATE_JOB :
-               ipp_validate_job(client);
-               break;
-
-           case IPP_OP_CREATE_JOB :
-               ipp_create_job(client);
-               break;
-
-           case IPP_OP_SEND_DOCUMENT :
-               ipp_send_document(client);
-               break;
-
-           case IPP_OP_SEND_URI :
-               ipp_send_uri(client);
-               break;
-
-           case IPP_OP_CANCEL_JOB :
-               ipp_cancel_job(client);
-               break;
-
-           case IPP_OP_CANCEL_MY_JOBS :
-               ipp_cancel_my_jobs(client);
-               break;
-
-           case IPP_OP_GET_JOB_ATTRIBUTES :
-               ipp_get_job_attributes(client);
-               break;
-
-           case IPP_OP_GET_JOBS :
-               ipp_get_jobs(client);
-               break;
-
-           case IPP_OP_GET_PRINTER_ATTRIBUTES :
-               ipp_get_printer_attributes(client);
-               break;
-
-           case IPP_OP_GET_PRINTER_SUPPORTED_VALUES :
-               ipp_get_printer_supported_values(client);
-               break;
-
-           case IPP_OP_CLOSE_JOB :
-               ipp_close_job(client);
-               break;
-
-           case IPP_OP_IDENTIFY_PRINTER :
-               ipp_identify_printer(client);
-               break;
-
-           case IPP_OP_CANCEL_SUBSCRIPTION :
-               ipp_cancel_subscription(client);
-               break;
-
-            case IPP_OP_CREATE_JOB_SUBSCRIPTIONS :
-           case IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS :
-               ipp_create_xxx_subscriptions(client);
-               break;
-
-           case IPP_OP_GET_NOTIFICATIONS :
-               ipp_get_notifications(client);
-               break;
-
-           case IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES :
-               ipp_get_subscription_attributes(client);
-               break;
-
-           case IPP_OP_GET_SUBSCRIPTIONS :
-               ipp_get_subscriptions(client);
-               break;
-
-           case IPP_OP_RENEW_SUBSCRIPTION :
-               ipp_renew_subscription(client);
-               break;
-
-           case IPP_OP_GET_DOCUMENT_ATTRIBUTES :
-               ipp_get_document_attributes(client);
-               break;
-
-           case IPP_OP_GET_DOCUMENTS :
-               ipp_get_documents(client);
-               break;
-
-           case IPP_OP_VALIDATE_DOCUMENT :
-               ipp_validate_document(client);
-               break;
-
-            case _IPP_OP_ACKNOWLEDGE_DOCUMENT :
-               ipp_acknowledge_document(client);
-               break;
-
-            case _IPP_OP_ACKNOWLEDGE_IDENTIFY_PRINTER :
-               ipp_acknowledge_identify_printer(client);
-               break;
-
-            case _IPP_OP_ACKNOWLEDGE_JOB :
-               ipp_acknowledge_job(client);
-               break;
-
-            case _IPP_OP_FETCH_DOCUMENT :
-               ipp_fetch_document(client);
-               break;
-
-            case _IPP_OP_FETCH_JOB :
-               ipp_fetch_job(client);
-               break;
-
-            case _IPP_OP_GET_OUTPUT_DEVICE_ATTRIBUTES :
-               ipp_get_output_device_attributes(client);
-               break;
-
-            case _IPP_OP_UPDATE_ACTIVE_JOBS :
-               ipp_update_active_jobs(client);
-               break;
-
-            case _IPP_OP_UPDATE_DOCUMENT_STATUS :
-               ipp_update_document_status(client);
-               break;
-
-            case _IPP_OP_UPDATE_JOB_STATUS :
-               ipp_update_job_status(client);
-               break;
-
-            case _IPP_OP_UPDATE_OUTPUT_DEVICE_ATTRIBUTES :
-               ipp_update_output_device_attributes(client);
-               break;
-
-            case _IPP_OP_DEREGISTER_OUTPUT_DEVICE :
-               ipp_deregister_output_device(client);
-               break;
-
-           default :
-               respond_ipp(client, IPP_STATUS_ERROR_OPERATION_NOT_SUPPORTED,
-                           "Operation not supported.");
-               break;
-         }
-       }
-      }
-    }
-  }
-
- /*
-  * Send the HTTP header and return...
-  */
-
-  if (httpGetState(client->http) != HTTP_STATE_POST_SEND)
-    httpFlush(client->http);           /* Flush trailing (junk) data */
-
-  return (respond_http(client, HTTP_STATUS_OK, NULL, "application/ipp",
-                       client->fetch_file >= 0 ? 0 : ippLength(client->response)));
-}
-
-
-/*
- * 'process_job()' - Process a print job.
- */
-
-static void *                          /* O - Thread exit status */
-process_job(_ipp_job_t *job)           /* I - Job */
-{
-  job->state                   = IPP_JSTATE_PROCESSING;
-  job->printer->state          = IPP_PSTATE_PROCESSING;
-  job->processing              = time(NULL);
-  job->printer->processing_job = job;
-
-  add_event(job->printer, job, _IPP_EVENT_JOB_STATE_CHANGED, "Job processing.");
-
- /*
-  * TODO: Perform any preprocessing needed...
-  */
-
-  // job->state_reasons |= _IPP_JREASON_JOB_TRANSFORMING;
-  // job->state_reasons &= ~_IPP_JREASON_JOB_TRANSFORMING;
-
- /*
-  * Set the state to processing-stopped, fetchable, then send a
-  * notification.
-  */
-
-  job->state         = IPP_JSTATE_STOPPED;
-  job->state_reasons |= _IPP_JREASON_JOB_FETCHABLE;
-
-  add_event(job->printer, job, _IPP_EVENT_JOB_STATE_CHANGED, "Job fetchable.");
-
-  return (NULL);
-}
-
-
-/*
- * 'respond_http()' - Send a HTTP response.
- */
-
-int                                    /* O - 1 on success, 0 on failure */
-respond_http(
-    _ipp_client_t *client,             /* I - Client */
-    http_status_t code,                        /* I - HTTP status of response */
-    const char    *content_encoding,   /* I - Content-Encoding of response */
-    const char    *type,               /* I - MIME media type of response */
-    size_t        length)              /* I - Length of response */
-{
-  char message[1024];                  /* Text message */
-
-
-  fprintf(stderr, "%s %s\n", client->hostname, httpStatus(code));
-
-  if (code == HTTP_STATUS_CONTINUE)
-  {
-   /*
-    * 100-continue doesn't send any headers...
-    */
-
-    return (httpWriteResponse(client->http, HTTP_STATUS_CONTINUE) == 0);
-  }
-
- /*
-  * Format an error message...
-  */
-
-  if (!type && !length && code != HTTP_STATUS_OK && code != HTTP_STATUS_SWITCHING_PROTOCOLS)
-  {
-    snprintf(message, sizeof(message), "%d - %s\n", code, httpStatus(code));
-
-    type   = "text/plain";
-    length = strlen(message);
-  }
-  else
-    message[0] = '\0';
-
- /*
-  * Send the HTTP response header...
-  */
-
-  httpClearFields(client->http);
-
-  if (code == HTTP_STATUS_METHOD_NOT_ALLOWED ||
-      client->operation == HTTP_STATE_OPTIONS)
-    httpSetField(client->http, HTTP_FIELD_ALLOW, "GET, HEAD, OPTIONS, POST");
-
-  if (type)
-  {
-    if (!strcmp(type, "text/html"))
-      httpSetField(client->http, HTTP_FIELD_CONTENT_TYPE,
-                   "text/html; charset=utf-8");
-    else
-      httpSetField(client->http, HTTP_FIELD_CONTENT_TYPE, type);
-
-    if (content_encoding)
-      httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, content_encoding);
-  }
-
-  httpSetLength(client->http, length);
-
-  if (httpWriteResponse(client->http, code) < 0)
-    return (0);
-
- /*
-  * Send the response data...
-  */
-
-  if (message[0])
-  {
-   /*
-    * Send a plain text message.
-    */
-
-    if (httpPrintf(client->http, "%s", message) < 0)
-      return (0);
-
-    if (httpWrite2(client->http, "", 0) < 0)
-      return (0);
-  }
-  else if (client->response)
-  {
-   /*
-    * Send an IPP response...
-    */
-
-    debug_attributes("Response", client->response, 2);
-
-    ippSetState(client->response, IPP_STATE_IDLE);
-
-    if (ippWrite(client->http, client->response) != IPP_STATE_DATA)
-      return (0);
-
-    if (client->fetch_file >= 0)
-    {
-      ssize_t  bytes;                  /* Bytes read */
-      char     buffer[32768];          /* Buffer */
-
-      if (client->fetch_compression)
-        httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, "gzip");
-
-      while ((bytes = read(client->fetch_file, buffer, sizeof(buffer))) > 0)
-        httpWrite2(client->http, buffer, (size_t)bytes);
-
-      httpWrite2(client->http, "", 0);
-      close(client->fetch_file);
-      client->fetch_file = -1;
-    }
-  }
-
-  return (1);
-}
-
-
-/*
- * 'respond_ipp()' - Send an IPP response.
- */
-
-static void
-respond_ipp(_ipp_client_t *client,     /* I - Client */
-            ipp_status_t  status,      /* I - status-code */
-           const char    *message,     /* I - printf-style status-message */
-           ...)                        /* I - Additional args as needed */
-{
-  const char   *formatted = NULL;      /* Formatted message */
-
-
-  ippSetStatusCode(client->response, status);
-
-  if (message)
-  {
-    va_list            ap;             /* Pointer to additional args */
-    ipp_attribute_t    *attr;          /* New status-message attribute */
-
-    va_start(ap, message);
-    if ((attr = ippFindAttribute(client->response, "status-message",
-                                IPP_TAG_TEXT)) != NULL)
-      ippSetStringfv(client->response, &attr, 0, message, ap);
-    else
-      attr = ippAddStringfv(client->response, IPP_TAG_OPERATION, IPP_TAG_TEXT,
-                           "status-message", NULL, message, ap);
-    va_end(ap);
-
-    formatted = ippGetString(attr, 0, NULL);
-  }
-
-  if (formatted)
-    fprintf(stderr, "%s %s %s (%s)\n", client->hostname,
-           ippOpString(client->operation_id), ippErrorString(status),
-           formatted);
-  else
-    fprintf(stderr, "%s %s %s\n", client->hostname,
-           ippOpString(client->operation_id), ippErrorString(status));
-}
-
-
-/*
- * 'respond_unsupported()' - Respond with an unsupported attribute.
- */
-
-static void
-respond_unsupported(
-    _ipp_client_t   *client,           /* I - Client */
-    ipp_attribute_t *attr)             /* I - Atribute */
-{
-  ipp_attribute_t      *temp;          /* Copy of attribute */
-
-
-  respond_ipp(client, IPP_STATUS_ERROR_ATTRIBUTES_OR_VALUES,
-              "Unsupported %s %s%s value.", ippGetName(attr),
-              ippGetCount(attr) > 1 ? "1setOf " : "",
-             ippTagString(ippGetValueTag(attr)));
-
-  temp = ippCopyAttribute(client->response, attr, 0);
-  ippSetGroupTag(client->response, &temp, IPP_TAG_UNSUPPORTED_GROUP);
-}
-
-
-/*
- * 'run_printer()' - Run the printer service.
- */
-
-static void
-run_printer(_ipp_printer_t *printer)   /* I - Printer */
-{
-  int          num_fds;                /* Number of file descriptors */
-  struct pollfd        polldata[3];            /* poll() data */
-  int          timeout;                /* Timeout for poll() */
-  _ipp_client_t        *client;                /* New client */
-
-
- /*
-  * Setup poll() data for the Bonjour service socket and IPv4/6 listeners...
-  */
-
-  polldata[0].fd     = printer->ipv4;
-  polldata[0].events = POLLIN;
-
-  polldata[1].fd     = printer->ipv6;
-  polldata[1].events = POLLIN;
-
-  num_fds = 2;
-
- /*
-  * Loop until we are killed or have a hard error...
-  */
-
-  for (;;)
-  {
-    if (cupsArrayCount(printer->jobs))
-      timeout = 10;
-    else
-      timeout = -1;
-
-    if (poll(polldata, (nfds_t)num_fds, timeout) < 0 && errno != EINTR)
-    {
-      perror("poll() failed");
-      break;
-    }
-
-    if (polldata[0].revents & POLLIN)
-    {
-      if ((client = create_client(printer, printer->ipv4)) != NULL)
-      {
-       if (!_cupsThreadCreate((_cups_thread_func_t)process_client, client))
-       {
-         perror("Unable to create client thread");
-         delete_client(client);
-       }
-      }
-    }
-
-    if (polldata[1].revents & POLLIN)
-    {
-      if ((client = create_client(printer, printer->ipv6)) != NULL)
-      {
-       if (!_cupsThreadCreate((_cups_thread_func_t)process_client, client))
-       {
-         perror("Unable to create client thread");
-         delete_client(client);
-       }
-      }
-    }
-
-   /*
-    * Clean out old jobs...
-    */
-
-    clean_jobs(printer);
-  }
-}
-
-
-/*
- * 'time_string()' - Return the local time in hours, minutes, and seconds.
- */
-
-static char *
-time_string(time_t tv,                 /* I - Time value */
-            char   *buffer,            /* I - Buffer */
-           size_t bufsize)             /* I - Size of buffer */
-{
-  struct tm    *curtime = localtime(&tv);
-                                       /* Local time */
-
-  strftime(buffer, bufsize, "%X", curtime);
-  return (buffer);
-}
-
-
-/*
- * 'update_device_attributes_no_lock()' - Update the composite device attributes.
- *
- * Note: Caller MUST lock the printer object for writing before using.
- */
-
-static void
-update_device_attributes_no_lock(
-    _ipp_printer_t *printer)           /* I - Printer */
-{
-  _ipp_device_t                *device;        /* Current device */
-  ipp_t                        *dev_attrs;     /* Device attributes */
-
-
- /* TODO: Support multiple output devices, icons, etc... */
-  device    = (_ipp_device_t *)cupsArrayFirst(printer->devices);
-  dev_attrs = ippNew();
-
-  if (device)
-    copy_attributes(dev_attrs, device->attrs, NULL, IPP_TAG_PRINTER, 0);
-
-  ippDelete(printer->dev_attrs);
-  printer->dev_attrs = dev_attrs;
-
-  printer->config_time = time(NULL);
-}
-
-
-/*
- * 'update_device_status_no_lock()' - Update the composite device state.
- *
- * Note: Caller MUST lock the printer object for writing before using.
- */
-
-static void
-update_device_state_no_lock(
-    _ipp_printer_t *printer)           /* I - Printer */
-{
-  _ipp_device_t                *device;        /* Current device */
-  ipp_attribute_t      *attr;          /* Current attribute */
-
-
- /* TODO: Support multiple output devices, icons, etc... */
-  device = (_ipp_device_t *)cupsArrayFirst(printer->devices);
-
-  if ((attr = ippFindAttribute(device->attrs, "printer-state", IPP_TAG_ENUM)) != NULL)
-    printer->dev_state = (ipp_pstate_t)ippGetInteger(attr, 0);
-  else
-    printer->dev_state = IPP_PSTATE_STOPPED;
-
-  if ((attr = ippFindAttribute(device->attrs, "printer-state-reasons", IPP_TAG_KEYWORD)) != NULL)
-    printer->dev_reasons = get_printer_state_reasons_bits(attr);
-  else
-    printer->dev_reasons = _IPP_PREASON_PAUSED;
-
-  printer->state_time = time(NULL);
-}
-
-
-/*
- * 'usage()' - Show program usage.
- */
-
-static void
-usage(int status)                      /* O - Exit status */
-{
-  if (!status)
-  {
-    puts(CUPS_SVERSION " - Copyright 2010-2014 by Apple Inc. All rights reserved.");
-    puts("");
-  }
-
-  puts("Usage: ippinfra [options] \"name\"");
-  puts("");
-  puts("Options:");
-  printf("-d spool-directory      Spool directory "
-         "(default=/tmp/ippserver.%d)\n", (int)getpid());
-  puts("-h                      Show program help");
-  puts("-k                      Keep job spool files");
-  puts("-n hostname             Hostname for printer");
-  puts("-p port                 Port number (default=auto)");
-  puts("-u user:pass            Set proxy username and password");
-  puts("-v[vvv]                 Be (very) verbose");
-
-  exit(status);
-}
-
-
-/*
- * 'valid_doc_attributes()' - Determine whether the document attributes are
- *                            valid.
- *
- * When one or more document attributes are invalid, this function adds a
- * suitable response and attributes to the unsupported group.
- */
-
-static int                             /* O - 1 if valid, 0 if not */
-valid_doc_attributes(
-    _ipp_client_t *client)             /* I - Client */
-{
-  int                  valid = 1;      /* Valid attributes? */
-  ipp_op_t             op = ippGetOperation(client->request);
-                                       /* IPP operation */
-  const char           *op_name = ippOpString(op);
-                                       /* IPP operation name */
-  ipp_attribute_t      *attr,          /* Current attribute */
-                       *supported;     /* xxx-supported attribute */
-  const char           *compression = NULL,
-                                       /* compression value */
-                       *format = NULL; /* document-format value */
-
-
- /*
-  * Check operation attributes...
-  */
-
-  if ((attr = ippFindAttribute(client->request, "compression", IPP_TAG_ZERO)) != NULL)
-  {
-   /*
-    * If compression is specified, only accept a supported value in a Print-Job
-    * or Send-Document request...
-    */
-
-    compression = ippGetString(attr, 0, NULL);
-    supported   = ippFindAttribute(client->printer->attrs,
-                                   "compression-supported", IPP_TAG_KEYWORD);
-
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD ||
-        ippGetGroupTag(attr) != IPP_TAG_OPERATION ||
-        (op != IPP_OP_PRINT_JOB && op != IPP_OP_SEND_DOCUMENT &&
-         op != IPP_OP_VALIDATE_JOB) ||
-        !ippContainsString(supported, compression))
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-    else
-    {
-      fprintf(stderr, "%s %s compression=\"%s\"\n", client->hostname, op_name, compression);
-
-      ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_KEYWORD, "compression-supplied", NULL, compression);
-
-      if (strcmp(compression, "none"))
-      {
-       if (Verbosity)
-         fprintf(stderr, "Receiving job file with \"%s\" compression.\n", compression);
-        httpSetField(client->http, HTTP_FIELD_CONTENT_ENCODING, compression);
-      }
-    }
-  }
-
- /*
-  * Is it a format we support?
-  */
-
-  if ((attr = ippFindAttribute(client->request, "document-format", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_MIMETYPE ||
-        ippGetGroupTag(attr) != IPP_TAG_OPERATION)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-    else
-    {
-      format = ippGetString(attr, 0, NULL);
-
-      fprintf(stderr, "%s %s document-format=\"%s\"\n",
-             client->hostname, op_name, format);
-
-      ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-supplied", NULL, format);
-    }
-  }
-  else
-  {
-    format = ippGetString(ippFindAttribute(client->printer->attrs, "document-format-default", IPP_TAG_MIMETYPE), 0, NULL);
-    if (!format)
-      format = "application/octet-stream"; /* Should never happen */
-
-    attr = ippAddString(client->request, IPP_TAG_OPERATION, IPP_TAG_MIMETYPE, "document-format", NULL, format);
-  }
-
-  if (!strcmp(format, "application/octet-stream") && (ippGetOperation(client->request) == IPP_OP_PRINT_JOB || ippGetOperation(client->request) == IPP_OP_SEND_DOCUMENT))
-  {
-   /*
-    * Auto-type the file using the first 8 bytes of the file...
-    */
-
-    unsigned char      header[8];      /* First 8 bytes of file */
-
-    memset(header, 0, sizeof(header));
-    httpPeek(client->http, (char *)header, sizeof(header));
-
-    if (!memcmp(header, "%PDF", 4))
-      format = "application/pdf";
-    else if (!memcmp(header, "%!", 2))
-      format = "application/postscript";
-    else if (!memcmp(header, "\377\330\377", 3) && header[3] >= 0xe0 && header[3] <= 0xef)
-      format = "image/jpeg";
-    else if (!memcmp(header, "\211PNG", 4))
-      format = "image/png";
-    else if (!memcmp(header, "RAS2", 4))
-      format = "image/pwg-raster";
-    else if (!memcmp(header, "UNIRAST", 8))
-      format = "image/urf";
-    else
-      format = NULL;
-
-    if (format)
-    {
-      fprintf(stderr, "%s %s Auto-typed document-format=\"%s\"\n",
-             client->hostname, op_name, format);
-
-      ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format-detected", NULL, format);
-    }
-  }
-
-  if (op != IPP_OP_CREATE_JOB && (supported = ippFindAttribute(client->printer->attrs, "document-format-supported", IPP_TAG_MIMETYPE)) != NULL && !ippContainsString(supported, format))
-  {
-    respond_unsupported(client, attr);
-    valid = 0;
-  }
-
- /*
-  * document-name
-  */
-
-  if ((attr = ippFindAttribute(client->request, "document-name", IPP_TAG_NAME)) != NULL)
-    ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_NAME, "document-name-supplied", NULL, ippGetString(attr, 0, NULL));
-
-  return (valid);
-}
-
-
-/*
- * 'valid_job_attributes()' - Determine whether the job attributes are valid.
- *
- * When one or more job attributes are invalid, this function adds a suitable
- * response and attributes to the unsupported group.
- */
-
-static int                             /* O - 1 if valid, 0 if not */
-valid_job_attributes(
-    _ipp_client_t *client)             /* I - Client */
-{
-  int                  i,              /* Looping var */
-                       valid = 1;      /* Valid attributes? */
-  ipp_attribute_t      *attr,          /* Current attribute */
-                       *supported;     /* xxx-supported attribute */
-
-
- /*
-  * Check operation attributes...
-  */
-
-  valid = valid_doc_attributes(client);
-
- /*
-  * Check the various job template attributes...
-  */
-
-  if ((attr = ippFindAttribute(client->request, "copies", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER ||
-        ippGetInteger(attr, 0) < 1 || ippGetInteger(attr, 0) > 999)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "ipp-attribute-fidelity", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_BOOLEAN)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "job-hold-until", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 ||
-        (ippGetValueTag(attr) != IPP_TAG_NAME &&
-        ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
-        ippGetValueTag(attr) != IPP_TAG_KEYWORD) ||
-       strcmp(ippGetString(attr, 0, NULL), "no-hold"))
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "job-impressions", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER || ippGetInteger(attr, 0) < 0)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "job-name", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 ||
-        (ippGetValueTag(attr) != IPP_TAG_NAME &&
-        ippGetValueTag(attr) != IPP_TAG_NAMELANG))
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-
-    ippSetGroupTag(client->request, &attr, IPP_TAG_JOB);
-  }
-  else
-    ippAddString(client->request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, "Untitled");
-
-  if ((attr = ippFindAttribute(client->request, "job-priority", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_INTEGER ||
-        ippGetInteger(attr, 0) < 1 || ippGetInteger(attr, 0) > 100)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "job-sheets", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 ||
-        (ippGetValueTag(attr) != IPP_TAG_NAME &&
-        ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
-        ippGetValueTag(attr) != IPP_TAG_KEYWORD) ||
-       strcmp(ippGetString(attr, 0, NULL), "none"))
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "media", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 ||
-        (ippGetValueTag(attr) != IPP_TAG_NAME &&
-        ippGetValueTag(attr) != IPP_TAG_NAMELANG &&
-        ippGetValueTag(attr) != IPP_TAG_KEYWORD))
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-    else
-    {
-#if 0 /* TODO: Validate media */
-      for (i = 0;
-           i < (int)(sizeof(media_supported) / sizeof(media_supported[0]));
-          i ++)
-        if (!strcmp(ippGetString(attr, 0, NULL), media_supported[i]))
-         break;
-
-      if (i >= (int)(sizeof(media_supported) / sizeof(media_supported[0])))
-      {
-       respond_unsupported(client, attr);
-       valid = 0;
-      }
-#endif /* 0 */
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "media-col", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 ||
-        ippGetValueTag(attr) != IPP_TAG_BEGIN_COLLECTION)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-    /* TODO: check for valid media-col */
-  }
-
-  if ((attr = ippFindAttribute(client->request, "multiple-document-handling", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD ||
-        (strcmp(ippGetString(attr, 0, NULL),
-               "separate-documents-uncollated-copies") &&
-        strcmp(ippGetString(attr, 0, NULL),
-               "separate-documents-collated-copies")))
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "orientation-requested", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_ENUM ||
-        ippGetInteger(attr, 0) < IPP_ORIENT_PORTRAIT ||
-        ippGetInteger(attr, 0) > IPP_ORIENT_REVERSE_PORTRAIT)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "page-ranges", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetValueTag(attr) != IPP_TAG_RANGE)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "print-quality", IPP_TAG_ZERO)) != NULL)
-  {
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_ENUM ||
-        ippGetInteger(attr, 0) < IPP_QUALITY_DRAFT ||
-        ippGetInteger(attr, 0) > IPP_QUALITY_HIGH)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "printer-resolution", IPP_TAG_ZERO)) != NULL)
-  {
-    supported = ippFindAttribute(client->printer->dev_attrs, "printer-resolution-supported", IPP_TAG_RESOLUTION);
-
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_RESOLUTION ||
-        !supported)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-    else
-    {
-      int      count,                  /* Number of supported values */
-               xdpi,                   /* Horizontal resolution for job template attribute */
-               ydpi,                   /* Vertical resolution for job template attribute */
-               sydpi;                  /* Vertical resolution for supported value */
-      ipp_res_t        units,                  /* Units for job template attribute */
-               sunits;                 /* Units for supported value */
-
-      xdpi  = ippGetResolution(attr, 0, &ydpi, &units);
-      count = ippGetCount(supported);
-
-      for (i = 0; i < count; i ++)
-      {
-        if (xdpi == ippGetResolution(supported, i, &sydpi, &sunits) && ydpi == sydpi && units == sunits)
-          break;
-      }
-
-      if (i >= count)
-      {
-       respond_unsupported(client, attr);
-       valid = 0;
-      }
-    }
-  }
-
-  if ((attr = ippFindAttribute(client->request, "sides", IPP_TAG_ZERO)) != NULL)
-  {
-    const char *sides = ippGetString(attr, 0, NULL);
-                                       /* "sides" value... */
-
-    if (ippGetCount(attr) != 1 || ippGetValueTag(attr) != IPP_TAG_KEYWORD)
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-    else if ((supported = ippFindAttribute(client->printer->dev_attrs, "sides-supported", IPP_TAG_KEYWORD)) != NULL)
-    {
-      if (!ippContainsString(supported, sides))
-      {
-       respond_unsupported(client, attr);
-       valid = 0;
-      }
-    }
-    else if (strcmp(sides, "one-sided"))
-    {
-      respond_unsupported(client, attr);
-      valid = 0;
-    }
-  }
-
-  return (valid);
-}
-
-
-/*
- * End of "$Id: ippinfra.c 12237 2014-11-03 13:07:32Z msweet $".
- */
diff --git a/test/ippinfra.man b/test/ippinfra.man
deleted file mode 100644 (file)
index 46ac84e..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-.\"
-.\" "$Id$"
-.\"
-.\" ippinfra man page for CUPS.
-.\"
-.\" Copyright 2014 by Apple Inc.
-.\"
-.\" These coded instructions, statements, and computer programs are the
-.\" property of Apple Inc. and are protected by Federal copyright
-.\" law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-.\" which should have been included with this file.  If this file is
-.\" file is missing or damaged, see the license at "http://www.cups.org/".
-.\"
-.TH ippinfra 1 "CUPS" "16 September 2014" "Apple Inc."
-.SH NAME
-ippinfra \- a simple ipp infrastructure server
-.SH SYNOPSIS
-.B ippinfra
-[
-.B \-d
-.I spool-directory
-] [
-.B \-h
-] [
-.B \-k
-] [
-.B \-n
-.I hostname
-] [
-.B \-p
-.I port
-] [
-.B \-u
-.I username:password
-] [
-.B \-v[vvv]
-]
-.I service-name
-.SH DESCRIPTION
-.B ippinfra
-is a simple Internet Printing Protocol (IPP) infrastructure server conforming to the IPP Shared Infrastructure Extensions (INFRA) specification. It can be used as a very basic infrastructure server between standard IPP clients and IPP proxies conforming to the INFRA specification.
-.SH OPTIONS
-The following options are recognized by
-.B ippinfra:
-.TP 5
-\fB\-d \fIspool-directory\fR
-Specifies the directory that will hold the print files.
-The default is a directory under the user's current temporary directory.
-.TP 5
-.B \-h
-Shows program help.
-.TP 5
-.B \-k
-Keeps the print documents in the spool directory rather than deleting them.
-.TP 5
-\fB\-n \fIhostname\fR
-Specifies the hostname that is reported by the server.
-The default is the name returned by the
-.BR hostname (1)
-command.
-.TP 5
-\fB\-p \fIport\fR
-Specifies the port number to listen on.
-The default is a user-specific number from 8000 to 8999.
-.TP 5
-\fB\-u \fIusername:password\fR
-Specifies the username and password for the IPP proxy.
-The default is "test:test123".
-.TP 5
-.B \-v[vvv]
-Be (very) verbose when logging activity to the standard output.
-.SH EXIT STATUS
-The
-.B ippinfra
-program returns 1 if it is unable to process the command-line arguments.
-Otherwise
-.B ippinfra
-will run continuously until terminated.
-.SH CONFORMING TO
-The
-.B ippinfra
-program is unique to CUPS and conforms to the IPP Shared Infrastructure Extensions (INFRA) specification as an Infrastructure Printer.
-.SH EXAMPLES
-Run
-.B ippinfra
-with a service name of My Cool Printer:
-.nf
-
-    ippinfra "My Cool Printer"
-.fi
-.LP
-Specify a proxy username of "foo" and password of "bar":
-.nf
-
-    ippinfra \-u foo:bar "My Cool Printer"
-.fi
-.SH SEE ALSO
-PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
-.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
-.\"
-.\" End of "$Id$".
-.\"
diff --git a/test/ippproxy.c b/test/ippproxy.c
deleted file mode 100644 (file)
index e8dd2c1..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * "$Id: ippproxy.c 12191 2014-10-01 19:00:21Z msweet $"
- *
- * CUPS Cloud Proxy for HP PCL and IPP Everywhere printers.
- *
- * Copyright 2014 by Apple Inc.
- */
-
-#include <cups/cups.h>
-
-
-/*
- * 'main()' - Main entry for cupsproxy.
- */
-
-int                                    /* O - Exit status */
-main(int  argc,                                /* I - Number of command-line arguments */
-     char *argv[])                     /* I - Command-line arguments */
-{
-  (void)argc;
-  (void)argv;
-
-  return (0);
-}
-
-
-/*
- * End of "$Id: ippproxy.c 12191 2014-10-01 19:00:21Z msweet $".
- */
diff --git a/test/ippproxy.man b/test/ippproxy.man
deleted file mode 100644 (file)
index 1d46c9a..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-.\"
-.\" "$Id$"
-.\"
-.\" ippproxy man page for CUPS.
-.\"
-.\" Copyright 2014 by Apple Inc.
-.\"
-.\" These coded instructions, statements, and computer programs are the
-.\" property of Apple Inc. and are protected by Federal copyright
-.\" law.  Distribution and use rights are outlined in the file "LICENSE.txt"
-.\" which should have been included with this file.  If this file is
-.\" file is missing or damaged, see the license at "http://www.cups.org/".
-.\"
-.TH ippproxy 1 "CUPS" "16 September 2014" "Apple Inc."
-.SH NAME
-ippproxy \- a simple ipp proxy client
-.SH SYNOPSIS
-.B ippproxy
-[
-.B \-v[vvv]
-]
-.I infrastructure-printer-uri
-.I local-printer-uri
-.SH DESCRIPTION
-.B ippproxy
-is a simple IPP proxy client conforming to the IPP Shared Infrastructure Extensions (INFRA) specification. It can be used to proxy access to a local IPP printer through an Infrastructure Printer such as
-.BR ippinfra (1).
-.SH OPTIONS
-The following options are recognized by
-.B ippproxy:
-.TP 5
-.B \-v[vvv]
-Be (very) verbose when logging activity to the standard output.
-.SH EXIT STATUS
-The
-.B ippproxy
-program returns 1 if it is unable to process the command-line arguments or connect to either the infrastructure or local printers.
-Otherwise
-.B ippproxy
-will run continuously until terminated.
-.SH CONFORMING TO
-The
-.B ippproxy
-program is unique to CUPS and conforms to the IPP Shared Infrastructure Extensions (INFRA) specification.
-.SH EXAMPLE
-Run
-.B ippproxy
-with an infrastructure URI of "ipps://host.example.com/ipp/print" and a local URI of "ipp://10.0.1.2/ipp/print":
-.nf
-
-    ippproxy ipps://host.example.com/ipp/print ipp://10.0.1.2/ipp/print
-.fi
-.SH SEE ALSO
-PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
-.SH COPYRIGHT
-Copyright \[co] 2007-2014 by Apple Inc.
-.\"
-.\" End of "$Id$".
-.\"
index 6fcae92..8f58c9a 100644 (file)
@@ -1,6 +1,4 @@
 /*
- * "$Id: ippserver.c 12947 2015-10-28 15:23:33Z msweet $"
- *
  * Sample IPP Everywhere server for CUPS.
  *
  * Copyright 2010-2015 by Apple Inc.
@@ -680,7 +678,7 @@ main(int  argc,                             /* I - Number of command-line args */
 #ifdef WIN32
     if ((tmpdir = getenv("TEMP")) == NULL)
       tmpdir = "C:/TEMP";
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) && !TARGET_OS_IOS
     if ((tmpdir = getenv("TMPDIR")) == NULL)
       tmpdir = "/private/tmp";
 #else
@@ -7388,8 +7386,3 @@ valid_job_attributes(
 
   return (valid);
 }
-
-
-/*
- * End of "$Id: ippserver.c 12947 2015-10-28 15:23:33Z msweet $".
- */
index a5c1c1c..ad156b6 100644 (file)
@@ -1,6 +1,4 @@
 .\"
-.\" "$Id$"
-.\"
 .\" ippserver man page for CUPS.
 .\"
 .\" Copyright 2014 by Apple Inc.
@@ -167,6 +165,3 @@ command whenever a job is sent to the server:
 PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)
 .SH COPYRIGHT
 Copyright \[co] 2007-2014 by Apple Inc.
-.\"
-.\" End of "$Id$".
-.\"
index bf4af10..819ab74 100644 (file)
@@ -4900,7 +4900,7 @@ timeout_cb(http_t *http,          /* I - Connection to server */
   * buffer is empty...
   */
 
-#ifdef SO_NWRITE                       /* OS X and some versions of Linux */
+#ifdef SO_NWRITE                       /* macOS and some versions of Linux */
   socklen_t len = sizeof(buffered);    /* Size of return value */
 
   if (getsockopt(httpGetFd(http), SOL_SOCKET, SO_NWRITE, &buffered, &len))
@@ -5802,7 +5802,7 @@ with_value(FILE            *outfile,      /* I - Output file */
     case IPP_TAG_BOOLEAN :
        for (i = 0; i < attr->num_values; i ++)
        {
-          if (!strcmp(value, "true") == attr->values[i].boolean)
+          if ((!strcmp(value, "true")) == attr->values[i].boolean)
           {
             if (!matchbuf[0])
              strlcpy(matchbuf, value, matchlen);
index 1a76104..1e9b514 100755 (executable)
@@ -1,11 +1,9 @@
 #!/bin/sh
 #
-# "$Id: run-stp-tests.sh 12853 2015-08-28 13:38:46Z msweet $"
-#
 # Perform the complete set of IPP compliance tests specified in the
 # CUPS Software Test Plan.
 #
-# Copyright 2007-2015 by Apple Inc.
+# Copyright 2007-2016 by Apple Inc.
 # Copyright 1997-2007 by Easy Software Products, all rights reserved.
 #
 # These coded instructions, statements, and computer programs are the
@@ -279,7 +277,7 @@ case "$usedebugprintfs" in
                echo "Enabling debug printfs (level $usedebugprintfs); log files can be found in $BASE/log..."
                CUPS_DEBUG_LOG="$BASE/log/debug_printfs.%d"; export CUPS_DEBUG_LOG
                CUPS_DEBUG_LEVEL="$usedebugprintfs"; export CUPS_DEBUG_LEVEL
-               CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend).*$'; export CUPS_DEBUG_FILTER
+               CUPS_DEBUG_FILTER='^(http|_http|ipp|_ipp|cups.*Request|cupsGetResponse|cupsSend|mime).*$'; export CUPS_DEBUG_FILTER
                ;;
 
        *)
@@ -452,12 +450,14 @@ EOF
 }
 
 ln -s $root/test/test.convs $BASE/share/mime
+ln -s $root/test/test.types $BASE/share/mime
 
 if test `uname` = Darwin; then
        instfilter cgimagetopdf imagetopdf pdf
        instfilter cgpdftopdf pdftopdf passthru
        instfilter cgpdftops pdftops ps
        instfilter cgpdftoraster pdftoraster raster
+       instfilter cgpdftoraster pdftourf raster
        instfilter cgtexttopdf texttopdf pdf
        instfilter pstocupsraster pstoraster raster
 else
@@ -490,8 +490,11 @@ StrictConformance Yes
 Browsing Off
 Listen localhost:$port
 Listen $BASE/sock
+PassEnv DYLD_LIBRARY_PATH
+PassEnv LD_LIBRARY_PATH
+PassEnv LD_PRELOAD
 PassEnv LOCALEDIR
-PassEnv DYLD_INSERT_LIBRARIES
+PassEnv SHLIB_PATH
 MaxSubscriptions 3
 MaxLogSize 0
 AccessLogLevel actions
@@ -649,7 +652,7 @@ echo "    $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_l
 echo ""
 
 if test `uname` = Darwin -a "x$VALGRIND" = x; then
-       DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib MallocStackLogging=1 ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &
+       DYLD_INSERT_LIBRARIES="/usr/lib/libgmalloc.dylib" MallocStackLogging=1 ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &
 else
        $VALGRIND ../scheduler/cupsd -c $BASE/cupsd.conf -f >$BASE/log/debug_log 2>&1 &
 fi
@@ -723,9 +726,9 @@ date=`date "+%Y-%m-%d"`
 
 if test -d $root/.svn; then
        rev=`svn info . | grep Revision: | awk '{print $2}'`
-       strfile=$BASE/cups-str-2.1-r$rev-$user.html
+       strfile=$BASE/cups-str-2.2-r$rev-$user.html
 else
-       strfile=$BASE/cups-str-2.1-$date-$user.html
+       strfile=$BASE/cups-str-2.2-$date-$user.html
 fi
 
 rm -f $strfile
@@ -1112,7 +1115,3 @@ if test $fail != 0; then
 
        exit 1
 fi
-
-#
-# End of "$Id: run-stp-tests.sh 12853 2015-08-28 13:38:46Z msweet $"
-#
index d13205a..ff53eaf 100644 (file)
@@ -1,10 +1,10 @@
 <HTML>
 <HEAD>
        <META NAME="Description" CONTENT="CUPS Test Report">
-       <META NAME="COPYRIGHT" CONTENT="Copyright 2007-2015, All Rights Reserved">
-       <META NAME="DOCNUMBER" CONTENT="CUPS-STR-2.1">
+       <META NAME="COPYRIGHT" CONTENT="Copyright 2007-2016, All Rights Reserved">
+       <META NAME="DOCNUMBER" CONTENT="CUPS-STR-2.2">
        <META NAME="Author" CONTENT="Apple Inc.">
-       <TITLE>CUPS 2.1 Software Test Report</TITLE>
+       <TITLE>CUPS 2.2 Software Test Report</TITLE>
        <STYLE TYPE="text/css"><!--
        PRE {
          font-size: 80%;
 </HEAD>
 <BODY>
 
-<H1>CUPS 2.1 Software Test Report</H1>
+<H1>CUPS 2.2 Software Test Report</H1>
 
 <P>This software test report provides detailed test results that
-are used to evaluate the stability and compliance of CUPS Version 2.1.
+are used to evaluate the stability and compliance of CUPS Version 2.2.
 
 <H2>Document Overview</H2>
 
index 57540aa..77a9ce0 100644 (file)
@@ -2,6 +2,7 @@
 application/pdf application/vnd.cups-pdf 100 pdftopdf
 application/pdf application/postscript 100 pdftops
 application/pdf application/vnd.cups-raster 100 pdftoraster
+application/pdf image/urf 100 pdftourf
 application/postscript application/vnd.cups-raster 100 pstoraster
 image/jpeg application/pdf 100 imagetopdf
 text/plain application/pdf 100 texttopdf
diff --git a/test/test.types b/test/test.types
new file mode 100644 (file)
index 0000000..914081c
--- /dev/null
@@ -0,0 +1,2 @@
+# Test file listing potential MIME media types that are not in the standard mime.types file
+image/urf
\ No newline at end of file
index a71994e..d90dd58 100644 (file)
@@ -1,6 +1,6 @@
 *PPD-Adobe: "4.3"
 *%
-*% "$Id: testhp.ppd 11398 2013-11-06 20:11:11Z msweet $"
+*% "$Id$"
 *%
 *% Test HP PPD file for CUPS.
 *%
 *Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
 *Font ZapfDingbats: Special "(001.004S)" Standard ROM
 *%
-*% End of "$Id: testhp.ppd 11398 2013-11-06 20:11:11Z msweet $".
+*% End of "$Id$".
 *%
index 6251d06..a200c4a 100644 (file)
@@ -1,6 +1,6 @@
 *PPD-Adobe: "4.3"
 *%
-*% "$Id: testps.ppd 11398 2013-11-06 20:11:11Z msweet $"
+*% "$Id$"
 *%
 *%   Test PS PPD file for CUPS.
 *%
 *Font ZapfChancery-MediumItalic: Standard "(001.007S)" Standard ROM
 *Font ZapfDingbats: Special "(001.004S)" Standard ROM
 *%
-*% End of "$Id: testps.ppd 11398 2013-11-06 20:11:11Z msweet $".
+*% End of "$Id$".
 *%
index 01c581d..dee7b1b 100755 (executable)
@@ -1,7 +1,5 @@
 #!/bin/sh
 #
-# "$Id: waitjobs.sh 1253 2009-02-25 23:37:25Z msweet $"
-#
 # Script to wait for jobs to complete.
 #
 #   Copyright 2008-2009 by Apple Inc.
@@ -54,7 +52,3 @@ while test $timeout -gt 0; do
 done
 
 echo ""
-
-#
-# End of "$Id: waitjobs.sh 1253 2009-02-25 23:37:25Z msweet $".
-#
diff --git a/test/xmltotest.c b/test/xmltotest.c
deleted file mode 100644 (file)
index 143f241..0000000
+++ /dev/null
@@ -1,529 +0,0 @@
-/*
- * "$Id: xmltotest.c 3643 2012-02-13 16:35:48Z msweet $"
- *
- *   IANA XML registration to test file generator for CUPS.
- *
- *   Copyright 2011-2012 by Apple Inc.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
- *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Usage:
- *
- *   ./xmltotest [--ref standard] {--job|--printer} [XML file/URL] >file.test
- *
- *   If not specified, loads the XML registrations from:
- *
- *     http://www.iana.org/assignments/ipp-registrations/ipp-registrations.xml
- *
- *   "Standard" is of the form "rfcNNNN" or "pwgNNNN.N".
- *
- * Contents:
- *
- *   main()        - Process command-line arguments.
- *   compare_reg()  - Compare two registrations.
- *   load_xml()     - Load the XML registration file or URL.
- *   match_xref()   - Compare the xref against the named standard.
- *   new_reg()     - Create a new registration record.
- *   usage()       - Show usage message.
- *   write_expect() - Write an EXPECT test for an attribute.
- */
-
-
-#include <config.h>
-#include <cups/cups.h>
-#include <unistd.h>
-#include <fcntl.h>
-
-#ifdef HAVE_MXML_H
-#  include <mxml.h>
-/*
- * Local types...
- */
-
-typedef struct _cups_reg_s             /**** Registration data ****/
-{
-  char *name,                          /* Attribute name */
-       *member,                        /* Member attribute name */
-       *sub_member,                    /* Sub-member attribute name */
-       *syntax;                        /* Attribute syntax */
-} _cups_reg_t;
-
-
-/*
- * Local functions...
- */
-
-static int             compare_reg(_cups_reg_t *a, _cups_reg_t *b);
-static mxml_node_t     *load_xml(const char *reg_file);
-static int             match_xref(mxml_node_t *xref, const char *standard);
-static _cups_reg_t     *new_reg(mxml_node_t *name, mxml_node_t *member,
-                                mxml_node_t *sub_member, mxml_node_t *syntax);
-static int             usage(void);
-static void            write_expect(_cups_reg_t *reg, ipp_tag_t group);
-
-
-/*
- * 'main()' - Process command-line arguments.
- */
-
-int
-main(int  argc,                                /* I - Number of command-line args */
-     char *argv[])                     /* I - Command-line arguments */
-{
-  int          i;                      /* Looping var */
-  const char   *reg_file = NULL,       /* Registration file/URL to use */
-               *reg_standard = NULL;   /* Which standard to extract */
-  mxml_node_t  *reg_xml,               /* Registration XML data */
-               *reg_2,                 /* ipp-registrations-2 */
-               *reg_record,            /* <record> */
-               *reg_collection,        /* <collection> */
-               *reg_name,              /* <name> */
-               *reg_member,            /* <member_attribute> */
-               *reg_sub_member,        /* <sub-member_attribute> */
-               *reg_syntax,            /* <syntax> */
-               *reg_xref;              /* <xref> */
-  cups_array_t *attrs;                 /* Attribute registrations */
-  _cups_reg_t  *current;               /* Current attribute registration */
-  ipp_tag_t    group = IPP_TAG_ZERO,   /* Which attributes to test */
-               reg_group;              /* Group for registration */
-
-
- /*
-  * Parse command-line...
-  */
-
-  for (i = 1; i < argc; i ++)
-  {
-    if (!strcmp(argv[i], "--job") && group == IPP_TAG_ZERO)
-      group = IPP_TAG_JOB;
-    else if (!strcmp(argv[i], "--ref"))
-    {
-      i ++;
-      if (i >= argc)
-        return (usage());
-
-      reg_standard = argv[i];
-    }
-    else if (!strcmp(argv[i], "--printer") && group == IPP_TAG_ZERO)
-      group = IPP_TAG_PRINTER;
-    else if (argv[i][0] == '-' || reg_file)
-      return (usage());
-    else
-      reg_file = argv[i];
-  }
-
-  if (group == IPP_TAG_ZERO)
-    return (usage());
-
- /*
-  * Read registrations...
-  */
-
-  if (!reg_file)
-    reg_file = "http://www.iana.org/assignments/ipp-registrations/"
-              "ipp-registrations.xml";
-
-  if ((reg_xml = load_xml(reg_file)) == NULL)
-    return (1);
-
- /*
-  * Scan registrations for attributes...
-  */
-
-  if ((reg_2 = mxmlFindElement(reg_xml, reg_xml, "registry", "id",
-                               "ipp-registrations-2",
-                               MXML_DESCEND)) == NULL)
-  {
-    fprintf(stderr, "xmltotest: No IPP attribute registrations in \"%s\".\n",
-            reg_file);
-    return (1);
-  }
-
-  attrs = cupsArrayNew((cups_array_func_t)compare_reg, NULL);
-
-  for (reg_record = mxmlFindElement(reg_2, reg_2, "record", NULL, NULL,
-                                   MXML_DESCEND);
-       reg_record;
-       reg_record = mxmlFindElement(reg_record, reg_2, "record", NULL, NULL,
-                                    MXML_NO_DESCEND))
-  {
-   /*
-    * Get the values from the current record...
-    */
-
-    reg_collection = mxmlFindElement(reg_record, reg_record, "collection",
-                                     NULL, NULL, MXML_DESCEND);
-    reg_name       = mxmlFindElement(reg_record, reg_record, "name", NULL, NULL,
-                                     MXML_DESCEND);
-    reg_member     = mxmlFindElement(reg_record, reg_record, "member_attribute",
-                                     NULL, NULL, MXML_DESCEND);
-    reg_sub_member = mxmlFindElement(reg_record, reg_record,
-                                     "sub-member_attribute", NULL, NULL,
-                                     MXML_DESCEND);
-    reg_syntax     = mxmlFindElement(reg_record, reg_record, "syntax", NULL,
-                                     NULL, MXML_DESCEND);
-    reg_xref       = mxmlFindElement(reg_record, reg_record, "xref", NULL, NULL,
-                                     MXML_DESCEND);
-
-    if (!reg_collection || !reg_name || !reg_syntax || !reg_xref)
-      continue;
-
-   /*
-    * Filter based on group and standard...
-    */
-
-    if (!strcmp(reg_collection->child->value.opaque, "Printer Description"))
-      reg_group = IPP_TAG_PRINTER;
-    else if (!strcmp(reg_collection->child->value.opaque, "Job Description"))
-      reg_group = IPP_TAG_JOB;
-    else if (!strcmp(reg_collection->child->value.opaque, "Job Template"))
-    {
-      if (strstr(reg_name->child->value.opaque, "-default") ||
-          strstr(reg_name->child->value.opaque, "-supported"))
-       reg_group = IPP_TAG_PRINTER;
-      else
-       reg_group = IPP_TAG_JOB;
-    }
-    else
-      reg_group = IPP_TAG_ZERO;
-
-    if (reg_group != group)
-      continue;
-
-    if (reg_standard && !match_xref(reg_xref, reg_standard))
-      continue;
-
-   /*
-    * Add the record to the array...
-    */
-
-    if ((current = new_reg(reg_name, reg_member, reg_sub_member,
-                           reg_syntax)) != NULL)
-      cupsArrayAdd(attrs, current);
-  }
-
- /*
-  * Write out a test for all of the selected attributes...
-  */
-
-  puts("{");
-
-  if (group == IPP_TAG_PRINTER)
-  {
-    puts("\tOPERATION Get-Printer-Attributes");
-    puts("\tGROUP operation-attributes-tag");
-    puts("\tATTR charset attributes-charset utf-8");
-    puts("\tATTR naturalLanguage attributes-natural-language en");
-    puts("\tATTR uri printer-uri $uri");
-    puts("\tATTR name requesting-user-name $user");
-    puts("\tATTR keyword requested-attributes all,media-col-database");
-    puts("");
-    puts("\tSTATUS successful-ok");
-    puts("\tSTATUS successful-ok-ignored-or-substituted-attributes");
-    puts("");
-  }
-  else
-  {
-    puts("\tOPERATION Get-Job-Attributes");
-    puts("\tGROUP operation-attributes-tag");
-    puts("\tATTR charset attributes-charset utf-8");
-    puts("\tATTR naturalLanguage attributes-natural-language en");
-    puts("\tATTR uri printer-uri $uri");
-    puts("\tATTR integer job-id $job-id");
-    puts("\tATTR name requesting-user-name $user");
-    puts("");
-    puts("\tSTATUS successful-ok");
-    puts("");
-  }
-
-  for (current = cupsArrayFirst(attrs);
-       current;
-       current = cupsArrayNext(attrs))
-    write_expect(current, group);
-
-  puts("}");
-
-  return (0);
-}
-
-
-/*
- * 'compare_reg()' - Compare two registrations.
- */
-
-static int                             /* O - Result of comparison */
-compare_reg(_cups_reg_t *a,            /* I - First registration */
-            _cups_reg_t *b)            /* I - Second registration */
-{
-  int  retval;                         /* Return value */
-
-
-  if ((retval = strcmp(a->name, b->name)) != 0)
-    return (retval);
-
-  if (a->member && b->member)
-    retval = strcmp(a->member, b->member);
-  else if (a->member)
-    retval = 1;
-  else if (b->member)
-    retval = -1;
-
-  if (retval)
-    return (retval);
-
-  if (a->sub_member && b->sub_member)
-    retval = strcmp(a->sub_member, b->sub_member);
-  else if (a->sub_member)
-    retval = 1;
-  else if (b->sub_member)
-    retval = -1;
-
-  return (retval);
-}
-
-
-/*
- * 'load_xml()' - Load the XML registration file or URL.
- */
-
-static mxml_node_t *                   /* O - XML file or NULL */
-load_xml(const char *reg_file)         /* I - Filename or URL */
-{
-  mxml_node_t          *xml;           /* XML file */
-  char                 scheme[256],    /* Scheme */
-                       userpass[256],  /* Username and password */
-                       hostname[256],  /* Hostname */
-                       resource[1024], /* Resource path */
-                       filename[1024]; /* Temporary file */
-  int                  port,           /* Port number */
-                       fd;             /* File descriptor */
-
-
-  if (httpSeparateURI(HTTP_URI_CODING_ALL, reg_file, scheme, sizeof(scheme),
-                      userpass, sizeof(userpass), hostname, sizeof(hostname),
-                      &port, resource, sizeof(resource)) < HTTP_URI_OK)
-  {
-    fprintf(stderr, "xmltotest: Bad URI or filename \"%s\".\n", reg_file);
-    return (NULL);
-  }
-
-  if (!strcmp(scheme, "file"))
-  {
-   /*
-    * Local file...
-    */
-
-    if ((fd = open(resource, O_RDONLY)) < 0)
-    {
-      fprintf(stderr, "xmltotest: Unable to open \"%s\": %s\n", resource,
-              strerror(errno));
-      return (NULL);
-    }
-
-    filename[0] = '\0';
-  }
-  else if (strcmp(scheme, "http") && strcmp(scheme, "https"))
-  {
-    fprintf(stderr, "xmltotest: Unsupported URI scheme \"%s\".\n", scheme);
-    return (NULL);
-  }
-  else
-  {
-    http_t             *http;          /* HTTP connection */
-    http_encryption_t  encryption;     /* Encryption to use */
-    http_status_t      status;         /* Status of HTTP GET */
-
-    if (!strcmp(scheme, "https") || port == 443)
-      encryption = HTTP_ENCRYPT_ALWAYS;
-    else
-      encryption = HTTP_ENCRYPT_IF_REQUESTED;
-
-    if ((http = httpConnectEncrypt(hostname, port, encryption)) == NULL)
-    {
-      fprintf(stderr, "xmltotest: Unable to connect to \"%s\": %s\n", hostname,
-              cupsLastErrorString());
-      return (NULL);
-    }
-
-    if ((fd = cupsTempFd(filename, sizeof(filename))) < 0)
-    {
-      fprintf(stderr, "xmltotest: Unable to create temporary file: %s\n",
-              strerror(errno));
-      httpClose(http);
-      return (NULL);
-    }
-
-    status = cupsGetFd(http, resource, fd);
-    httpClose(http);
-
-    if (status != HTTP_OK)
-    {
-      fprintf(stderr, "mxmltotest: Unable to get \"%s\": %d\n", reg_file,
-              status);
-      close(fd);
-      unlink(filename);
-      return (NULL);
-    }
-
-    lseek(fd, 0, SEEK_SET);
-  }
-
- /*
-  * Load the XML file...
-  */
-
-  xml = mxmlLoadFd(NULL, fd, MXML_OPAQUE_CALLBACK);
-
-  close(fd);
-
-  if (filename[0])
-    unlink(filename);
-
-  return (xml);
-}
-
-
-/*
- * 'match_xref()' - Compare the xref against the named standard.
- */
-
-static int                             /* O - 1 if match, 0 if not */
-match_xref(mxml_node_t *xref,          /* I - <xref> node */
-           const char  *standard)      /* I - Name of standard */
-{
-  const char   *data;                  /* "data" attribute */
-  char         s[256];                 /* String to look for */
-
-
-  if ((data = mxmlElementGetAttr(xref, "data")) == NULL)
-    return (1);
-
-  if (!strcmp(data, standard))
-    return (1);
-
-  if (!strncmp(standard, "pwg", 3))
-  {
-    snprintf(s, sizeof(s), "-%s.pdf", standard + 3);
-    return (strstr(data, s) != NULL);
-  }
-  else
-    return (0);
-}
-
-
-/*
- * 'new_reg()' - Create a new registration record.
- */
-
-static _cups_reg_t *                   /* O - New record */
-new_reg(mxml_node_t *name,             /* I - Attribute name */
-        mxml_node_t *member,           /* I - Member attribute, if any */
-        mxml_node_t *sub_member,       /* I - Sub-member attribute, if any */
-        mxml_node_t *syntax)           /* I - Syntax */
-{
-  _cups_reg_t  *reg;                   /* New record */
-
-
-  if ((reg = calloc(1, sizeof(_cups_reg_t))) != NULL)
-  {
-    reg->name   = name->child->value.opaque;
-    reg->syntax = syntax->child->value.opaque;
-
-    if (member)
-      reg->member = member->child->value.opaque;
-
-    if (sub_member)
-      reg->sub_member = sub_member->child->value.opaque;
-  }
-
-  return (reg);
-}
-
-
-/*
- * 'usage()' - Show usage message.
- */
-
-static int                             /* O - Exit status */
-usage(void)
-{
-  puts("Usage ./xmltotest [--ref standard] {--job|--printer} [XML file/URL] "
-       ">file.test");
-  return (1);
-}
-
-
-/*
- * 'write_expect()' - Write an EXPECT test for an attribute.
- */
-
-static void
-write_expect(_cups_reg_t *reg,         /* I - Registration information */
-             ipp_tag_t   group)                /* I - Attribute group tag */
-{
-  const char   *syntax;                /* Pointer into syntax string */
-  int          single = 1,             /* Single valued? */
-               skip = 0;               /* Skip characters? */
-
-
-  printf("\tEXPECT ?%s OF-TYPE ", reg->name);
-
-  syntax = reg->syntax;
-
-  while (*syntax)
-  {
-    if (!strncmp(syntax, "1setOf", 6))
-    {
-      single = 0;
-      syntax += 6;
-
-      while (isspace(*syntax & 255))
-        syntax ++;
-
-      if (*syntax == '(')
-        syntax ++;
-    }
-    else if (!strncmp(syntax, "type1", 5) || !strncmp(syntax, "type2", 5) ||
-             !strncmp(syntax, "type3", 5))
-      syntax += 5;
-    else if (*syntax == '(')
-    {
-      skip = 1;
-      syntax ++;
-    }
-    else if (*syntax == ')')
-    {
-      skip = 0;
-      syntax ++;
-    }
-    else if (!skip && (*syntax == '|' || isalpha(*syntax & 255)))
-      putchar(*syntax++);
-    else
-      syntax ++;
-  }
-
-  if (single)
-    printf(" IN-GROUP %s COUNT 1\n", ippTagString(group));
-  else
-    printf(" IN-GROUP %s\n", ippTagString(group));
-}
-
-
-#else /* !HAVE_MXML */
-int
-main(void)
-{
-  return (1);
-}
-#endif /* HAVE_MXML */
-
-
-/*
- * End of "$Id: xmltotest.c 3643 2012-02-13 16:35:48Z msweet $".
- */
index 4637da3..fc33f0e 100644 (file)
@@ -1,27 +1,6 @@
-README - CUPS v1.7b1 - 2013-04-18
----------------------------------
+README - CUPS on Windows - 2016-08-08
+-------------------------------------
 
-INTRODUCTION
-
-    This package includes the cupstestppd and ipptool utilities, CUPS API
-    libraries libcups2.dll and libcupsimage2.dll, and the import libraries and
-    headers needed to develop Windows applications that use the CUPS API to
-    communicate with CUPS and other IPP services.
-
-    See the file "IPPTOOL.txt" for instructions on using the ipptool utility.
-
-
-LEGAL STUFF
-
-    CUPS is Copyright 2007-2013 by Apple Inc.  CUPS and the CUPS logo are
-    trademarks of Apple Inc.
-
-    The MD5 Digest code is Copyright 1999 Aladdin Enterprises.
-
-    This software is based in part on the work of the Independent JPEG Group.
-
-    CUPS is provided under the terms of version 2 of the GNU General Public
-    License and GNU Library General Public License. This program is distributed
-    in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
-    the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-    See the "doc/help/license.html" or "LICENSE.txt" files for more information.
+This directory contains Visual Studio project and solution files for building
+the CUPS library and cupstestppd, ippfind, ippserver, and ipptool utilities on
+Windows.
index 345c6d8..30c188e 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: config.h 12998 2015-12-02 15:09:04Z msweet $"
- *
  * Configuration file for CUPS on Windows.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -96,8 +94,8 @@ typedef unsigned long useconds_t;
  * Version of software...
  */
 
-#define CUPS_SVERSION "CUPS v2.1.2"
-#define CUPS_MINIMAL "CUPS/2.1.2"
+#define CUPS_SVERSION "CUPS v2.2"
+#define CUPS_MINIMAL "CUPS/2.2"
 
 
 /*
@@ -536,6 +534,13 @@ typedef unsigned long useconds_t;
 
 
 /*
+ * Do we have on-demand support (launchd/systemd/upstart)?
+ */
+
+/* #undef HAVE_ONDEMAND */
+
+
+/*
  * Do we have launchd support?
  */
 
@@ -551,6 +556,13 @@ typedef unsigned long useconds_t;
 
 
 /*
+ * Do we have upstart support?
+ */
+
+/* #undef HAVE_UPSTART */
+
+
+/*
  * Various scripting languages...
  */
 
@@ -565,23 +577,6 @@ typedef unsigned long useconds_t;
 
 
 /*
- * Location of the poppler/Xpdf pdftops program...
- */
-
-/* #undef HAVE_PDFTOPS */
-/* #undef HAVE_PDFTOPS_WITH_ORIGPAGESIZES */
-#define CUPS_PDFTOPS ""
-
-
-/*
- * Location of the Ghostscript gs program...
- */
-
-/* #undef HAVE_GHOSTSCRIPT */
-#define CUPS_GHOSTSCRIPT ""
-
-
-/*
  * Do we have CoreFoundation public and private headers?
  */
 
@@ -605,7 +600,14 @@ typedef unsigned long useconds_t;
 
 
 /*
- * Do we have OS X 10.4's mbr_XXX functions?
+ * Do we have the getgrouplist() function?
+ */
+
+#undef HAVE_GETGROUPLIST
+
+
+/*
+ * Do we have macOS 10.4's mbr_XXX functions?
  */
 
 /* #undef HAVE_MEMBERSHIP_H */
@@ -758,7 +760,7 @@ typedef unsigned long useconds_t;
 
 
 /*
- * Location of OS X localization bundle, if any.
+ * Location of macOS localization bundle, if any.
  */
 
 /* #undef CUPS_BUNDLEDIR */
@@ -797,7 +799,3 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
 #endif /* !HAVE_ABS && !abs */
 
 #endif /* !_CUPS_CONFIG_H_ */
-
-/*
- * End of "$Id: config.h 12998 2015-12-02 15:09:04Z msweet $".
- */
index 277d762..a53b963 100644 (file)
@@ -1,61 +1,24 @@
-Microsoft Visual Studio Solution File, Format Version 10.00\r
-# Visual Studio 2008\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcups2", "libcups2.vcproj", "{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {18950A1B-D37A-40C7-B2DF-C12986C0526E} = {18950A1B-D37A-40C7-B2DF-C12986C0526E}\r
-       EndProjectSection\r
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 2013\r
+VisualStudioVersion = 12.0.40629.0\r
+MinimumVisualStudioVersion = 10.0.40219.1\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcups2", "libcups2.vcxproj", "{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcupsimage2", "libcupsimage2.vcproj", "{CB4AA6F2-3E84-45BE-B505-95CD375E1234}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
-       EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcupsimage2", "libcupsimage2.vcxproj", "{CB4AA6F2-3E84-45BE-B505-95CD375E1234}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "testfile.vcproj", "{CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
-       EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testfile", "testfile.vcxproj", "{CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testhttp", "testhttp.vcproj", "{90B0058C-8393-411F-BD3B-E2C831D4E883}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
-       EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testhttp", "testhttp.vcxproj", "{90B0058C-8393-411F-BD3B-E2C831D4E883}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cupstestppd", "cupstestppd.vcproj", "{6BE0CDD3-4ED7-409C-A80F-19DF73664B1F}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {CB4AA6F2-3E84-45BE-B505-95CD375E1234} = {CB4AA6F2-3E84-45BE-B505-95CD375E1234}\r
-               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
-       EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cupstestppd", "cupstestppd.vcxproj", "{6BE0CDD3-4ED7-409C-A80F-19DF73664B1F}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ipptool", "ipptool.vcproj", "{B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {18950A1B-D37A-40C7-B2DF-C12986C0526E} = {18950A1B-D37A-40C7-B2DF-C12986C0526E}\r
-               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
-       EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ipptool", "ipptool.vcxproj", "{B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}"\r
 EndProject\r
-Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "ipptool-installer", "ipptool-installer.vdproj", "{6AEA263B-92C0-426F-B5FF-F7F5917B704A}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {B484DA0C-62C8-4C32-83B6-CCEB58968B85} = {B484DA0C-62C8-4C32-83B6-CCEB58968B85}\r
-       EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "regex", "regex.vcxproj", "{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
 EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "regex", "regex.vcproj", "{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ippfind", "ippfind.vcxproj", "{B484DA0C-62C8-4C32-83B6-CCEB58968B85}"\r
 EndProject\r
-Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "libcups2-installer", "libcups2-installer.vdproj", "{03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {B484DA0C-62C8-4C32-83B6-CCEB58968B85} = {B484DA0C-62C8-4C32-83B6-CCEB58968B85}\r
-       EndProjectSection\r
-EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ippfind", "ippfind.vcproj", "{B484DA0C-62C8-4C32-83B6-CCEB58968B85}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {18950A1B-D37A-40C7-B2DF-C12986C0526E} = {18950A1B-D37A-40C7-B2DF-C12986C0526E}\r
-               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
-       EndProjectSection\r
-EndProject\r
-Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "sw-ippeveselfcert10", "sw-ippeveselfcert10.vdproj", "{7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}"\r
-EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ippserver", "ippserver.vcproj", "{82A03BC7-0746-4B85-8908-3C7A3FAA58A9}"\r
-       ProjectSection(ProjectDependencies) = postProject\r
-               {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3} = {CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}\r
-       EndProjectSection\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ippserver", "ippserver.vcxproj", "{82A03BC7-0746-4B85-8908-3C7A3FAA58A9}"\r
 EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
@@ -83,20 +46,16 @@ Global
                {CB4AA6F2-3E84-45BE-B505-95CD375E1234}.Release|x64.Build.0 = Release|x64\r
                {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug|Win32.Build.0 = Debug|Win32\r
-               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug|x64.ActiveCfg = Debug|x64\r
-               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug|x64.Build.0 = Debug|x64\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Debug|x64.ActiveCfg = Debug|Win32\r
                {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release|Win32.ActiveCfg = Release|Win32\r
                {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release|Win32.Build.0 = Release|Win32\r
-               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release|x64.ActiveCfg = Debug|x64\r
-               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release|x64.Build.0 = Debug|x64\r
+               {CE75FC5F-E0CF-45DC-AD27-84666D3FBA30}.Release|x64.ActiveCfg = Release|Win32\r
                {90B0058C-8393-411F-BD3B-E2C831D4E883}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {90B0058C-8393-411F-BD3B-E2C831D4E883}.Debug|Win32.Build.0 = Debug|Win32\r
-               {90B0058C-8393-411F-BD3B-E2C831D4E883}.Debug|x64.ActiveCfg = Debug|x64\r
-               {90B0058C-8393-411F-BD3B-E2C831D4E883}.Debug|x64.Build.0 = Debug|x64\r
+               {90B0058C-8393-411F-BD3B-E2C831D4E883}.Debug|x64.ActiveCfg = Debug|Win32\r
                {90B0058C-8393-411F-BD3B-E2C831D4E883}.Release|Win32.ActiveCfg = Release|Win32\r
                {90B0058C-8393-411F-BD3B-E2C831D4E883}.Release|Win32.Build.0 = Release|Win32\r
-               {90B0058C-8393-411F-BD3B-E2C831D4E883}.Release|x64.ActiveCfg = Debug|x64\r
-               {90B0058C-8393-411F-BD3B-E2C831D4E883}.Release|x64.Build.0 = Debug|x64\r
+               {90B0058C-8393-411F-BD3B-E2C831D4E883}.Release|x64.ActiveCfg = Release|Win32\r
                {6BE0CDD3-4ED7-409C-A80F-19DF73664B1F}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {6BE0CDD3-4ED7-409C-A80F-19DF73664B1F}.Debug|Win32.Build.0 = Debug|Win32\r
                {6BE0CDD3-4ED7-409C-A80F-19DF73664B1F}.Debug|x64.ActiveCfg = Debug|x64\r
@@ -113,14 +72,6 @@ Global
                {B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}.Release|Win32.Build.0 = Release|Win32\r
                {B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}.Release|x64.ActiveCfg = Release|x64\r
                {B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}.Release|x64.Build.0 = Release|x64\r
-               {6AEA263B-92C0-426F-B5FF-F7F5917B704A}.Debug|Win32.ActiveCfg = Debug\r
-               {6AEA263B-92C0-426F-B5FF-F7F5917B704A}.Debug|Win32.Build.0 = Debug\r
-               {6AEA263B-92C0-426F-B5FF-F7F5917B704A}.Debug|x64.ActiveCfg = Debug\r
-               {6AEA263B-92C0-426F-B5FF-F7F5917B704A}.Debug|x64.Build.0 = Debug\r
-               {6AEA263B-92C0-426F-B5FF-F7F5917B704A}.Release|Win32.ActiveCfg = Release\r
-               {6AEA263B-92C0-426F-B5FF-F7F5917B704A}.Release|Win32.Build.0 = Release\r
-               {6AEA263B-92C0-426F-B5FF-F7F5917B704A}.Release|x64.ActiveCfg = Release\r
-               {6AEA263B-92C0-426F-B5FF-F7F5917B704A}.Release|x64.Build.0 = Release\r
                {18950A1B-D37A-40C7-B2DF-C12986C0526E}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {18950A1B-D37A-40C7-B2DF-C12986C0526E}.Debug|Win32.Build.0 = Debug|Win32\r
                {18950A1B-D37A-40C7-B2DF-C12986C0526E}.Debug|x64.ActiveCfg = Debug|x64\r
@@ -128,14 +79,6 @@ Global
                {18950A1B-D37A-40C7-B2DF-C12986C0526E}.Release|Win32.ActiveCfg = Release|Win32\r
                {18950A1B-D37A-40C7-B2DF-C12986C0526E}.Release|Win32.Build.0 = Release|Win32\r
                {18950A1B-D37A-40C7-B2DF-C12986C0526E}.Release|x64.ActiveCfg = Release|x64\r
-               {03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}.Debug|Win32.ActiveCfg = Debug\r
-               {03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}.Debug|Win32.Build.0 = Debug\r
-               {03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}.Debug|x64.ActiveCfg = Debug\r
-               {03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}.Debug|x64.Build.0 = Debug\r
-               {03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}.Release|Win32.ActiveCfg = Release\r
-               {03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}.Release|Win32.Build.0 = Release\r
-               {03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}.Release|x64.ActiveCfg = Release\r
-               {03CF67C2-3FF5-44EA-B3AF-FB62D3BED961}.Release|x64.Build.0 = Release\r
                {B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Debug|Win32.Build.0 = Debug|Win32\r
                {B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Debug|x64.ActiveCfg = Debug|x64\r
@@ -144,14 +87,6 @@ Global
                {B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Release|Win32.Build.0 = Release|Win32\r
                {B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Release|x64.ActiveCfg = Release|x64\r
                {B484DA0C-62C8-4C32-83B6-CCEB58968B85}.Release|x64.Build.0 = Release|x64\r
-               {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Debug|Win32.ActiveCfg = Debug\r
-               {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Debug|Win32.Build.0 = Debug\r
-               {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Debug|x64.ActiveCfg = Debug\r
-               {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Debug|x64.Build.0 = Debug\r
-               {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Release|Win32.ActiveCfg = Release\r
-               {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Release|Win32.Build.0 = Release\r
-               {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Release|x64.ActiveCfg = Release\r
-               {7F6DD7F5-7DCC-4C7A-8647-E253E4E00A37}.Release|x64.Build.0 = Release\r
                {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Debug|Win32.ActiveCfg = Debug|Win32\r
                {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Debug|Win32.Build.0 = Debug|Win32\r
                {82A03BC7-0746-4B85-8908-3C7A3FAA58A9}.Debug|x64.ActiveCfg = Debug|x64\r
diff --git a/vcnet/ipptool-installer.vdproj b/vcnet/ipptool-installer.vdproj
deleted file mode 100644 (file)
index 555cd2e..0000000
+++ /dev/null
@@ -1,1970 +0,0 @@
-"DeployProject"\r
-{\r
-"VSVersion" = "3:800"\r
-"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"\r
-"IsWebType" = "8:FALSE"\r
-"ProjectName" = "8:ipptool-installer"\r
-"LanguageId" = "3:1033"\r
-"CodePage" = "3:1252"\r
-"UILanguageId" = "3:1033"\r
-"SccProjectName" = "8:"\r
-"SccLocalPath" = "8:"\r
-"SccAuxPath" = "8:"\r
-"SccProvider" = "8:"\r
-    "Hierarchy"\r
-    {\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_009DC3ED78164048934ED35E89A0A1C5"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1A1324305D78463BBFC62269C56DCF0B"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1DBDCFABB8DF28E5F75E41EDAE4BF6BE"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1E4B2A9BD6A44926B719E0D7E8FC0952"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_290B9B52C4784AED94FA6B87CAB18D10"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_40C483299484486C9416B704F0EF4A6C"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_41260853156249FDB39A8E386F935492"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_425F2537D86148B9A4233AD27D426738"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_4273A45FE6E54897AC9A4F66D9AA59EC"\r
-        "OwnerKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_4454D1BB58774F95972FB94388DC5E6A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_46AB64FF360D4F309866FF5F49C65D88"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_531A281ACDC6420D918E2A9FE97A2D42"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_592FC984DBFD494D9FB7DFFEA35AD7A5"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_65CBD149C9DA448FBACE2B02766A6537"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_6F893B2A3B7048CBA39359FC368BCA27"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_80DBA85C961E447CB92C95CE1F38C56B"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_842C04D73EBC4F5DBC2FD58D5B98D5D1"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
-        "OwnerKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
-        "OwnerKey" = "8:_E97571D3FBE048DABDC59B37762D800F"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
-        "OwnerKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_8AC6B9D7EF6B4C7A8C7B5AD85AA397C3"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_8CC3562BCDED4676A672115D19D898B5"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_9314DE98517C42E9AF190B67472408DF"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_9967519E7058965D4C7DEF47EB39CC50"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_9FBF78D7B89EEA843380D5F10E1954D7"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A63C5C4108AB4B588878482B26876DC5"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_AF057921D20E4520A3C6420F0729A744"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B85BD013DC024B9E82862535191B405B"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B9E79062FEF64745915546DDD5BF8D85"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_BD5B70C103EF41D9A30CF249D2B93CEB"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_C430646D6E7C4CBDA84F951AE95EB76F"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D4BEA026ABFB46DD960AD8EFCAE45E31"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D5CD9D9AB1644688A1D54B1589BDF724"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E30823E684384F4DB7385B14F714AD95"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E3C6C5A7FDD94965B68960844461D5EA"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E4C0F67094B94E05AB69787080727089"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E50F2FB950DD47D993DC8FB577266549"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E7DD6A8D195B4752B0525628FF9586E4"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E97571D3FBE048DABDC59B37762D800F"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E9CA670571B5447682529CDB7BC3C100"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_EA9CE1B09EF1442BAA3C3F5AE7865ABF"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_EC7FE3265BDB4C52B5B87A8AC56AFDDD"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_F16FA7F9826E461E955A95B2EEABA975"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_F22F5380A6E14A43A15A452C7C6F6C07"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-    }\r
-    "Configurations"\r
-    {\r
-        "Debug"\r
-        {\r
-        "DisplayName" = "8:Debug"\r
-        "IsDebugOnly" = "11:TRUE"\r
-        "IsReleaseOnly" = "11:FALSE"\r
-        "OutputFilename" = "8:ipptool-windows.msi"\r
-        "PackageFilesAs" = "3:2"\r
-        "PackageFileSize" = "3:-2147483648"\r
-        "CabType" = "3:1"\r
-        "Compression" = "3:3"\r
-        "SignOutput" = "11:FALSE"\r
-        "CertificateFile" = "8:"\r
-        "PrivateKeyFile" = "8:"\r
-        "TimeStampServer" = "8:"\r
-        "InstallerBootstrapper" = "3:2"\r
-            "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"\r
-            {\r
-            "Enabled" = "11:TRUE"\r
-            "PromptEnabled" = "11:TRUE"\r
-            "PrerequisitesLocation" = "2:1"\r
-            "Url" = "8:"\r
-            "ComponentsUrl" = "8:"\r
-                "Items"\r
-                {\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"\r
-                    {\r
-                    "Name" = "8:.NET Framework 3.5 SP1"\r
-                    "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"\r
-                    }\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"\r
-                    {\r
-                    "Name" = "8:Windows Installer 3.1"\r
-                    "ProductCode" = "8:Microsoft.Windows.Installer.3.1"\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "Release"\r
-        {\r
-        "DisplayName" = "8:Release"\r
-        "IsDebugOnly" = "11:FALSE"\r
-        "IsReleaseOnly" = "11:TRUE"\r
-        "OutputFilename" = "8:ipptool-windows.msi"\r
-        "PackageFilesAs" = "3:2"\r
-        "PackageFileSize" = "3:-2147483648"\r
-        "CabType" = "3:1"\r
-        "Compression" = "3:3"\r
-        "SignOutput" = "11:FALSE"\r
-        "CertificateFile" = "8:"\r
-        "PrivateKeyFile" = "8:"\r
-        "TimeStampServer" = "8:"\r
-        "InstallerBootstrapper" = "3:2"\r
-            "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"\r
-            {\r
-            "Enabled" = "11:TRUE"\r
-            "PromptEnabled" = "11:TRUE"\r
-            "PrerequisitesLocation" = "2:1"\r
-            "Url" = "8:"\r
-            "ComponentsUrl" = "8:"\r
-                "Items"\r
-                {\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"\r
-                    {\r
-                    "Name" = "8:.NET Framework 3.5 SP1"\r
-                    "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"\r
-                    }\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"\r
-                    {\r
-                    "Name" = "8:Windows Installer 3.1"\r
-                    "ProductCode" = "8:Microsoft.Windows.Installer.3.1"\r
-                    }\r
-                }\r
-            }\r
-        }\r
-    }\r
-    "Deployable"\r
-    {\r
-        "CustomAction"\r
-        {\r
-        }\r
-        "DefaultFeature"\r
-        {\r
-        "Name" = "8:DefaultFeature"\r
-        "Title" = "8:"\r
-        "Description" = "8:"\r
-        }\r
-        "ExternalPersistence"\r
-        {\r
-            "LaunchCondition"\r
-            {\r
-            }\r
-        }\r
-        "File"\r
-        {\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_009DC3ED78164048934ED35E89A0A1C5"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-a4.ps"\r
-            "TargetName" = "8:document-a4.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1A1324305D78463BBFC62269C56DCF0B"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ipptoolfile.html"\r
-            "TargetName" = "8:man-ipptoolfile.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1DBDCFABB8DF28E5F75E41EDAE4BF6BE"\r
-            {\r
-            "SourcePath" = "8:zlibwapi.dll"\r
-            "TargetName" = "8:zlibwapi.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1E4B2A9BD6A44926B719E0D7E8FC0952"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-printer-attributes.test"\r
-            "TargetName" = "8:get-printer-attributes.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_290B9B52C4784AED94FA6B87CAB18D10"\r
-            {\r
-            "SourcePath" = "8:..\\test\\print-job.test"\r
-            "TargetName" = "8:print-job.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_40C483299484486C9416B704F0EF4A6C"\r
-            {\r
-            "SourcePath" = "8:..\\test\\testfile.pdf"\r
-            "TargetName" = "8:testfile.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_41260853156249FDB39A8E386F935492"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-1.1.test"\r
-            "TargetName" = "8:ipp-1.1.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_425F2537D86148B9A4233AD27D426738"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-2.0.test"\r
-            "TargetName" = "8:ipp-2.0.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4454D1BB58774F95972FB94388DC5E6A"\r
-            {\r
-            "SourcePath" = "8:..\\test\\print-job-deflate.test"\r
-            "TargetName" = "8:print-job-deflate.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_46AB64FF360D4F309866FF5F49C65D88"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-everywhere.test"\r
-            "TargetName" = "8:ipp-everywhere.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_531A281ACDC6420D918E2A9FE97A2D42"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-notifications.test"\r
-            "TargetName" = "8:get-notifications.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_592FC984DBFD494D9FB7DFFEA35AD7A5"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ippfind.html"\r
-            "TargetName" = "8:man-ippfind.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_65CBD149C9DA448FBACE2B02766A6537"\r
-            {\r
-            "SourcePath" = "8:..\\test\\testfile.ps"\r
-            "TargetName" = "8:testfile.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6F893B2A3B7048CBA39359FC368BCA27"\r
-            {\r
-            "SourcePath" = "8:..\\test\\onepage-letter.ps"\r
-            "TargetName" = "8:onepage-letter.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_80DBA85C961E447CB92C95CE1F38C56B"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-2.2.test"\r
-            "TargetName" = "8:ipp-2.2.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_842C04D73EBC4F5DBC2FD58D5B98D5D1"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-a4.pdf"\r
-            "TargetName" = "8:document-a4.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8AC6B9D7EF6B4C7A8C7B5AD85AA397C3"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-jobs.test"\r
-            "TargetName" = "8:get-jobs.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8CC3562BCDED4676A672115D19D898B5"\r
-            {\r
-            "SourcePath" = "8:..\\test\\testfile.jpg"\r
-            "TargetName" = "8:testfile.jpg"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9314DE98517C42E9AF190B67472408DF"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-subscriptions.test"\r
-            "TargetName" = "8:get-subscriptions.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9967519E7058965D4C7DEF47EB39CC50"\r
-            {\r
-            "SourcePath" = "8:CRYPT32.dll"\r
-            "TargetName" = "8:CRYPT32.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9FBF78D7B89EEA843380D5F10E1954D7"\r
-            {\r
-            "SourcePath" = "8:Secur32.dll"\r
-            "TargetName" = "8:Secur32.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A63C5C4108AB4B588878482B26876DC5"\r
-            {\r
-            "SourcePath" = "8:..\\test\\validate-job.test"\r
-            "TargetName" = "8:validate-job.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_AF057921D20E4520A3C6420F0729A744"\r
-            {\r
-            "SourcePath" = "8:..\\IPPTOOL.txt"\r
-            "TargetName" = "8:IPPTOOL.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B85BD013DC024B9E82862535191B405B"\r
-            {\r
-            "SourcePath" = "8:..\\test\\print-job-gzip.test"\r
-            "TargetName" = "8:print-job-gzip.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B9E79062FEF64745915546DDD5BF8D85"\r
-            {\r
-            "SourcePath" = "8:..\\CHANGES-IPPTOOL.txt"\r
-            "TargetName" = "8:CHANGES-IPPTOOL.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BD5B70C103EF41D9A30CF249D2B93CEB"\r
-            {\r
-            "SourcePath" = "8:setdebug.bat"\r
-            "TargetName" = "8:setdebug.bat"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C430646D6E7C4CBDA84F951AE95EB76F"\r
-            {\r
-            "SourcePath" = "8:..\\test\\color.jpg"\r
-            "TargetName" = "8:color.jpg"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D4BEA026ABFB46DD960AD8EFCAE45E31"\r
-            {\r
-            "SourcePath" = "8:..\\test\\onepage-letter.pdf"\r
-            "TargetName" = "8:onepage-letter.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D5CD9D9AB1644688A1D54B1589BDF724"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ipptool.html"\r
-            "TargetName" = "8:man-ipptool.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E30823E684384F4DB7385B14F714AD95"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-2.1.test"\r
-            "TargetName" = "8:ipp-2.1.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E3C6C5A7FDD94965B68960844461D5EA"\r
-            {\r
-            "SourcePath" = "8:..\\LICENSE.txt"\r
-            "TargetName" = "8:LICENSE.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E4C0F67094B94E05AB69787080727089"\r
-            {\r
-            "SourcePath" = "8:..\\test\\create-printer-subscription.test"\r
-            "TargetName" = "8:create-printer-subscription.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E50F2FB950DD47D993DC8FB577266549"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-letter.ps"\r
-            "TargetName" = "8:document-letter.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E7DD6A8D195B4752B0525628FF9586E4"\r
-            {\r
-            "SourcePath" = "8:..\\test\\onepage-a4.ps"\r
-            "TargetName" = "8:onepage-a4.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E9CA670571B5447682529CDB7BC3C100"\r
-            {\r
-            "SourcePath" = "8:..\\test\\gray.jpg"\r
-            "TargetName" = "8:gray.jpg"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EA9CE1B09EF1442BAA3C3F5AE7865ABF"\r
-            {\r
-            "SourcePath" = "8:..\\test\\testfile.txt"\r
-            "TargetName" = "8:testfile.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EC7FE3265BDB4C52B5B87A8AC56AFDDD"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-completed-jobs.test"\r
-            "TargetName" = "8:get-completed-jobs.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F16FA7F9826E461E955A95B2EEABA975"\r
-            {\r
-            "SourcePath" = "8:..\\test\\onepage-a4.pdf"\r
-            "TargetName" = "8:onepage-a4.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F22F5380A6E14A43A15A452C7C6F6C07"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-letter.pdf"\r
-            "TargetName" = "8:document-letter.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-        }\r
-        "FileType"\r
-        {\r
-        }\r
-        "Folder"\r
-        {\r
-            "{1525181F-901A-416C-8A58-119130FE478E}:_BEC0EAE20C954C78B294B83E6696156E"\r
-            {\r
-            "Name" = "8:#1919"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:ProgramMenuFolder"\r
-                "Folders"\r
-                {\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_E379D4EDBAD0460BB876711E9062ADB4"\r
-                    {\r
-                    "Name" = "8:ipptool"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_D115D2F4F12143B09D5FDA447A6A7D04"\r
-                        "Folders"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{1525181F-901A-416C-8A58-119130FE478E}:_D02CDADE99F344CF92CA1A8D0278861F"\r
-            {\r
-            "Name" = "8:#1916"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:DesktopFolder"\r
-                "Folders"\r
-                {\r
-                }\r
-            }\r
-            "{3C67513D-01DD-4637-8A68-80971EB9504F}:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            {\r
-            "DefaultLocation" = "8:[ProgramFilesFolder]\\ipptool"\r
-            "Name" = "8:#1925"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:TARGETDIR"\r
-                "Folders"\r
-                {\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_EB00D0298C7E441EBD0257AC04FB3560"\r
-                    {\r
-                    "Name" = "8:ipptool"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_6F223FB51798428A9F2D64A5A7F2B49C"\r
-                        "Folders"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "LaunchCondition"\r
-        {\r
-        }\r
-        "Locator"\r
-        {\r
-        }\r
-        "MsiBootstrapper"\r
-        {\r
-        "LangId" = "3:1033"\r
-        "RequiresElevation" = "11:FALSE"\r
-        }\r
-        "Product"\r
-        {\r
-        "Name" = "8:Microsoft Visual Studio"\r
-        "ProductName" = "8:ipptool for Windows"\r
-        "ProductCode" = "8:{5B0420A3-BD82-4698-B8A1-9D9EC51A7836}"\r
-        "PackageCode" = "8:{ECECE842-1E95-48BD-962D-A4E62FBB5F89}"\r
-        "UpgradeCode" = "8:{BAB6EBBB-515D-4155-9FEF-D98DA76814CA}"\r
-        "RestartWWWService" = "11:FALSE"\r
-        "RemovePreviousVersions" = "11:TRUE"\r
-        "DetectNewerInstalledVersion" = "11:TRUE"\r
-        "InstallAllUsers" = "11:TRUE"\r
-        "ProductVersion" = "8:13.07.3100"\r
-        "Manufacturer" = "8:Apple Inc."\r
-        "ARPHELPTELEPHONE" = "8:"\r
-        "ARPHELPLINK" = "8:http://www.cups.org/str.php"\r
-        "Title" = "8:ipptool"\r
-        "Subject" = "8:"\r
-        "ARPCONTACT" = "8:Apple Inc."\r
-        "Keywords" = "8:IPP, Internet Printing Protocol"\r
-        "ARPCOMMENTS" = "8:ipptool for Windows"\r
-        "ARPURLINFOABOUT" = "8:http://www.cups.org/"\r
-        "ARPPRODUCTICON" = "8:"\r
-        "ARPIconIndex" = "3:0"\r
-        "SearchPath" = "8:"\r
-        "UseSystemSearchPath" = "11:TRUE"\r
-        "TargetPlatform" = "3:0"\r
-        "PreBuildEvent" = "8:"\r
-        "PostBuildEvent" = "8:"\r
-        "RunPostBuildEvent" = "3:0"\r
-        }\r
-        "Registry"\r
-        {\r
-            "HKLM"\r
-            {\r
-                "Keys"\r
-                {\r
-                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_BC4E66686BCA4F9A8B24B6CF2728DACD"\r
-                    {\r
-                    "Name" = "8:Software"\r
-                    "Condition" = "8:"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "DeleteAtUninstall" = "11:FALSE"\r
-                    "Transitive" = "11:FALSE"\r
-                        "Keys"\r
-                        {\r
-                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F9AB9B310C7545D993D690F529048AA2"\r
-                            {\r
-                            "Name" = "8:cups.org"\r
-                            "Condition" = "8:"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "DeleteAtUninstall" = "11:FALSE"\r
-                            "Transitive" = "11:FALSE"\r
-                                "Keys"\r
-                                {\r
-                                }\r
-                                "Values"\r
-                                {\r
-                                    "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_4E5BAC705A1D44E78C90C6D2A4A7BE20"\r
-                                    {\r
-                                    "Name" = "8:installdir"\r
-                                    "Condition" = "8:"\r
-                                    "Transitive" = "11:FALSE"\r
-                                    "ValueTypes" = "3:2"\r
-                                    "Value" = "8:[TARGETDIR]"\r
-                                    }\r
-                                }\r
-                            }\r
-                        }\r
-                        "Values"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "HKCU"\r
-            {\r
-                "Keys"\r
-                {\r
-                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_A4C9879F42874B6B92960A55F2D98922"\r
-                    {\r
-                    "Name" = "8:Software"\r
-                    "Condition" = "8:"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "DeleteAtUninstall" = "11:FALSE"\r
-                    "Transitive" = "11:FALSE"\r
-                        "Keys"\r
-                        {\r
-                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_1ACB03C307FB4B85BB27C9913FB58B09"\r
-                            {\r
-                            "Name" = "8:[Manufacturer]"\r
-                            "Condition" = "8:"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "DeleteAtUninstall" = "11:FALSE"\r
-                            "Transitive" = "11:FALSE"\r
-                                "Keys"\r
-                                {\r
-                                }\r
-                                "Values"\r
-                                {\r
-                                }\r
-                            }\r
-                        }\r
-                        "Values"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "HKCR"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-            "HKU"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-            "HKPU"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-        }\r
-        "Sequences"\r
-        {\r
-        }\r
-        "Shortcut"\r
-        {\r
-            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_63715171338D40FFBC5B47A1418B4814"\r
-            {\r
-            "Name" = "8:README"\r
-            "Arguments" = "8:"\r
-            "Description" = "8:"\r
-            "ShowCmd" = "3:1"\r
-            "IconIndex" = "3:0"\r
-            "Transitive" = "11:FALSE"\r
-            "Target" = "8:_AF057921D20E4520A3C6420F0729A744"\r
-            "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"\r
-            "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Icon" = "8:"\r
-            "Feature" = "8:"\r
-            }\r
-            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_70CF74DB997A408DBBFD48AB10F92321"\r
-            {\r
-            "Name" = "8:ipptool Documentation"\r
-            "Arguments" = "8:"\r
-            "Description" = "8:"\r
-            "ShowCmd" = "3:1"\r
-            "IconIndex" = "3:0"\r
-            "Transitive" = "11:FALSE"\r
-            "Target" = "8:_D5CD9D9AB1644688A1D54B1589BDF724"\r
-            "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"\r
-            "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Icon" = "8:"\r
-            "Feature" = "8:"\r
-            }\r
-            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_BD2A7DF74D844FF5919EE8340EE36ECD"\r
-            {\r
-            "Name" = "8:Test File Documentation"\r
-            "Arguments" = "8:"\r
-            "Description" = "8:"\r
-            "ShowCmd" = "3:1"\r
-            "IconIndex" = "3:0"\r
-            "Transitive" = "11:FALSE"\r
-            "Target" = "8:_1A1324305D78463BBFC62269C56DCF0B"\r
-            "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"\r
-            "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Icon" = "8:"\r
-            "Feature" = "8:"\r
-            }\r
-        }\r
-        "UserInterface"\r
-        {\r
-            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_045DF90B1FF941A9BA7A742CFC0A6C00"\r
-            {\r
-            "UseDynamicProperties" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_345BD86390E841A98B74ED3E07945F8C"\r
-            {\r
-            "Name" = "8:#1900"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:1"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_067C143A8731427180B1568AF8C07375"\r
-                    {\r
-                    "Sequence" = "3:200"\r
-                    "DisplayName" = "8:Installation Folder"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A2F2CC6EB9D7453599E7598D4D0629A5"\r
-                    {\r
-                    "Sequence" = "3:300"\r
-                    "DisplayName" = "8:Confirm Installation"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C2B41369B7334F419318792EBA031412"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Welcome"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "CopyrightWarning"\r
-                            {\r
-                            "Name" = "8:CopyrightWarning"\r
-                            "DisplayName" = "8:#1002"\r
-                            "Description" = "8:#1102"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:2"\r
-                            "Value" = "8:This computer program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2."\r
-                            "DefaultValue" = "8:#1202"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "Welcome"\r
-                            {\r
-                            "Name" = "8:Welcome"\r
-                            "DisplayName" = "8:#1003"\r
-                            "Description" = "8:#1103"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1203"\r
-                            "DefaultValue" = "8:#1203"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6B654A06090344BA9AA443E0D0296737"\r
-            {\r
-            "Name" = "8:#1902"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:3"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FB4E7BBC3DA242309FFB58F9A6194A93"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Finished"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "UpdateText"\r
-                            {\r
-                            "Name" = "8:UpdateText"\r
-                            "DisplayName" = "8:#1058"\r
-                            "Description" = "8:#1158"\r
-                            "Type" = "3:15"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1258"\r
-                            "DefaultValue" = "8:#1258"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_712819C7C4F042ABB708949BD4426628"\r
-            {\r
-            "Name" = "8:#1900"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:1"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2F49D4FACB954AF2B786D2AD9206D053"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Welcome"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "CopyrightWarning"\r
-                            {\r
-                            "Name" = "8:CopyrightWarning"\r
-                            "DisplayName" = "8:#1002"\r
-                            "Description" = "8:#1102"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:2"\r
-                            "Value" = "8:This computer program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2."\r
-                            "DefaultValue" = "8:#1202"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "Welcome"\r
-                            {\r
-                            "Name" = "8:Welcome"\r
-                            "DisplayName" = "8:#1003"\r
-                            "Description" = "8:#1103"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1203"\r
-                            "DefaultValue" = "8:#1203"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_770E25BC453A464EA8CD51381FDDDD9F"\r
-                    {\r
-                    "Sequence" = "3:300"\r
-                    "DisplayName" = "8:Confirm Installation"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9534A64B629F4F868D6D7A384C76DCB2"\r
-                    {\r
-                    "Sequence" = "3:200"\r
-                    "DisplayName" = "8:Installation Folder"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "InstallAllUsersVisible"\r
-                            {\r
-                            "Name" = "8:InstallAllUsersVisible"\r
-                            "DisplayName" = "8:#1059"\r
-                            "Description" = "8:#1159"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_770CCEFF81BD46A182A6E816A41A0E81"\r
-            {\r
-            "Name" = "8:#1901"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:2"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_75E0C1FD245D493DA0D7E3E0BC0C365F"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Progress"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "ShowProgress"\r
-                            {\r
-                            "Name" = "8:ShowProgress"\r
-                            "DisplayName" = "8:#1009"\r
-                            "Description" = "8:#1109"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_933B15E9A383418F8ADF3B13F68458F3"\r
-            {\r
-            "UseDynamicProperties" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E310DA8CED734E00950A3C5D630CE987"\r
-            {\r
-            "Name" = "8:#1902"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:3"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CB172E69F9C74901BE1040336CFD4F72"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Finished"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_F44F9BE9B54940848289669635E4A5A2"\r
-            {\r
-            "Name" = "8:#1901"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:2"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_14751F327A634B989283C8F28CFB6DFC"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Progress"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "ShowProgress"\r
-                            {\r
-                            "Name" = "8:ShowProgress"\r
-                            "DisplayName" = "8:#1009"\r
-                            "Description" = "8:#1109"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "MergeModule"\r
-        {\r
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_4273A45FE6E54897AC9A4F66D9AA59EC"\r
-            {\r
-            "UseDynamicProperties" = "11:TRUE"\r
-            "IsDependency" = "11:TRUE"\r
-            "SourcePath" = "8:microsoft_vc90_debugcrt_x86.msm"\r
-                "Properties"\r
-                {\r
-                }\r
-            "LanguageId" = "3:0"\r
-            "Exclude" = "11:FALSE"\r
-            "Folder" = "8:"\r
-            "Feature" = "8:"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_8A6033CAC27E4C1185B4FDF7D2BF8D2E"\r
-            {\r
-            "UseDynamicProperties" = "11:TRUE"\r
-            "IsDependency" = "11:TRUE"\r
-            "SourcePath" = "8:policy_9_0_Microsoft_VC90_DebugCRT_x86.msm"\r
-                "Properties"\r
-                {\r
-                }\r
-            "LanguageId" = "3:0"\r
-            "Exclude" = "11:FALSE"\r
-            "Folder" = "8:"\r
-            "Feature" = "8:"\r
-            "IsolateTo" = "8:"\r
-            }\r
-        }\r
-        "ProjectOutput"\r
-        {\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_58DC0E72F0944BEFB927AED718CD1660"\r
-            {\r
-            "SourcePath" = "8:Win32\\Release\\ippfind.exe"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{B484DA0C-62C8-4C32-83B6-CCEB58968B85}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D02EB13951314EFD9C539150EF8E53B8"\r
-            {\r
-            "SourcePath" = "8:Win32\\Release\\regex.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E97571D3FBE048DABDC59B37762D800F"\r
-            {\r
-            "SourcePath" = "8:Win32\\Release\\ipptool.exe"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-            {\r
-            "SourcePath" = "8:Win32\\Release\\libcups2.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-        }\r
-    }\r
-}\r
diff --git a/vcnet/libcups2-installer.vdproj b/vcnet/libcups2-installer.vdproj
deleted file mode 100644 (file)
index 74b2216..0000000
+++ /dev/null
@@ -1,2981 +0,0 @@
-"DeployProject"\r
-{\r
-"VSVersion" = "3:800"\r
-"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"\r
-"IsWebType" = "8:FALSE"\r
-"ProjectName" = "8:libcups2-installer"\r
-"LanguageId" = "3:1033"\r
-"CodePage" = "3:1252"\r
-"UILanguageId" = "3:1033"\r
-"SccProjectName" = "8:"\r
-"SccLocalPath" = "8:"\r
-"SccAuxPath" = "8:"\r
-"SccProvider" = "8:"\r
-    "Hierarchy"\r
-    {\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_00BDFF08E6DA434981F5C1F879B3EF6C"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_0299839A2CCC4F908C5D3A8F465F3FFE"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_06B57E1C99D0410EB9C8DC4D66C73FC5"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_0DDD4CA1EEBE4AB69CC694DDF483D146"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_16A59C6F3F9940288A7D26B6CA80608F"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_16CCCC95D1BE41A981EAA4CDAD772F32"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1859B81745C54E228CDCA94F130C8150"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1AF767BD52F94DC08C2CBE11DA41E95A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1ED4FB1CE10D4805981844ABC56602F6"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_22CD325A4F5141D6B5FACD713F5FD4F9"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_232E0EB837A04A5B90312D947F1A7905"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_24E7DBA1F5964574A8251258BCDC935D"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_253C714B01974C9BB1A698DD449F588D"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_260594D75E4B4764BBAFE25C15E4F273"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_262BA608F9ED4BB5870E3F6C6EEA0820"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_285F62B042274099A6FD88C531DAA341"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_340E6094BE6F4BCF8350280DC8B37900"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_35AE0E84A609BB191E4085A2681730D1"\r
-        "OwnerKey" = "8:_E9925AF9A2D343D6BFE5BDAE33481292"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_35AE0E84A609BB191E4085A2681730D1"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_364DCCAFF25145BCBE75FFEEDCC75B3A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_3697A58F04D14955AA428E89771E7BA3"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_380124B8E57C4956A73E042735724DB7"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_3CBB55F3EBEA4645BE6CEC8A0F251B80"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_3CFC5A9B09ED4916A350B88FEF4662CC"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_3CFD2A1A9D824E2491CC2BAC1334BA13"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_3F5E38826D0C441897F43747FFA7491A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_4879AF80C19D4ED9A3758DCC412190FB"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_4A46F690254944ECBF1539E2C2F86A59"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_51381771E03E40DEA842E785C9B7A31B"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_52B5F2EDEDEC48B5A1188F780C67DE9B"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_574EE5A852D3434987B58E3B8118C1C2"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_5914C46E15794A9093C5BF50A983D502"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_5B2FBC1C3AD5490689A61629854C80AF"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_5BBA58EFC5A9495BBEF1752E15F4A077"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_5ED87BAE980C4992A4C74AEAEC4A57CF"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_65560B58BEBF468C9D06493456A17DEC"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_666BC59DB1514D61AE06860A2894BE4C"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_6BD69E32EE9A4D2B9ECC40558A68FCD8"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_6E847FCD9C014B7E81FB859A0D2D2590"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_72A7EBE64092496AA67AB2DD00C0804B"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_747C33B5F41F498ABCAE119B532F6485"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_7A478A9B37C44B22BD4F926913C9A5B7"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_7FC58520B0F44E3E95A207905CABFED4"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_860678A628E34D219950C2E2B1BE6A89"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_8CCA95F5402D439B9B9CAC6F0FC1A443"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_933D37C7FEBF4B8AAF9E6CE01A605039"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_9D69B0FC2413407BA24D88B73EF456AA"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A271CCE042C14DDF8F0F1A1B16584F17"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A513FBE6CC6247C19AF06829E5470D01"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A833908023464B61A160E0323C8E9606"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B15F5898006758C3483850D50CA2C7F0"\r
-        "OwnerKey" = "8:_E9925AF9A2D343D6BFE5BDAE33481292"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B15F5898006758C3483850D50CA2C7F0"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B20638175CCB42398417E0683A12469C"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B38E399C93724A9BB5F429DABBA6301F"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "OwnerKey" = "8:_0299839A2CCC4F908C5D3A8F465F3FFE"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "OwnerKey" = "8:_5B2FBC1C3AD5490689A61629854C80AF"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "OwnerKey" = "8:_E9925AF9A2D343D6BFE5BDAE33481292"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "OwnerKey" = "8:_D3197C67CBAC46DE854CF283CDBC677E"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "OwnerKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "OwnerKey" = "8:_B20638175CCB42398417E0683A12469C"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "OwnerKey" = "8:_364DCCAFF25145BCBE75FFEEDCC75B3A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_BAEADCCB6AD74F36AE08401229354D79"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_C17DC336766E4B1BBC8DD24D686C440A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_C1FCE2FAE4714A719B7B430E2BE93CBB"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_C494B5675E2F4B1E9301627B19CF8A52"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_C6AA56CC25F14D6582803347599840BB"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_CAF8F7B63E0E9F92F4B3B83FA9CC5424"\r
-        "OwnerKey" = "8:_E9925AF9A2D343D6BFE5BDAE33481292"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_CAF8F7B63E0E9F92F4B3B83FA9CC5424"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_CD0CFE42ED2D4416A01253E12A0082A8"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_CDBB327B06484A60AD16B999D88A10F5"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_CE2A836CE5AF4404B8672B100A9FC9ED"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D3197C67CBAC46DE854CF283CDBC677E"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D3B3B266E0FC45DD9B7EEBCC3AC52965"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D4EC471BF98C4F8FA7A927B95CB69013"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_DA4E31E0503E4EAFA1E4BAEE05144618"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E3C6C5A7FDD94965B68960844461D5EA"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E47BCB853AC74A81BC61E878BFCEF5DC"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E9925AF9A2D343D6BFE5BDAE33481292"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_EA287095645D4A7BA58A530186317895"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_EB7A2E97695F4964B4AF0560A258A14A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_F39E4E6E6DCB48E08E9E51E724E77DCF"\r
-        "OwnerKey" = "8:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_F77CB9E0AE78446481BD8BFD680F548E"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_F7FBD6E1C73B45EA813FB1D5E6050650"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_FA604C5C4FDD4D7B8110AFC6B603FBAF"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-    }\r
-    "Configurations"\r
-    {\r
-        "Debug"\r
-        {\r
-        "DisplayName" = "8:Debug"\r
-        "IsDebugOnly" = "11:TRUE"\r
-        "IsReleaseOnly" = "11:FALSE"\r
-        "OutputFilename" = "8:libcups2-windows.msi"\r
-        "PackageFilesAs" = "3:2"\r
-        "PackageFileSize" = "3:-2147483648"\r
-        "CabType" = "3:1"\r
-        "Compression" = "3:3"\r
-        "SignOutput" = "11:FALSE"\r
-        "CertificateFile" = "8:"\r
-        "PrivateKeyFile" = "8:"\r
-        "TimeStampServer" = "8:"\r
-        "InstallerBootstrapper" = "3:2"\r
-            "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"\r
-            {\r
-            "Enabled" = "11:TRUE"\r
-            "PromptEnabled" = "11:TRUE"\r
-            "PrerequisitesLocation" = "2:1"\r
-            "Url" = "8:"\r
-            "ComponentsUrl" = "8:"\r
-                "Items"\r
-                {\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"\r
-                    {\r
-                    "Name" = "8:.NET Framework 3.5 SP1"\r
-                    "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"\r
-                    }\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"\r
-                    {\r
-                    "Name" = "8:Windows Installer 3.1"\r
-                    "ProductCode" = "8:Microsoft.Windows.Installer.3.1"\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "Release"\r
-        {\r
-        "DisplayName" = "8:Release"\r
-        "IsDebugOnly" = "11:FALSE"\r
-        "IsReleaseOnly" = "11:TRUE"\r
-        "OutputFilename" = "8:libcups2-windows.msi"\r
-        "PackageFilesAs" = "3:2"\r
-        "PackageFileSize" = "3:-2147483648"\r
-        "CabType" = "3:1"\r
-        "Compression" = "3:3"\r
-        "SignOutput" = "11:FALSE"\r
-        "CertificateFile" = "8:"\r
-        "PrivateKeyFile" = "8:"\r
-        "TimeStampServer" = "8:"\r
-        "InstallerBootstrapper" = "3:2"\r
-            "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"\r
-            {\r
-            "Enabled" = "11:TRUE"\r
-            "PromptEnabled" = "11:TRUE"\r
-            "PrerequisitesLocation" = "2:1"\r
-            "Url" = "8:"\r
-            "ComponentsUrl" = "8:"\r
-                "Items"\r
-                {\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"\r
-                    {\r
-                    "Name" = "8:.NET Framework 3.5 SP1"\r
-                    "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"\r
-                    }\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"\r
-                    {\r
-                    "Name" = "8:Windows Installer 3.1"\r
-                    "ProductCode" = "8:Microsoft.Windows.Installer.3.1"\r
-                    }\r
-                }\r
-            }\r
-        }\r
-    }\r
-    "Deployable"\r
-    {\r
-        "CustomAction"\r
-        {\r
-        }\r
-        "DefaultFeature"\r
-        {\r
-        "Name" = "8:DefaultFeature"\r
-        "Title" = "8:"\r
-        "Description" = "8:"\r
-        }\r
-        "ExternalPersistence"\r
-        {\r
-            "LaunchCondition"\r
-            {\r
-            }\r
-        }\r
-        "File"\r
-        {\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_00BDFF08E6DA434981F5C1F879B3EF6C"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-a4.ps"\r
-            "TargetName" = "8:document-a4.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_06B57E1C99D0410EB9C8DC4D66C73FC5"\r
-            {\r
-            "SourcePath" = "8:..\\test\\create-printer-subscription.test"\r
-            "TargetName" = "8:create-printer-subscription.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_0DDD4CA1EEBE4AB69CC694DDF483D146"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-completed-jobs.test"\r
-            "TargetName" = "8:get-completed-jobs.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_16A59C6F3F9940288A7D26B6CA80608F"\r
-            {\r
-            "SourcePath" = "8:..\\test\\onepage-a4.ps"\r
-            "TargetName" = "8:onepage-a4.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1859B81745C54E228CDCA94F130C8150"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-notifications.test"\r
-            "TargetName" = "8:get-notifications.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1AF767BD52F94DC08C2CBE11DA41E95A"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\images\\raster.png"\r
-            "TargetName" = "8:raster.png"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_A4CDED7951A44EF794E1E1EE9F73F240"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1ED4FB1CE10D4805981844ABC56602F6"\r
-            {\r
-            "SourcePath" = "8:..\\test\\testfile.jpg"\r
-            "TargetName" = "8:testfile.jpg"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_22CD325A4F5141D6B5FACD713F5FD4F9"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\adminutil.h"\r
-            "TargetName" = "8:adminutil.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_232E0EB837A04A5B90312D947F1A7905"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ipptool.html"\r
-            "TargetName" = "8:man-ipptool.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_24E7DBA1F5964574A8251258BCDC935D"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\http.h"\r
-            "TargetName" = "8:http.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_253C714B01974C9BB1A698DD449F588D"\r
-            {\r
-            "SourcePath" = "8:..\\test\\validate-job.test"\r
-            "TargetName" = "8:validate-job.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_260594D75E4B4764BBAFE25C15E4F273"\r
-            {\r
-            "SourcePath" = "8:..\\test\\print-job.test"\r
-            "TargetName" = "8:print-job.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_262BA608F9ED4BB5870E3F6C6EEA0820"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-1.1.test"\r
-            "TargetName" = "8:ipp-1.1.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_285F62B042274099A6FD88C531DAA341"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\ipp.h"\r
-            "TargetName" = "8:ipp.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_340E6094BE6F4BCF8350280DC8B37900"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\api-httpipp.html"\r
-            "TargetName" = "8:api-httpipp.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_35AE0E84A609BB191E4085A2681730D1"\r
-            {\r
-            "SourcePath" = "8:CRYPT32.dll"\r
-            "TargetName" = "8:CRYPT32.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_C8D931ADC425446B916E9711B929659F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3697A58F04D14955AA428E89771E7BA3"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-2.0.test"\r
-            "TargetName" = "8:ipp-2.0.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_380124B8E57C4956A73E042735724DB7"\r
-            {\r
-            "SourcePath" = "8:Win32\\Release\\libcups2.lib"\r
-            "TargetName" = "8:libcups2.lib"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_BC1E27FED70845D1BA482FB1D96972F5"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3CFC5A9B09ED4916A350B88FEF4662CC"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\transcode.h"\r
-            "TargetName" = "8:transcode.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_3CFD2A1A9D824E2491CC2BAC1334BA13"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-subscriptions.test"\r
-            "TargetName" = "8:get-subscriptions.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4879AF80C19D4ED9A3758DCC412190FB"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\raster.h"\r
-            "TargetName" = "8:raster.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_4A46F690254944ECBF1539E2C2F86A59"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ipptoolfile.html"\r
-            "TargetName" = "8:man-ipptoolfile.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_51381771E03E40DEA842E785C9B7A31B"\r
-            {\r
-            "SourcePath" = "8:..\\test\\print-job-gzip.test"\r
-            "TargetName" = "8:print-job-gzip.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_574EE5A852D3434987B58E3B8118C1C2"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\array.h"\r
-            "TargetName" = "8:array.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5914C46E15794A9093C5BF50A983D502"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ippfind.html"\r
-            "TargetName" = "8:man-ippfind.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5BBA58EFC5A9495BBEF1752E15F4A077"\r
-            {\r
-            "SourcePath" = "8:README.txt"\r
-            "TargetName" = "8:README.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_5ED87BAE980C4992A4C74AEAEC4A57CF"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\ppd.h"\r
-            "TargetName" = "8:ppd.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_65560B58BEBF468C9D06493456A17DEC"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\language.h"\r
-            "TargetName" = "8:language.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_666BC59DB1514D61AE06860A2894BE4C"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-cupstestppd.html"\r
-            "TargetName" = "8:man-cupstestppd.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6BD69E32EE9A4D2B9ECC40558A68FCD8"\r
-            {\r
-            "SourcePath" = "8:Win32\\Release\\libcupsimage2.lib"\r
-            "TargetName" = "8:libcupsimage2.lib"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_BC1E27FED70845D1BA482FB1D96972F5"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_6E847FCD9C014B7E81FB859A0D2D2590"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-2.2.test"\r
-            "TargetName" = "8:ipp-2.2.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_72A7EBE64092496AA67AB2DD00C0804B"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\versioning.h"\r
-            "TargetName" = "8:versioning.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_747C33B5F41F498ABCAE119B532F6485"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\dir.h"\r
-            "TargetName" = "8:dir.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7A478A9B37C44B22BD4F926913C9A5B7"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-jobs.test"\r
-            "TargetName" = "8:get-jobs.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_7FC58520B0F44E3E95A207905CABFED4"\r
-            {\r
-            "SourcePath" = "8:..\\test\\gray.jpg"\r
-            "TargetName" = "8:gray.jpg"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_860678A628E34D219950C2E2B1BE6A89"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\api-raster.html"\r
-            "TargetName" = "8:api-raster.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_8CCA95F5402D439B9B9CAC6F0FC1A443"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\api-array.html"\r
-            "TargetName" = "8:api-array.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_933D37C7FEBF4B8AAF9E6CE01A605039"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-everywhere.test"\r
-            "TargetName" = "8:ipp-everywhere.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9D69B0FC2413407BA24D88B73EF456AA"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\images\\sample-image.png"\r
-            "TargetName" = "8:sample-image.png"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_A4CDED7951A44EF794E1E1EE9F73F240"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A271CCE042C14DDF8F0F1A1B16584F17"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\api-filedir.html"\r
-            "TargetName" = "8:api-filedir.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A513FBE6CC6247C19AF06829E5470D01"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-a4.pdf"\r
-            "TargetName" = "8:document-a4.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A833908023464B61A160E0323C8E9606"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-letter.pdf"\r
-            "TargetName" = "8:document-letter.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B15F5898006758C3483850D50CA2C7F0"\r
-            {\r
-            "SourcePath" = "8:Secur32.dll"\r
-            "TargetName" = "8:Secur32.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_C8D931ADC425446B916E9711B929659F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B38E399C93724A9BB5F429DABBA6301F"\r
-            {\r
-            "SourcePath" = "8:..\\test\\print-job-deflate.test"\r
-            "TargetName" = "8:print-job-deflate.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C1FCE2FAE4714A719B7B430E2BE93CBB"\r
-            {\r
-            "SourcePath" = "8:..\\test\\testfile.ps"\r
-            "TargetName" = "8:testfile.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C494B5675E2F4B1E9301627B19CF8A52"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-letter.ps"\r
-            "TargetName" = "8:document-letter.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C6AA56CC25F14D6582803347599840BB"\r
-            {\r
-            "SourcePath" = "8:..\\test\\color.jpg"\r
-            "TargetName" = "8:color.jpg"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CAF8F7B63E0E9F92F4B3B83FA9CC5424"\r
-            {\r
-            "SourcePath" = "8:zlibwapi.dll"\r
-            "TargetName" = "8:zlibwapi.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CD0CFE42ED2D4416A01253E12A0082A8"\r
-            {\r
-            "SourcePath" = "8:..\\test\\testfile.pdf"\r
-            "TargetName" = "8:testfile.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CDBB327B06484A60AD16B999D88A10F5"\r
-            {\r
-            "SourcePath" = "8:..\\test\\ipp-2.1.test"\r
-            "TargetName" = "8:ipp-2.1.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_CE2A836CE5AF4404B8672B100A9FC9ED"\r
-            {\r
-            "SourcePath" = "8:..\\IPPTOOL.txt"\r
-            "TargetName" = "8:IPPTOOL.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D3B3B266E0FC45DD9B7EEBCC3AC52965"\r
-            {\r
-            "SourcePath" = "8:..\\test\\get-printer-attributes.test"\r
-            "TargetName" = "8:get-printer-attributes.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D4EC471BF98C4F8FA7A927B95CB69013"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\api-overview.html"\r
-            "TargetName" = "8:api-overview.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_DA4E31E0503E4EAFA1E4BAEE05144618"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\api-cups.html"\r
-            "TargetName" = "8:api-cups.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E3C6C5A7FDD94965B68960844461D5EA"\r
-            {\r
-            "SourcePath" = "8:..\\LICENSE.txt"\r
-            "TargetName" = "8:LICENSE.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E47BCB853AC74A81BC61E878BFCEF5DC"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\cups.h"\r
-            "TargetName" = "8:cups.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EA287095645D4A7BA58A530186317895"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\images\\raster-organization.png"\r
-            "TargetName" = "8:raster-organization.png"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_A4CDED7951A44EF794E1E1EE9F73F240"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_EB7A2E97695F4964B4AF0560A258A14A"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\file.h"\r
-            "TargetName" = "8:file.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F77CB9E0AE78446481BD8BFD680F548E"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\api-ppd.html"\r
-            "TargetName" = "8:api-ppd.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_24DE31CE70694FD2977B5FB38F24D77F"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F7FBD6E1C73B45EA813FB1D5E6050650"\r
-            {\r
-            "SourcePath" = "8:..\\cups\\pwg.h"\r
-            "TargetName" = "8:pwg.h"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_FA604C5C4FDD4D7B8110AFC6B603FBAF"\r
-            {\r
-            "SourcePath" = "8:..\\test\\onepage-letter.ps"\r
-            "TargetName" = "8:onepage-letter.ps"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_9DFBB4777E594B0F8884792467931241"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-        }\r
-        "FileType"\r
-        {\r
-        }\r
-        "Folder"\r
-        {\r
-            "{1525181F-901A-416C-8A58-119130FE478E}:_BEC0EAE20C954C78B294B83E6696156E"\r
-            {\r
-            "Name" = "8:#1919"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:ProgramMenuFolder"\r
-                "Folders"\r
-                {\r
-                }\r
-            }\r
-            "{1525181F-901A-416C-8A58-119130FE478E}:_C8D931ADC425446B916E9711B929659F"\r
-            {\r
-            "Name" = "8:#1914"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:SystemFolder"\r
-                "Folders"\r
-                {\r
-                }\r
-            }\r
-            "{1525181F-901A-416C-8A58-119130FE478E}:_D02CDADE99F344CF92CA1A8D0278861F"\r
-            {\r
-            "Name" = "8:#1916"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:DesktopFolder"\r
-                "Folders"\r
-                {\r
-                }\r
-            }\r
-            "{3C67513D-01DD-4637-8A68-80971EB9504F}:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            {\r
-            "DefaultLocation" = "8:[ProgramFilesFolder]\\ipptool"\r
-            "Name" = "8:#1925"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:TARGETDIR"\r
-                "Folders"\r
-                {\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_121A70CA434045EDB010E7480AFCEF18"\r
-                    {\r
-                    "Name" = "8:include"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_23D8BBBA9DEE4C8E88C9D1624DEAFB81"\r
-                        "Folders"\r
-                        {\r
-                            "{9EF0B969-E518-4E46-987F-47570745A589}:_8EF6B1AA25034DB9BCC44F5A3CCFF9F0"\r
-                            {\r
-                            "Name" = "8:cups"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "Condition" = "8:"\r
-                            "Transitive" = "11:FALSE"\r
-                            "Property" = "8:_61254DF68D8F4039997C263F7B45ABB8"\r
-                                "Folders"\r
-                                {\r
-                                }\r
-                            }\r
-                        }\r
-                    }\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_24DE31CE70694FD2977B5FB38F24D77F"\r
-                    {\r
-                    "Name" = "8:doc"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_4C3C248E2B3E4CB0AE8A9DF8D97AB433"\r
-                        "Folders"\r
-                        {\r
-                            "{9EF0B969-E518-4E46-987F-47570745A589}:_A4CDED7951A44EF794E1E1EE9F73F240"\r
-                            {\r
-                            "Name" = "8:images"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "Condition" = "8:"\r
-                            "Transitive" = "11:FALSE"\r
-                            "Property" = "8:_7ECE25C7A13C410AA18E0529C8998EB7"\r
-                                "Folders"\r
-                                {\r
-                                }\r
-                            }\r
-                        }\r
-                    }\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_2927DAE23F604CF9B8B4D1EC01A6F158"\r
-                    {\r
-                    "Name" = "8:lib"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_927C9760A02446EBB2AEDE6BCCFDE29F"\r
-                        "Folders"\r
-                        {\r
-                            "{9EF0B969-E518-4E46-987F-47570745A589}:_ABA133175ABB48058F633A1599B418BC"\r
-                            {\r
-                            "Name" = "8:ReleaseX64"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "Condition" = "8:"\r
-                            "Transitive" = "11:FALSE"\r
-                            "Property" = "8:_B4A5B4451AA146D4AA06FDF59FF36FCD"\r
-                                "Folders"\r
-                                {\r
-                                }\r
-                            }\r
-                            "{9EF0B969-E518-4E46-987F-47570745A589}:_BC1E27FED70845D1BA482FB1D96972F5"\r
-                            {\r
-                            "Name" = "8:ReleaseWin32"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "Condition" = "8:"\r
-                            "Transitive" = "11:FALSE"\r
-                            "Property" = "8:_83BECF9B63434282B61BAA7043D96AB1"\r
-                                "Folders"\r
-                                {\r
-                                }\r
-                            }\r
-                            "{9EF0B969-E518-4E46-987F-47570745A589}:_E6A941208712461FAD0B4FB291EDDD56"\r
-                            {\r
-                            "Name" = "8:DebugWin32"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "Condition" = "8:"\r
-                            "Transitive" = "11:FALSE"\r
-                            "Property" = "8:_808CB654DBF7446FB4C3706759D6326C"\r
-                                "Folders"\r
-                                {\r
-                                }\r
-                            }\r
-                            "{9EF0B969-E518-4E46-987F-47570745A589}:_EB4E176E122E4686A21902DD986EC361"\r
-                            {\r
-                            "Name" = "8:DebugX64"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "Condition" = "8:"\r
-                            "Transitive" = "11:FALSE"\r
-                            "Property" = "8:_704A12AF60B74B92A12505146FD2CA2E"\r
-                                "Folders"\r
-                                {\r
-                                }\r
-                            }\r
-                        }\r
-                    }\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_9DFBB4777E594B0F8884792467931241"\r
-                    {\r
-                    "Name" = "8:ipptool"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_77AF2E5323304714AF58A3F662F6051B"\r
-                        "Folders"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "LaunchCondition"\r
-        {\r
-        }\r
-        "Locator"\r
-        {\r
-        }\r
-        "MsiBootstrapper"\r
-        {\r
-        "LangId" = "3:1033"\r
-        "RequiresElevation" = "11:FALSE"\r
-        }\r
-        "Product"\r
-        {\r
-        "Name" = "8:Microsoft Visual Studio"\r
-        "ProductName" = "8:CUPS SDK for Windows"\r
-        "ProductCode" = "8:{FE657BEF-0C7A-4175-9EAE-D482789E7AD5}"\r
-        "PackageCode" = "8:{2AE9BB2F-C4FC-4BB7-9A4D-77F83E55EA55}"\r
-        "UpgradeCode" = "8:{BAB6EBBB-515D-4155-9FEF-D98DA76814CA}"\r
-        "RestartWWWService" = "11:FALSE"\r
-        "RemovePreviousVersions" = "11:TRUE"\r
-        "DetectNewerInstalledVersion" = "11:TRUE"\r
-        "InstallAllUsers" = "11:TRUE"\r
-        "ProductVersion" = "8:13.04.1800"\r
-        "Manufacturer" = "8:Apple Inc."\r
-        "ARPHELPTELEPHONE" = "8:"\r
-        "ARPHELPLINK" = "8:http://www.cups.org/str.php"\r
-        "Title" = "8:CUPS"\r
-        "Subject" = "8:"\r
-        "ARPCONTACT" = "8:Apple Inc."\r
-        "Keywords" = "8:IPP, Internet Printing Protocol"\r
-        "ARPCOMMENTS" = "8:CUPS SDK for Windows"\r
-        "ARPURLINFOABOUT" = "8:http://www.cups.org/"\r
-        "ARPPRODUCTICON" = "8:"\r
-        "ARPIconIndex" = "3:0"\r
-        "SearchPath" = "8:"\r
-        "UseSystemSearchPath" = "11:TRUE"\r
-        "TargetPlatform" = "3:0"\r
-        "PreBuildEvent" = "8:"\r
-        "PostBuildEvent" = "8:"\r
-        "RunPostBuildEvent" = "3:0"\r
-        }\r
-        "Registry"\r
-        {\r
-            "HKLM"\r
-            {\r
-                "Keys"\r
-                {\r
-                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_BC4E66686BCA4F9A8B24B6CF2728DACD"\r
-                    {\r
-                    "Name" = "8:Software"\r
-                    "Condition" = "8:"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "DeleteAtUninstall" = "11:FALSE"\r
-                    "Transitive" = "11:FALSE"\r
-                        "Keys"\r
-                        {\r
-                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F9AB9B310C7545D993D690F529048AA2"\r
-                            {\r
-                            "Name" = "8:cups.org"\r
-                            "Condition" = "8:"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "DeleteAtUninstall" = "11:FALSE"\r
-                            "Transitive" = "11:FALSE"\r
-                                "Keys"\r
-                                {\r
-                                }\r
-                                "Values"\r
-                                {\r
-                                    "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_4E5BAC705A1D44E78C90C6D2A4A7BE20"\r
-                                    {\r
-                                    "Name" = "8:installdir"\r
-                                    "Condition" = "8:"\r
-                                    "Transitive" = "11:FALSE"\r
-                                    "ValueTypes" = "3:2"\r
-                                    "Value" = "8:[TARGETDIR]"\r
-                                    }\r
-                                }\r
-                            }\r
-                        }\r
-                        "Values"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "HKCU"\r
-            {\r
-                "Keys"\r
-                {\r
-                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_A4C9879F42874B6B92960A55F2D98922"\r
-                    {\r
-                    "Name" = "8:Software"\r
-                    "Condition" = "8:"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "DeleteAtUninstall" = "11:FALSE"\r
-                    "Transitive" = "11:FALSE"\r
-                        "Keys"\r
-                        {\r
-                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_1ACB03C307FB4B85BB27C9913FB58B09"\r
-                            {\r
-                            "Name" = "8:[Manufacturer]"\r
-                            "Condition" = "8:"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "DeleteAtUninstall" = "11:FALSE"\r
-                            "Transitive" = "11:FALSE"\r
-                                "Keys"\r
-                                {\r
-                                }\r
-                                "Values"\r
-                                {\r
-                                }\r
-                            }\r
-                        }\r
-                        "Values"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "HKCR"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-            "HKU"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-            "HKPU"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-        }\r
-        "Sequences"\r
-        {\r
-        }\r
-        "Shortcut"\r
-        {\r
-        }\r
-        "UserInterface"\r
-        {\r
-            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_045DF90B1FF941A9BA7A742CFC0A6C00"\r
-            {\r
-            "UseDynamicProperties" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_345BD86390E841A98B74ED3E07945F8C"\r
-            {\r
-            "Name" = "8:#1900"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:1"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_067C143A8731427180B1568AF8C07375"\r
-                    {\r
-                    "Sequence" = "3:200"\r
-                    "DisplayName" = "8:Installation Folder"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A2F2CC6EB9D7453599E7598D4D0629A5"\r
-                    {\r
-                    "Sequence" = "3:300"\r
-                    "DisplayName" = "8:Confirm Installation"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C2B41369B7334F419318792EBA031412"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Welcome"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "CopyrightWarning"\r
-                            {\r
-                            "Name" = "8:CopyrightWarning"\r
-                            "DisplayName" = "8:#1002"\r
-                            "Description" = "8:#1102"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:2"\r
-                            "Value" = "8:This computer program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2."\r
-                            "DefaultValue" = "8:#1202"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "Welcome"\r
-                            {\r
-                            "Name" = "8:Welcome"\r
-                            "DisplayName" = "8:#1003"\r
-                            "Description" = "8:#1103"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1203"\r
-                            "DefaultValue" = "8:#1203"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6B654A06090344BA9AA443E0D0296737"\r
-            {\r
-            "Name" = "8:#1902"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:3"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FB4E7BBC3DA242309FFB58F9A6194A93"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Finished"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "UpdateText"\r
-                            {\r
-                            "Name" = "8:UpdateText"\r
-                            "DisplayName" = "8:#1058"\r
-                            "Description" = "8:#1158"\r
-                            "Type" = "3:15"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1258"\r
-                            "DefaultValue" = "8:#1258"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_712819C7C4F042ABB708949BD4426628"\r
-            {\r
-            "Name" = "8:#1900"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:1"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2F49D4FACB954AF2B786D2AD9206D053"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Welcome"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "CopyrightWarning"\r
-                            {\r
-                            "Name" = "8:CopyrightWarning"\r
-                            "DisplayName" = "8:#1002"\r
-                            "Description" = "8:#1102"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:2"\r
-                            "Value" = "8:This computer program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2."\r
-                            "DefaultValue" = "8:#1202"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "Welcome"\r
-                            {\r
-                            "Name" = "8:Welcome"\r
-                            "DisplayName" = "8:#1003"\r
-                            "Description" = "8:#1103"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1203"\r
-                            "DefaultValue" = "8:#1203"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_770E25BC453A464EA8CD51381FDDDD9F"\r
-                    {\r
-                    "Sequence" = "3:300"\r
-                    "DisplayName" = "8:Confirm Installation"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9534A64B629F4F868D6D7A384C76DCB2"\r
-                    {\r
-                    "Sequence" = "3:200"\r
-                    "DisplayName" = "8:Installation Folder"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "InstallAllUsersVisible"\r
-                            {\r
-                            "Name" = "8:InstallAllUsersVisible"\r
-                            "DisplayName" = "8:#1059"\r
-                            "Description" = "8:#1159"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_770CCEFF81BD46A182A6E816A41A0E81"\r
-            {\r
-            "Name" = "8:#1901"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:2"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_75E0C1FD245D493DA0D7E3E0BC0C365F"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Progress"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "ShowProgress"\r
-                            {\r
-                            "Name" = "8:ShowProgress"\r
-                            "DisplayName" = "8:#1009"\r
-                            "Description" = "8:#1109"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_933B15E9A383418F8ADF3B13F68458F3"\r
-            {\r
-            "UseDynamicProperties" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E310DA8CED734E00950A3C5D630CE987"\r
-            {\r
-            "Name" = "8:#1902"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:3"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CB172E69F9C74901BE1040336CFD4F72"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Finished"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_F44F9BE9B54940848289669635E4A5A2"\r
-            {\r
-            "Name" = "8:#1901"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:2"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_14751F327A634B989283C8F28CFB6DFC"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Progress"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "ShowProgress"\r
-                            {\r
-                            "Name" = "8:ShowProgress"\r
-                            "DisplayName" = "8:#1009"\r
-                            "Description" = "8:#1109"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "MergeModule"\r
-        {\r
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_B7023A0B2ADF4B4D822FAEE062F9BD87"\r
-            {\r
-            "UseDynamicProperties" = "11:TRUE"\r
-            "IsDependency" = "11:TRUE"\r
-            "SourcePath" = "8:policy_9_0_Microsoft_VC90_DebugCRT_x86.msm"\r
-                "Properties"\r
-                {\r
-                }\r
-            "LanguageId" = "3:0"\r
-            "Exclude" = "11:FALSE"\r
-            "Folder" = "8:"\r
-            "Feature" = "8:"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_F39E4E6E6DCB48E08E9E51E724E77DCF"\r
-            {\r
-            "UseDynamicProperties" = "11:TRUE"\r
-            "IsDependency" = "11:TRUE"\r
-            "SourcePath" = "8:microsoft_vc90_debugcrt_x86.msm"\r
-                "Properties"\r
-                {\r
-                }\r
-            "LanguageId" = "3:0"\r
-            "Exclude" = "11:FALSE"\r
-            "Folder" = "8:"\r
-            "Feature" = "8:"\r
-            "IsolateTo" = "8:"\r
-            }\r
-        }\r
-        "ProjectOutput"\r
-        {\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_0299839A2CCC4F908C5D3A8F465F3FFE"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\libcupsimage2.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E1234}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_16CCCC95D1BE41A981EAA4CDAD772F32"\r
-            {\r
-            "SourcePath" = "8:x64\\Debug\\regex.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB4E176E122E4686A21902DD986EC361"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:Debug|x64"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_364DCCAFF25145BCBE75FFEEDCC75B3A"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\cupstestppd.exe"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{6BE0CDD3-4ED7-409C-A80F-19DF73664B1F}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3CBB55F3EBEA4645BE6CEC8A0F251B80"\r
-            {\r
-            "SourcePath" = "8:x64\\Release\\libcups2.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_ABA133175ABB48058F633A1599B418BC"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:Release|x64"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_3F5E38826D0C441897F43747FFA7491A"\r
-            {\r
-            "SourcePath" = "8:x64\\Debug\\libcups2.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB4E176E122E4686A21902DD986EC361"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:Debug|x64"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_52B5F2EDEDEC48B5A1188F780C67DE9B"\r
-            {\r
-            "SourcePath" = "8:Win32\\Release\\regex.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_BC1E27FED70845D1BA482FB1D96972F5"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:Release|Win32"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_5B2FBC1C3AD5490689A61629854C80AF"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\ippfind.exe"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{B484DA0C-62C8-4C32-83B6-CCEB58968B85}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_B20638175CCB42398417E0683A12469C"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\ipptool.exe"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_BAEADCCB6AD74F36AE08401229354D79"\r
-            {\r
-            "SourcePath" = "8:Win32\\Release\\libcups2.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_BC1E27FED70845D1BA482FB1D96972F5"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:Release|Win32"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_C17DC336766E4B1BBC8DD24D686C440A"\r
-            {\r
-            "SourcePath" = "8:x64\\Release\\regex.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_ABA133175ABB48058F633A1599B418BC"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:Release|x64"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D02EB13951314EFD9C539150EF8E53B8"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\regex.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D3197C67CBAC46DE854CF283CDBC677E"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\regex.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_E6A941208712461FAD0B4FB291EDDD56"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:Debug|Win32"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E9925AF9A2D343D6BFE5BDAE33481292"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\libcups2.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_E6A941208712461FAD0B4FB291EDDD56"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:Debug|Win32"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\libcups2.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-        }\r
-    }\r
-}\r
diff --git a/vcnet/sw-ippeveselfcert10.vdproj b/vcnet/sw-ippeveselfcert10.vdproj
deleted file mode 100644 (file)
index 2895a46..0000000
+++ /dev/null
@@ -1,1581 +0,0 @@
-"DeployProject"\r
-{\r
-"VSVersion" = "3:800"\r
-"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}"\r
-"IsWebType" = "8:FALSE"\r
-"ProjectName" = "8:sw-ippeveselfcert10"\r
-"LanguageId" = "3:1033"\r
-"CodePage" = "3:1252"\r
-"UILanguageId" = "3:1033"\r
-"SccProjectName" = "8:"\r
-"SccLocalPath" = "8:"\r
-"SccAuxPath" = "8:"\r
-"SccProvider" = "8:"\r
-    "Hierarchy"\r
-    {\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_156E3B06B7D14775B28242360FB7D1A0"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1A1324305D78463BBFC62269C56DCF0B"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1BCBABF5693841AE92515645BB7765F4"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_1DBDCFABB8DF28E5F75E41EDAE4BF6BE"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_27AB74FFFBC7436B9EBC6AE23968CFCC"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_299D5816FF7142F3B2791685551AD1DC"\r
-        "OwnerKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_43D276E6E3054544A6A9828BE66519CD"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_466C1CF41795452A8B76425F8D05D8B8"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_592FC984DBFD494D9FB7DFFEA35AD7A5"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_842C04D73EBC4F5DBC2FD58D5B98D5D1"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_965005559A264140806149D54E2243BB"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_9967519E7058965D4C7DEF47EB39CC50"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_9CB71023ADF84278A4A5EBC398F6C9F3"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_9FBF78D7B89EEA843380D5F10E1954D7"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"\r
-        "OwnerKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"\r
-        "OwnerKey" = "8:_58DC0E72F0944BEFB927AED718CD1660"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"\r
-        "OwnerKey" = "8:_466C1CF41795452A8B76425F8D05D8B8"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"\r
-        "OwnerKey" = "8:_E97571D3FBE048DABDC59B37762D800F"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A1CB27EFF4094C39B58D0BE5A272DF1A"\r
-        "OwnerKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_A9EA3BF89F284AB4853F0682CE277275"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_B7D835B019744E61A7CC37B57B38694E"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_BD5B70C103EF41D9A30CF249D2B93CEB"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_C430646D6E7C4CBDA84F951AE95EB76F"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D02EB13951314EFD9C539150EF8E53B8"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D219587BACAC4D5FB4C8010900A781AD"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_D5CD9D9AB1644688A1D54B1589BDF724"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E3C6C5A7FDD94965B68960844461D5EA"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E5E464C7DD97439B929E1EA1844F1FF0"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_E97571D3FBE048DABDC59B37762D800F"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-        "Entry"\r
-        {\r
-        "MsmKey" = "8:_F22F5380A6E14A43A15A452C7C6F6C07"\r
-        "OwnerKey" = "8:_UNDEFINED"\r
-        "MsmSig" = "8:_UNDEFINED"\r
-        }\r
-    }\r
-    "Configurations"\r
-    {\r
-        "Debug"\r
-        {\r
-        "DisplayName" = "8:Debug"\r
-        "IsDebugOnly" = "11:TRUE"\r
-        "IsReleaseOnly" = "11:FALSE"\r
-        "OutputFilename" = "8:sw-ippeveselfcert10-windows.msi"\r
-        "PackageFilesAs" = "3:2"\r
-        "PackageFileSize" = "3:-2147483648"\r
-        "CabType" = "3:1"\r
-        "Compression" = "3:3"\r
-        "SignOutput" = "11:FALSE"\r
-        "CertificateFile" = "8:"\r
-        "PrivateKeyFile" = "8:"\r
-        "TimeStampServer" = "8:"\r
-        "InstallerBootstrapper" = "3:2"\r
-            "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"\r
-            {\r
-            "Enabled" = "11:TRUE"\r
-            "PromptEnabled" = "11:TRUE"\r
-            "PrerequisitesLocation" = "2:1"\r
-            "Url" = "8:"\r
-            "ComponentsUrl" = "8:"\r
-                "Items"\r
-                {\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"\r
-                    {\r
-                    "Name" = "8:.NET Framework 3.5 SP1"\r
-                    "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"\r
-                    }\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"\r
-                    {\r
-                    "Name" = "8:Windows Installer 3.1"\r
-                    "ProductCode" = "8:Microsoft.Windows.Installer.3.1"\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "Release"\r
-        {\r
-        "DisplayName" = "8:Release"\r
-        "IsDebugOnly" = "11:FALSE"\r
-        "IsReleaseOnly" = "11:TRUE"\r
-        "OutputFilename" = "8:ipptool-windows.msi"\r
-        "PackageFilesAs" = "3:2"\r
-        "PackageFileSize" = "3:-2147483648"\r
-        "CabType" = "3:1"\r
-        "Compression" = "3:3"\r
-        "SignOutput" = "11:FALSE"\r
-        "CertificateFile" = "8:"\r
-        "PrivateKeyFile" = "8:"\r
-        "TimeStampServer" = "8:"\r
-        "InstallerBootstrapper" = "3:2"\r
-            "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"\r
-            {\r
-            "Enabled" = "11:TRUE"\r
-            "PromptEnabled" = "11:TRUE"\r
-            "PrerequisitesLocation" = "2:1"\r
-            "Url" = "8:"\r
-            "ComponentsUrl" = "8:"\r
-                "Items"\r
-                {\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Net.Framework.3.5.SP1"\r
-                    {\r
-                    "Name" = "8:.NET Framework 3.5 SP1"\r
-                    "ProductCode" = "8:Microsoft.Net.Framework.3.5.SP1"\r
-                    }\r
-                    "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"\r
-                    {\r
-                    "Name" = "8:Windows Installer 3.1"\r
-                    "ProductCode" = "8:Microsoft.Windows.Installer.3.1"\r
-                    }\r
-                }\r
-            }\r
-        }\r
-    }\r
-    "Deployable"\r
-    {\r
-        "CustomAction"\r
-        {\r
-        }\r
-        "DefaultFeature"\r
-        {\r
-        "Name" = "8:DefaultFeature"\r
-        "Title" = "8:"\r
-        "Description" = "8:"\r
-        }\r
-        "ExternalPersistence"\r
-        {\r
-            "LaunchCondition"\r
-            {\r
-            }\r
-        }\r
-        "File"\r
-        {\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_156E3B06B7D14775B28242360FB7D1A0"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\document-tests.bat"\r
-            "TargetName" = "8:document-tests.bat"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1A1324305D78463BBFC62269C56DCF0B"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ipptoolfile.html"\r
-            "TargetName" = "8:man-ipptoolfile.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_26743E387598422398CF503F7478F9E1"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1BCBABF5693841AE92515645BB7765F4"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\man-ippserver.html"\r
-            "TargetName" = "8:man-ippserver.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_26743E387598422398CF503F7478F9E1"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1DBDCFABB8DF28E5F75E41EDAE4BF6BE"\r
-            {\r
-            "SourcePath" = "8:zlibwapi.dll"\r
-            "TargetName" = "8:zlibwapi.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_27AB74FFFBC7436B9EBC6AE23968CFCC"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\README.txt"\r
-            "TargetName" = "8:README.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_43D276E6E3054544A6A9828BE66519CD"\r
-            {\r
-            "SourcePath" = "8:..\\test\\printer.png"\r
-            "TargetName" = "8:printer.png"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_592FC984DBFD494D9FB7DFFEA35AD7A5"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ippfind.html"\r
-            "TargetName" = "8:man-ippfind.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_26743E387598422398CF503F7478F9E1"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_842C04D73EBC4F5DBC2FD58D5B98D5D1"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-a4.pdf"\r
-            "TargetName" = "8:document-a4.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_965005559A264140806149D54E2243BB"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\bonjour-access-tests.test"\r
-            "TargetName" = "8:bonjour-access-tests.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9967519E7058965D4C7DEF47EB39CC50"\r
-            {\r
-            "SourcePath" = "8:CRYPT32.dll"\r
-            "TargetName" = "8:CRYPT32.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9CB71023ADF84278A4A5EBC398F6C9F3"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\bonjour-tests.bat"\r
-            "TargetName" = "8:bonjour-tests.bat"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_9FBF78D7B89EEA843380D5F10E1954D7"\r
-            {\r
-            "SourcePath" = "8:Secur32.dll"\r
-            "TargetName" = "8:Secur32.dll"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:TRUE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_A9EA3BF89F284AB4853F0682CE277275"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\bonjour-value-tests.test"\r
-            "TargetName" = "8:bonjour-value-tests.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_B7D835B019744E61A7CC37B57B38694E"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\document-tests.test"\r
-            "TargetName" = "8:document-tests.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_BD5B70C103EF41D9A30CF249D2B93CEB"\r
-            {\r
-            "SourcePath" = "8:setdebug.bat"\r
-            "TargetName" = "8:setdebug.bat"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_C430646D6E7C4CBDA84F951AE95EB76F"\r
-            {\r
-            "SourcePath" = "8:..\\test\\color.jpg"\r
-            "TargetName" = "8:color.jpg"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D219587BACAC4D5FB4C8010900A781AD"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\ipp-tests.test"\r
-            "TargetName" = "8:ipp-tests.test"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_D5CD9D9AB1644688A1D54B1589BDF724"\r
-            {\r
-            "SourcePath" = "8:..\\doc\\help\\man-ipptool.html"\r
-            "TargetName" = "8:man-ipptool.html"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_26743E387598422398CF503F7478F9E1"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E3C6C5A7FDD94965B68960844461D5EA"\r
-            {\r
-            "SourcePath" = "8:..\\LICENSE.txt"\r
-            "TargetName" = "8:LICENSE.txt"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_E5E464C7DD97439B929E1EA1844F1FF0"\r
-            {\r
-            "SourcePath" = "8:..\\everywhere\\ipp-tests.bat"\r
-            "TargetName" = "8:ipp-tests.bat"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_F22F5380A6E14A43A15A452C7C6F6C07"\r
-            {\r
-            "SourcePath" = "8:..\\test\\document-letter.pdf"\r
-            "TargetName" = "8:document-letter.pdf"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_EB00D0298C7E441EBD0257AC04FB3560"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            }\r
-        }\r
-        "FileType"\r
-        {\r
-        }\r
-        "Folder"\r
-        {\r
-            "{1525181F-901A-416C-8A58-119130FE478E}:_BEC0EAE20C954C78B294B83E6696156E"\r
-            {\r
-            "Name" = "8:#1919"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:ProgramMenuFolder"\r
-                "Folders"\r
-                {\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_E379D4EDBAD0460BB876711E9062ADB4"\r
-                    {\r
-                    "Name" = "8:IPP Everywhere Printer Self-Certification Tools"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_D115D2F4F12143B09D5FDA447A6A7D04"\r
-                        "Folders"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{1525181F-901A-416C-8A58-119130FE478E}:_D02CDADE99F344CF92CA1A8D0278861F"\r
-            {\r
-            "Name" = "8:#1916"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:DesktopFolder"\r
-                "Folders"\r
-                {\r
-                }\r
-            }\r
-            "{3C67513D-01DD-4637-8A68-80971EB9504F}:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            {\r
-            "DefaultLocation" = "8:[ProgramFilesFolder]\\sw-ippeveselfcert10"\r
-            "Name" = "8:#1925"\r
-            "AlwaysCreate" = "11:FALSE"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Property" = "8:TARGETDIR"\r
-                "Folders"\r
-                {\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_26743E387598422398CF503F7478F9E1"\r
-                    {\r
-                    "Name" = "8:doc"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_5CD53B90FF754768B11ECBEB671A1749"\r
-                        "Folders"\r
-                        {\r
-                        }\r
-                    }\r
-                    "{9EF0B969-E518-4E46-987F-47570745A589}:_EB00D0298C7E441EBD0257AC04FB3560"\r
-                    {\r
-                    "Name" = "8:ipptool"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "Condition" = "8:"\r
-                    "Transitive" = "11:FALSE"\r
-                    "Property" = "8:_6F223FB51798428A9F2D64A5A7F2B49C"\r
-                        "Folders"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "LaunchCondition"\r
-        {\r
-        }\r
-        "Locator"\r
-        {\r
-        }\r
-        "MsiBootstrapper"\r
-        {\r
-        "LangId" = "3:1033"\r
-        "RequiresElevation" = "11:FALSE"\r
-        }\r
-        "Product"\r
-        {\r
-        "Name" = "8:Microsoft Visual Studio"\r
-        "ProductName" = "8:IPP Everywhere Printer Self-Certification Tools"\r
-        "ProductCode" = "8:{C08E3AC5-4FBF-40DD-BD19-9BE69A609DAF}"\r
-        "PackageCode" = "8:{25FF31C9-52A0-4838-8F1D-02FB5D5296F4}"\r
-        "UpgradeCode" = "8:{BAB6EBBB-515D-4155-9FEF-D98DA76814CA}"\r
-        "RestartWWWService" = "11:FALSE"\r
-        "RemovePreviousVersions" = "11:TRUE"\r
-        "DetectNewerInstalledVersion" = "11:TRUE"\r
-        "InstallAllUsers" = "11:TRUE"\r
-        "ProductVersion" = "8:14.08.2600"\r
-        "Manufacturer" = "8:Apple Inc."\r
-        "ARPHELPTELEPHONE" = "8:"\r
-        "ARPHELPLINK" = "8:http://www.cups.org/str.php"\r
-        "Title" = "8:sw-ippeveselfcert10"\r
-        "Subject" = "8:"\r
-        "ARPCONTACT" = "8:Apple Inc."\r
-        "Keywords" = "8:IPP, Internet Printing Protocol"\r
-        "ARPCOMMENTS" = "8:IPP Everywhere Printer Self-Certification Tools"\r
-        "ARPURLINFOABOUT" = "8:http://www.cups.org/"\r
-        "ARPPRODUCTICON" = "8:"\r
-        "ARPIconIndex" = "3:0"\r
-        "SearchPath" = "8:"\r
-        "UseSystemSearchPath" = "11:TRUE"\r
-        "TargetPlatform" = "3:0"\r
-        "PreBuildEvent" = "8:"\r
-        "PostBuildEvent" = "8:"\r
-        "RunPostBuildEvent" = "3:0"\r
-        }\r
-        "Registry"\r
-        {\r
-            "HKLM"\r
-            {\r
-                "Keys"\r
-                {\r
-                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_BC4E66686BCA4F9A8B24B6CF2728DACD"\r
-                    {\r
-                    "Name" = "8:Software"\r
-                    "Condition" = "8:"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "DeleteAtUninstall" = "11:FALSE"\r
-                    "Transitive" = "11:FALSE"\r
-                        "Keys"\r
-                        {\r
-                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_F9AB9B310C7545D993D690F529048AA2"\r
-                            {\r
-                            "Name" = "8:cups.org"\r
-                            "Condition" = "8:"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "DeleteAtUninstall" = "11:FALSE"\r
-                            "Transitive" = "11:FALSE"\r
-                                "Keys"\r
-                                {\r
-                                }\r
-                                "Values"\r
-                                {\r
-                                    "{ADCFDA98-8FDD-45E4-90BC-E3D20B029870}:_4E5BAC705A1D44E78C90C6D2A4A7BE20"\r
-                                    {\r
-                                    "Name" = "8:installdir"\r
-                                    "Condition" = "8:"\r
-                                    "Transitive" = "11:FALSE"\r
-                                    "ValueTypes" = "3:2"\r
-                                    "Value" = "8:[TARGETDIR]"\r
-                                    }\r
-                                }\r
-                            }\r
-                        }\r
-                        "Values"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "HKCU"\r
-            {\r
-                "Keys"\r
-                {\r
-                    "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_A4C9879F42874B6B92960A55F2D98922"\r
-                    {\r
-                    "Name" = "8:Software"\r
-                    "Condition" = "8:"\r
-                    "AlwaysCreate" = "11:FALSE"\r
-                    "DeleteAtUninstall" = "11:FALSE"\r
-                    "Transitive" = "11:FALSE"\r
-                        "Keys"\r
-                        {\r
-                            "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_1ACB03C307FB4B85BB27C9913FB58B09"\r
-                            {\r
-                            "Name" = "8:[Manufacturer]"\r
-                            "Condition" = "8:"\r
-                            "AlwaysCreate" = "11:FALSE"\r
-                            "DeleteAtUninstall" = "11:FALSE"\r
-                            "Transitive" = "11:FALSE"\r
-                                "Keys"\r
-                                {\r
-                                }\r
-                                "Values"\r
-                                {\r
-                                }\r
-                            }\r
-                        }\r
-                        "Values"\r
-                        {\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "HKCR"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-            "HKU"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-            "HKPU"\r
-            {\r
-                "Keys"\r
-                {\r
-                }\r
-            }\r
-        }\r
-        "Sequences"\r
-        {\r
-        }\r
-        "Shortcut"\r
-        {\r
-            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_57BCED85BA5944009F56A11D5A9FBBEE"\r
-            {\r
-            "Name" = "8:ippfind Documentation"\r
-            "Arguments" = "8:"\r
-            "Description" = "8:"\r
-            "ShowCmd" = "3:1"\r
-            "IconIndex" = "3:0"\r
-            "Transitive" = "11:FALSE"\r
-            "Target" = "8:_592FC984DBFD494D9FB7DFFEA35AD7A5"\r
-            "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"\r
-            "WorkingFolder" = "8:_26743E387598422398CF503F7478F9E1"\r
-            "Icon" = "8:"\r
-            "Feature" = "8:"\r
-            }\r
-            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_63715171338D40FFBC5B47A1418B4814"\r
-            {\r
-            "Name" = "8:README"\r
-            "Arguments" = "8:"\r
-            "Description" = "8:"\r
-            "ShowCmd" = "3:1"\r
-            "IconIndex" = "3:0"\r
-            "Transitive" = "11:FALSE"\r
-            "Target" = "8:_27AB74FFFBC7436B9EBC6AE23968CFCC"\r
-            "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"\r
-            "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Icon" = "8:"\r
-            "Feature" = "8:"\r
-            }\r
-            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_70CF74DB997A408DBBFD48AB10F92321"\r
-            {\r
-            "Name" = "8:ipptool Documentation"\r
-            "Arguments" = "8:"\r
-            "Description" = "8:"\r
-            "ShowCmd" = "3:1"\r
-            "IconIndex" = "3:0"\r
-            "Transitive" = "11:FALSE"\r
-            "Target" = "8:_D5CD9D9AB1644688A1D54B1589BDF724"\r
-            "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"\r
-            "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Icon" = "8:"\r
-            "Feature" = "8:"\r
-            }\r
-            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_962004B0D5CA479A91EFA7F7BF7814C8"\r
-            {\r
-            "Name" = "8:ippserver Documentation"\r
-            "Arguments" = "8:"\r
-            "Description" = "8:"\r
-            "ShowCmd" = "3:1"\r
-            "IconIndex" = "3:0"\r
-            "Transitive" = "11:FALSE"\r
-            "Target" = "8:_1BCBABF5693841AE92515645BB7765F4"\r
-            "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"\r
-            "WorkingFolder" = "8:_26743E387598422398CF503F7478F9E1"\r
-            "Icon" = "8:"\r
-            "Feature" = "8:"\r
-            }\r
-            "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_BD2A7DF74D844FF5919EE8340EE36ECD"\r
-            {\r
-            "Name" = "8:Test File Documentation"\r
-            "Arguments" = "8:"\r
-            "Description" = "8:"\r
-            "ShowCmd" = "3:1"\r
-            "IconIndex" = "3:0"\r
-            "Transitive" = "11:FALSE"\r
-            "Target" = "8:_1A1324305D78463BBFC62269C56DCF0B"\r
-            "Folder" = "8:_E379D4EDBAD0460BB876711E9062ADB4"\r
-            "WorkingFolder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Icon" = "8:"\r
-            "Feature" = "8:"\r
-            }\r
-        }\r
-        "UserInterface"\r
-        {\r
-            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_045DF90B1FF941A9BA7A742CFC0A6C00"\r
-            {\r
-            "UseDynamicProperties" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_345BD86390E841A98B74ED3E07945F8C"\r
-            {\r
-            "Name" = "8:#1900"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:1"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_067C143A8731427180B1568AF8C07375"\r
-                    {\r
-                    "Sequence" = "3:200"\r
-                    "DisplayName" = "8:Installation Folder"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_A2F2CC6EB9D7453599E7598D4D0629A5"\r
-                    {\r
-                    "Sequence" = "3:300"\r
-                    "DisplayName" = "8:Confirm Installation"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C2B41369B7334F419318792EBA031412"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Welcome"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "CopyrightWarning"\r
-                            {\r
-                            "Name" = "8:CopyrightWarning"\r
-                            "DisplayName" = "8:#1002"\r
-                            "Description" = "8:#1102"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:2"\r
-                            "Value" = "8:This computer program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2."\r
-                            "DefaultValue" = "8:#1202"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "Welcome"\r
-                            {\r
-                            "Name" = "8:Welcome"\r
-                            "DisplayName" = "8:#1003"\r
-                            "Description" = "8:#1103"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1203"\r
-                            "DefaultValue" = "8:#1203"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6B654A06090344BA9AA443E0D0296737"\r
-            {\r
-            "Name" = "8:#1902"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:3"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_FB4E7BBC3DA242309FFB58F9A6194A93"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Finished"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "UpdateText"\r
-                            {\r
-                            "Name" = "8:UpdateText"\r
-                            "DisplayName" = "8:#1058"\r
-                            "Description" = "8:#1158"\r
-                            "Type" = "3:15"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1258"\r
-                            "DefaultValue" = "8:#1258"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_712819C7C4F042ABB708949BD4426628"\r
-            {\r
-            "Name" = "8:#1900"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:1"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2F49D4FACB954AF2B786D2AD9206D053"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Welcome"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "CopyrightWarning"\r
-                            {\r
-                            "Name" = "8:CopyrightWarning"\r
-                            "DisplayName" = "8:#1002"\r
-                            "Description" = "8:#1102"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:2"\r
-                            "Value" = "8:This computer program is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2."\r
-                            "DefaultValue" = "8:#1202"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "Welcome"\r
-                            {\r
-                            "Name" = "8:Welcome"\r
-                            "DisplayName" = "8:#1003"\r
-                            "Description" = "8:#1103"\r
-                            "Type" = "3:3"\r
-                            "ContextData" = "8:"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:1"\r
-                            "Value" = "8:#1203"\r
-                            "DefaultValue" = "8:#1203"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_770E25BC453A464EA8CD51381FDDDD9F"\r
-                    {\r
-                    "Sequence" = "3:300"\r
-                    "DisplayName" = "8:Confirm Installation"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_9534A64B629F4F868D6D7A384C76DCB2"\r
-                    {\r
-                    "Sequence" = "3:200"\r
-                    "DisplayName" = "8:Installation Folder"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "InstallAllUsersVisible"\r
-                            {\r
-                            "Name" = "8:InstallAllUsersVisible"\r
-                            "DisplayName" = "8:#1059"\r
-                            "Description" = "8:#1159"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_770CCEFF81BD46A182A6E816A41A0E81"\r
-            {\r
-            "Name" = "8:#1901"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:2"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_75E0C1FD245D493DA0D7E3E0BC0C365F"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Progress"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "ShowProgress"\r
-                            {\r
-                            "Name" = "8:ShowProgress"\r
-                            "DisplayName" = "8:#1009"\r
-                            "Description" = "8:#1109"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_933B15E9A383418F8ADF3B13F68458F3"\r
-            {\r
-            "UseDynamicProperties" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_E310DA8CED734E00950A3C5D630CE987"\r
-            {\r
-            "Name" = "8:#1902"\r
-            "Sequence" = "3:2"\r
-            "Attributes" = "3:3"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_CB172E69F9C74901BE1040336CFD4F72"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Finished"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-            "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_F44F9BE9B54940848289669635E4A5A2"\r
-            {\r
-            "Name" = "8:#1901"\r
-            "Sequence" = "3:1"\r
-            "Attributes" = "3:2"\r
-                "Dialogs"\r
-                {\r
-                    "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_14751F327A634B989283C8F28CFB6DFC"\r
-                    {\r
-                    "Sequence" = "3:100"\r
-                    "DisplayName" = "8:Progress"\r
-                    "UseDynamicProperties" = "11:TRUE"\r
-                    "IsDependency" = "11:FALSE"\r
-                    "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"\r
-                        "Properties"\r
-                        {\r
-                            "BannerBitmap"\r
-                            {\r
-                            "Name" = "8:BannerBitmap"\r
-                            "DisplayName" = "8:#1001"\r
-                            "Description" = "8:#1101"\r
-                            "Type" = "3:8"\r
-                            "ContextData" = "8:Bitmap"\r
-                            "Attributes" = "3:4"\r
-                            "Setting" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                            "ShowProgress"\r
-                            {\r
-                            "Name" = "8:ShowProgress"\r
-                            "DisplayName" = "8:#1009"\r
-                            "Description" = "8:#1109"\r
-                            "Type" = "3:5"\r
-                            "ContextData" = "8:1;True=1;False=0"\r
-                            "Attributes" = "3:0"\r
-                            "Setting" = "3:0"\r
-                            "Value" = "3:1"\r
-                            "DefaultValue" = "3:1"\r
-                            "UsePlugInResources" = "11:TRUE"\r
-                            }\r
-                        }\r
-                    }\r
-                }\r
-            }\r
-        }\r
-        "MergeModule"\r
-        {\r
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_299D5816FF7142F3B2791685551AD1DC"\r
-            {\r
-            "UseDynamicProperties" = "11:TRUE"\r
-            "IsDependency" = "11:TRUE"\r
-            "SourcePath" = "8:microsoft_vc90_debugcrt_x86.msm"\r
-                "Properties"\r
-                {\r
-                }\r
-            "LanguageId" = "3:0"\r
-            "Exclude" = "11:FALSE"\r
-            "Folder" = "8:"\r
-            "Feature" = "8:"\r
-            "IsolateTo" = "8:"\r
-            }\r
-            "{CEE29DC0-9FBA-4B99-8D47-5BC643D9B626}:_A1CB27EFF4094C39B58D0BE5A272DF1A"\r
-            {\r
-            "UseDynamicProperties" = "11:TRUE"\r
-            "IsDependency" = "11:TRUE"\r
-            "SourcePath" = "8:policy_9_0_Microsoft_VC90_DebugCRT_x86.msm"\r
-                "Properties"\r
-                {\r
-                }\r
-            "LanguageId" = "3:0"\r
-            "Exclude" = "11:FALSE"\r
-            "Folder" = "8:"\r
-            "Feature" = "8:"\r
-            "IsolateTo" = "8:"\r
-            }\r
-        }\r
-        "ProjectOutput"\r
-        {\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_466C1CF41795452A8B76425F8D05D8B8"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\ippserver.exe"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{82A03BC7-0746-4B85-8908-3C7A3FAA58A9}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_58DC0E72F0944BEFB927AED718CD1660"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\ippfind.exe"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{B484DA0C-62C8-4C32-83B6-CCEB58968B85}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_D02EB13951314EFD9C539150EF8E53B8"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\regex.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{18950A1B-D37A-40C7-B2DF-C12986C0526E}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_E97571D3FBE048DABDC59B37762D800F"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\ipptool.exe"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{B246D91E-61F2-4433-BFD2-6C2A96FBD4D4}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-            "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_EA282F32A10B4ED1A81AA6133B997C6A"\r
-            {\r
-            "SourcePath" = "8:Win32\\Debug\\libcups2.dll"\r
-            "TargetName" = "8:"\r
-            "Tag" = "8:"\r
-            "Folder" = "8:_FFAEDEA1D38D4088A03FDD6F17E2CA5D"\r
-            "Condition" = "8:"\r
-            "Transitive" = "11:FALSE"\r
-            "Vital" = "11:TRUE"\r
-            "ReadOnly" = "11:FALSE"\r
-            "Hidden" = "11:FALSE"\r
-            "System" = "11:FALSE"\r
-            "Permanent" = "11:FALSE"\r
-            "SharedLegacy" = "11:FALSE"\r
-            "PackageAs" = "3:1"\r
-            "Register" = "3:1"\r
-            "Exclude" = "11:FALSE"\r
-            "IsDependency" = "11:FALSE"\r
-            "IsolateTo" = "8:"\r
-            "ProjectOutputGroupRegister" = "3:1"\r
-            "OutputConfiguration" = "8:"\r
-            "OutputGroupCanonicalName" = "8:Built"\r
-            "OutputProjectGuid" = "8:{CB4AA6F2-3E84-45BE-B505-95CD375E8BE3}"\r
-            "ShowKeyOutput" = "11:TRUE"\r
-                "ExcludeFilters"\r
-                {\r
-                }\r
-            }\r
-        }\r
-    }\r
-}\r
index 3dda13f..28a97bf 100644 (file)
                        buildPhases = (
                        );
                        dependencies = (
-                               274EE2861A03EEEE003213D1 /* PBXTargetDependency */,
-                               274EE2881A03EEEE003213D1 /* PBXTargetDependency */,
+                               270D02281D707E5100EA9403 /* PBXTargetDependency */,
+                               271287361CC1411000E517C7 /* PBXTargetDependency */,
+                               2712871C1CC13FFA00E517C7 /* PBXTargetDependency */,
+                               271286DC1CC13EF400E517C7 /* PBXTargetDependency */,
+                               271286DE1CC13EF400E517C7 /* PBXTargetDependency */,
+                               271286E01CC13EF400E517C7 /* PBXTargetDependency */,
+                               271284911CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284931CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284951CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284971CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284991CC11FA500E517C7 /* PBXTargetDependency */,
+                               2712849B1CC11FA500E517C7 /* PBXTargetDependency */,
+                               2712849D1CC11FA500E517C7 /* PBXTargetDependency */,
+                               2712849F1CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284A11CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284A31CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284A51CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284A71CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284A91CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284AB1CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284AD1CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284AF1CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284B11CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284B31CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284B51CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284B71CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284B91CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284BB1CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284BD1CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284BF1CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284C11CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284C31CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284C51CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284C71CC11FA500E517C7 /* PBXTargetDependency */,
+                               271284C91CC11FA500E517C7 /* PBXTargetDependency */,
                                726AD704135E8AA1002C930D /* PBXTargetDependency */,
                                2767FC5419267469000F61D3 /* PBXTargetDependency */,
                                273BF6DE1333B6370022CAAB /* PBXTargetDependency */,
                        buildPhases = (
                        );
                        dependencies = (
+                               271287061CC13F8F00E517C7 /* PBXTargetDependency */,
+                               271287081CC13F8F00E517C7 /* PBXTargetDependency */,
+                               271286E21CC13F0100E517C7 /* PBXTargetDependency */,
+                               271286E41CC13F0100E517C7 /* PBXTargetDependency */,
+                               271286351CC12F9000E517C7 /* PBXTargetDependency */,
+                               271286371CC12F9000E517C7 /* PBXTargetDependency */,
+                               271286391CC12F9000E517C7 /* PBXTargetDependency */,
+                               2712863B1CC12F9000E517C7 /* PBXTargetDependency */,
+                               2712863D1CC12F9000E517C7 /* PBXTargetDependency */,
+                               2712863F1CC12F9000E517C7 /* PBXTargetDependency */,
+                               271286411CC12F9000E517C7 /* PBXTargetDependency */,
+                               271286431CC12F9000E517C7 /* PBXTargetDependency */,
+                               271286451CC12F9000E517C7 /* PBXTargetDependency */,
+                               271286471CC12F9000E517C7 /* PBXTargetDependency */,
+                               2712857E1CC1295A00E517C7 /* PBXTargetDependency */,
+                               271285801CC1295A00E517C7 /* PBXTargetDependency */,
+                               271285821CC1295A00E517C7 /* PBXTargetDependency */,
+                               271285841CC1295A00E517C7 /* PBXTargetDependency */,
+                               271285861CC1295A00E517C7 /* PBXTargetDependency */,
+                               271285881CC1295A00E517C7 /* PBXTargetDependency */,
+                               2712858A1CC1295A00E517C7 /* PBXTargetDependency */,
+                               2712858C1CC1295A00E517C7 /* PBXTargetDependency */,
+                               2712858E1CC1295A00E517C7 /* PBXTargetDependency */,
+                               271285901CC1295A00E517C7 /* PBXTargetDependency */,
+                               271285921CC1295A00E517C7 /* PBXTargetDependency */,
+                               271285941CC1295A00E517C7 /* PBXTargetDependency */,
                                27A034871A8BDC6900650675 /* PBXTargetDependency */,
-                               274EE2821A03EEE0003213D1 /* PBXTargetDependency */,
-                               274EE2841A03EEE0003213D1 /* PBXTargetDependency */,
                                274FF5E313332D4300317ECB /* PBXTargetDependency */,
                                72BEA8D819AFA8BB0085F0F3 /* PBXTargetDependency */,
                                72F75A711336FACD004BB496 /* PBXTargetDependency */,
 /* End PBXAggregateTarget section */
 
 /* Begin PBXBuildFile section */
-               270CCDBA135E3D0900007BE2 /* libcupsmime.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220FAC13330B2200FCA411 /* libcupsmime.dylib */; };
+               270696001CADF3E200FFE5FB /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EB81333056300FCA411 /* array.c */; };
+               270696021CADF3E200FFE5FB /* auth.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBB1333056300FCA411 /* auth.c */; };
+               270696071CADF3E200FFE5FB /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED1133305BB00FCA411 /* debug.c */; };
+               270696081CADF3E200FFE5FB /* dest.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED2133305BB00FCA411 /* dest.c */; };
+               270696091CADF3E200FFE5FB /* dir.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED3133305BB00FCA411 /* dir.c */; };
+               2706960B1CADF3E200FFE5FB /* encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED6133305BB00FCA411 /* encode.c */; };
+               2706960C1CADF3E200FFE5FB /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED8133305BB00FCA411 /* file.c */; };
+               2706960F1CADF3E200FFE5FB /* getputfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EDC133305BB00FCA411 /* getputfile.c */; };
+               270696101CADF3E200FFE5FB /* globals.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EDD133305BB00FCA411 /* globals.c */; };
+               270696111CADF3E200FFE5FB /* http-addr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EDE133305BB00FCA411 /* http-addr.c */; };
+               270696121CADF3E200FFE5FB /* http-addrlist.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EDF133305BB00FCA411 /* http-addrlist.c */; };
+               270696131CADF3E200FFE5FB /* http-support.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE1133305BB00FCA411 /* http-support.c */; };
+               270696141CADF3E200FFE5FB /* http.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE2133305BB00FCA411 /* http.c */; };
+               270696161CADF3E200FFE5FB /* dest-options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E218A13543000FCAE4 /* dest-options.c */; };
+               270696171CADF3E200FFE5FB /* ipp-support.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE5133305BB00FCA411 /* ipp-support.c */; };
+               270696181CADF3E200FFE5FB /* ipp.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE6133305BB00FCA411 /* ipp.c */; };
+               270696191CADF3E200FFE5FB /* langprintf.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE8133305BB00FCA411 /* langprintf.c */; };
+               2706961A1CADF3E200FFE5FB /* language.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEA133305BB00FCA411 /* language.c */; };
+               2706961D1CADF3E200FFE5FB /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEF133305BB00FCA411 /* md5.c */; };
+               2706961E1CADF3E200FFE5FB /* md5passwd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF0133305BB00FCA411 /* md5passwd.c */; };
+               2706961F1CADF3E200FFE5FB /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 7284F9EF1BFCCD940026F886 /* hash.c */; };
+               270696201CADF3E200FFE5FB /* notify.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF1133305BB00FCA411 /* notify.c */; };
+               270696211CADF3E200FFE5FB /* options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF2133305BB00FCA411 /* options.c */; };
+               270696221CADF3E200FFE5FB /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 727AD5B619100A58009F6862 /* tls.c */; };
+               270696251CADF3E200FFE5FB /* dest-job.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E018A13543000FCAE4 /* dest-job.c */; };
+               270696271CADF3E200FFE5FB /* pwg-media.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF8133305BB00FCA411 /* pwg-media.c */; };
+               270696281CADF3E200FFE5FB /* dest-localization.c in Sources */ = {isa = PBXBuildFile; fileRef = 72CF95E118A13543000FCAE4 /* dest-localization.c */; };
+               270696291CADF3E200FFE5FB /* request.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EFB133305BB00FCA411 /* request.c */; };
+               2706962C1CADF3E200FFE5FB /* snprintf.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220F00133305BB00FCA411 /* snprintf.c */; };
+               2706962D1CADF3E200FFE5FB /* string.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220F02133305BB00FCA411 /* string.c */; };
+               2706962E1CADF3E200FFE5FB /* tempfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220F03133305BB00FCA411 /* tempfile.c */; };
+               2706962F1CADF3E200FFE5FB /* thread.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220F05133305BB00FCA411 /* thread.c */; };
+               270696301CADF3E200FFE5FB /* transcode.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220F06133305BB00FCA411 /* transcode.c */; };
+               270696311CADF3E200FFE5FB /* usersys.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220F08133305BB00FCA411 /* usersys.c */; };
+               270696341CADF3E200FFE5FB /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               270696351CADF3E200FFE5FB /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               270696381CADF3E200FFE5FB /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               270696391CADF3E200FFE5FB /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               2706963A1CADF3E200FFE5FB /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               2706963B1CADF3E200FFE5FB /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               2706963D1CADF3E200FFE5FB /* adminutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EB71333056300FCA411 /* adminutil.h */; settings = {ATTRIBUTES = (); }; };
+               2706963E1CADF3E200FFE5FB /* array.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EB91333056300FCA411 /* array.h */; settings = {ATTRIBUTES = (); }; };
+               2706963F1CADF3E200FFE5FB /* backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EBE1333056300FCA411 /* backend.h */; settings = {ATTRIBUTES = (); }; };
+               270696401CADF3E200FFE5FB /* cups-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC01333056300FCA411 /* cups-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696411CADF3E200FFE5FB /* debug-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC31333056300FCA411 /* debug-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696421CADF3E200FFE5FB /* file-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220ED7133305BB00FCA411 /* file-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696431CADF3E200FFE5FB /* http-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EE0133305BB00FCA411 /* http-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696441CADF3E200FFE5FB /* ipp-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EE4133305BB00FCA411 /* ipp-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696451CADF3E200FFE5FB /* language-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EE9133305BB00FCA411 /* language-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696461CADF3E200FFE5FB /* md5-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EEE133305BB00FCA411 /* md5-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696471CADF3E200FFE5FB /* ppd-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EF5133305BB00FCA411 /* ppd-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696481CADF3E200FFE5FB /* pwg-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EF9133305BB00FCA411 /* pwg-private.h */; settings = {ATTRIBUTES = (); }; };
+               270696491CADF3E200FFE5FB /* snmp-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EFE133305BB00FCA411 /* snmp-private.h */; settings = {ATTRIBUTES = (); }; };
+               2706964A1CADF3E200FFE5FB /* string-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220F01133305BB00FCA411 /* string-private.h */; settings = {ATTRIBUTES = (); }; };
+               2706964B1CADF3E200FFE5FB /* thread-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220F04133305BB00FCA411 /* thread-private.h */; settings = {ATTRIBUTES = (); }; };
+               2706964C1CADF3E200FFE5FB /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220F471333063D00FCA411 /* config.h */; settings = {ATTRIBUTES = (); }; };
+               2706964D1CADF3E200FFE5FB /* cups.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC11333056300FCA411 /* cups.h */; settings = {ATTRIBUTES = (); }; };
+               2706964E1CADF3E200FFE5FB /* dir.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220ED4133305BB00FCA411 /* dir.h */; settings = {ATTRIBUTES = (); }; };
+               2706964F1CADF3E200FFE5FB /* file.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220ED9133305BB00FCA411 /* file.h */; settings = {ATTRIBUTES = (); }; };
+               270696501CADF3E200FFE5FB /* http.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EE3133305BB00FCA411 /* http.h */; settings = {ATTRIBUTES = (); }; };
+               270696511CADF3E200FFE5FB /* ipp.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EE7133305BB00FCA411 /* ipp.h */; settings = {ATTRIBUTES = (); }; };
+               270696521CADF3E200FFE5FB /* language.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EEB133305BB00FCA411 /* language.h */; settings = {ATTRIBUTES = (); }; };
+               270696531CADF3E200FFE5FB /* ppd.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EF7133305BB00FCA411 /* ppd.h */; settings = {ATTRIBUTES = (); }; };
+               270696541CADF3E200FFE5FB /* sidechannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EFD133305BB00FCA411 /* sidechannel.h */; settings = {ATTRIBUTES = (); }; };
+               270696551CADF3E200FFE5FB /* transcode.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220F07133305BB00FCA411 /* transcode.h */; settings = {ATTRIBUTES = (); }; };
+               270696561CADF3E200FFE5FB /* versioning.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220F0A133305BB00FCA411 /* versioning.h */; settings = {ATTRIBUTES = (); }; };
+               2706965B1CAE1A9A00FFE5FB /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220F09133305BB00FCA411 /* util.c */; };
                270CCDBC135E3D3E00007BE2 /* testmime.c in Sources */ = {isa = PBXBuildFile; fileRef = 270CCDBB135E3D3E00007BE2 /* testmime.c */; };
+               270D02191D707E0200EA9403 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               270D021A1D707E0200EA9403 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               270D021B1D707E0200EA9403 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               270D021C1D707E0200EA9403 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               270D021D1D707E0200EA9403 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               270D021E1D707E0200EA9403 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               270D021F1D707E0200EA9403 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               270D02261D707E3700EA9403 /* testcreds.c in Sources */ = {isa = PBXBuildFile; fileRef = 270D02251D707E3700EA9403 /* testcreds.c */; };
+               271284D21CC1231300E517C7 /* snmp-supplies.c in Sources */ = {isa = PBXBuildFile; fileRef = 7243790C1333E4E3009631B9 /* snmp-supplies.c */; };
+               271284D71CC124D700E517C7 /* libcupscgi_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA76B1CC03AF60092477B /* libcupscgi_static.a */; };
+               271284D81CC124E300E517C7 /* libcupscgi_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA76B1CC03AF60092477B /* libcupscgi_static.a */; };
+               271284D91CC124F000E517C7 /* libcupsppdc_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA7401CC03AAF0092477B /* libcupsppdc_static.a */; };
+               271284DA1CC1251400E517C7 /* libcupsimage_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA70F1CC03A490092477B /* libcupsimage_static.a */; };
+               271284DB1CC1251F00E517C7 /* libcupscgi_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA76B1CC03AF60092477B /* libcupscgi_static.a */; };
+               271284DC1CC1254C00E517C7 /* libcupsmime_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA71F1CC03A990092477B /* libcupsmime_static.a */; };
+               271284E71CC1261900E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271284ED1CC1262C00E517C7 /* cancel.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E089137A3F5200FAFEF6 /* cancel.c */; };
+               271284F41CC1264B00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271284FA1CC1265800E517C7 /* cupsaccept.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E08A137A3F5200FAFEF6 /* cupsaccept.c */; };
+               271285011CC1265D00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285071CC1267400E517C7 /* cupstestdsc.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E08B137A3F5200FAFEF6 /* cupstestdsc.c */; };
+               2712850E1CC1267A00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285141CC1269400E517C7 /* lp.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E08C137A3F5200FAFEF6 /* lp.c */; };
+               2712851B1CC1269700E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285211CC126A700E517C7 /* lpc.c in Sources */ = {isa = PBXBuildFile; fileRef = 271284DD1CC125FC00E517C7 /* lpc.c */; };
+               271285281CC126AA00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               2712852E1CC126BC00E517C7 /* lpinfo.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E08E137A3F5200FAFEF6 /* lpinfo.c */; };
+               271285351CC1270B00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               2712853B1CC1271B00E517C7 /* lpmove.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E08F137A3F5200FAFEF6 /* lpmove.c */; };
+               271285421CC1271E00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285481CC1272900E517C7 /* lpoptions.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E090137A3F5200FAFEF6 /* lpoptions.c */; };
+               2712854F1CC1272D00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285551CC1273C00E517C7 /* lpq.c in Sources */ = {isa = PBXBuildFile; fileRef = 271284DE1CC125FC00E517C7 /* lpq.c */; };
+               2712855C1CC1274300E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285621CC1274F00E517C7 /* lpr.c in Sources */ = {isa = PBXBuildFile; fileRef = 271284DF1CC125FC00E517C7 /* lpr.c */; };
+               271285691CC1275200E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               2712856F1CC1276000E517C7 /* lprm.c in Sources */ = {isa = PBXBuildFile; fileRef = 271284E01CC125FC00E517C7 /* lprm.c */; };
+               271285761CC1276400E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               2712857C1CC1277000E517C7 /* lpstat.c in Sources */ = {isa = PBXBuildFile; fileRef = 2732E092137A3F5200FAFEF6 /* lpstat.c */; };
+               2712859B1CC12D1300E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285A11CC12D2100E517C7 /* admin.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF02F192E3498001EF690 /* admin.c */; };
+               271285A21CC12D2900E517C7 /* libcupscgi.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA74F1CC03ACC0092477B /* libcupscgi.dylib */; };
+               271285A91CC12D3A00E517C7 /* libcupscgi.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA74F1CC03ACC0092477B /* libcupscgi.dylib */; };
+               271285AA1CC12D3A00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285B01CC12D4A00E517C7 /* classes.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF032192E3498001EF690 /* classes.c */; };
+               271285B71CC12D4E00E517C7 /* libcupscgi.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA74F1CC03ACC0092477B /* libcupscgi.dylib */; };
+               271285B81CC12D4E00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285BE1CC12D5C00E517C7 /* jobs.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF038192E3498001EF690 /* jobs.c */; };
+               271285C51CC12D5E00E517C7 /* libcupscgi.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA74F1CC03ACC0092477B /* libcupscgi.dylib */; };
+               271285C61CC12D5E00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285CC1CC12D6D00E517C7 /* printers.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF03A192E3498001EF690 /* printers.c */; };
+               271285D31CC12DBF00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285D91CC12DD000E517C7 /* commandtops.c in Sources */ = {isa = PBXBuildFile; fileRef = 7271881713746EA8001A2036 /* commandtops.c */; };
+               271285E01CC12DDF00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285E61CC12DEF00E517C7 /* gziptoany.c in Sources */ = {isa = PBXBuildFile; fileRef = 7271881A13746EA8001A2036 /* gziptoany.c */; };
+               271285ED1CC12E2D00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271285F31CC12E3C00E517C7 /* pstops.c in Sources */ = {isa = PBXBuildFile; fileRef = 7271882013746EA8001A2036 /* pstops.c */; };
+               271285F41CC12E4200E517C7 /* common.c in Sources */ = {isa = PBXBuildFile; fileRef = 7271881813746EA8001A2036 /* common.c */; };
+               271285FB1CC12EEB00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271286011CC12EFA00E517C7 /* rastertoepson.c in Sources */ = {isa = PBXBuildFile; fileRef = 7271882113746EA8001A2036 /* rastertoepson.c */; };
+               271286041CC12F0800E517C7 /* libcupsimage.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72F75A611336F9A3004BB496 /* libcupsimage.dylib */; };
+               2712860D1CC12F0B00E517C7 /* libcupsimage.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72F75A611336F9A3004BB496 /* libcupsimage.dylib */; };
+               2712860E1CC12F0B00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271286141CC12F1800E517C7 /* rastertohp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7271882213746EA8001A2036 /* rastertohp.c */; };
+               2712861D1CC12F1A00E517C7 /* libcupsimage.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72F75A611336F9A3004BB496 /* libcupsimage.dylib */; };
+               2712861E1CC12F1A00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271286241CC12F2600E517C7 /* rastertolabel.c in Sources */ = {isa = PBXBuildFile; fileRef = 7271882313746EA8001A2036 /* rastertolabel.c */; };
+               2712865D1CC1309000E517C7 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               2712865E1CC1309000E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               2712865F1CC1309000E517C7 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               271286601CC1309000E517C7 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               271286611CC1309000E517C7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               271286621CC1309000E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               271286691CC130C700E517C7 /* tlscheck.c in Sources */ = {isa = PBXBuildFile; fileRef = 271286681CC130BD00E517C7 /* tlscheck.c */; };
+               271286731CC1310E00E517C7 /* libcupsimage_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA70F1CC03A490092477B /* libcupsimage_static.a */; };
+               271286741CC1310E00E517C7 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               271286751CC1310E00E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               271286761CC1310E00E517C7 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               271286771CC1310E00E517C7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               271286781CC1310E00E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               2712867E1CC1311D00E517C7 /* rasterbench.c in Sources */ = {isa = PBXBuildFile; fileRef = 2712866A1CC130FF00E517C7 /* rasterbench.c */; };
+               2712868D1CC13DC000E517C7 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               2712868E1CC13DC000E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               2712868F1CC13DC000E517C7 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               271286901CC13DC000E517C7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               271286911CC13DC000E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               271286971CC13DEA00E517C7 /* checkpo.c in Sources */ = {isa = PBXBuildFile; fileRef = 271286831CC13D9600E517C7 /* checkpo.c */; };
+               2712869E1CC13DF100E517C7 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               2712869F1CC13DF100E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               271286A01CC13DF100E517C7 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               271286A11CC13DF100E517C7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               271286A21CC13DF100E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               271286A81CC13DFD00E517C7 /* po2strings.c in Sources */ = {isa = PBXBuildFile; fileRef = 271286851CC13D9600E517C7 /* po2strings.c */; };
+               271286AF1CC13DFF00E517C7 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               271286B01CC13DFF00E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               271286B11CC13DFF00E517C7 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               271286B21CC13DFF00E517C7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               271286B31CC13DFF00E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               271286B91CC13E1000E517C7 /* strings2po.c in Sources */ = {isa = PBXBuildFile; fileRef = 271286861CC13D9600E517C7 /* strings2po.c */; };
+               271286C11CC13E2100E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271286C21CC13E2100E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               271286C31CC13E2100E517C7 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2C15B4913D003F877F /* IOKit.framework */; };
+               271286C41CC13E2100E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               271286CA1CC13E2E00E517C7 /* bcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 271286801CC1396100E517C7 /* bcp.c */; };
+               271286D11CC13E5B00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271286D21CC13E5B00E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               271286D31CC13E5B00E517C7 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2C15B4913D003F877F /* IOKit.framework */; };
+               271286D41CC13E5B00E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               271286DA1CC13E6A00E517C7 /* tbcp.c in Sources */ = {isa = PBXBuildFile; fileRef = 271286811CC1396100E517C7 /* tbcp.c */; };
+               271286EB1CC13F2000E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271286EC1CC13F2000E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               271286ED1CC13F2000E517C7 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2C15B4913D003F877F /* IOKit.framework */; };
+               271286EE1CC13F2000E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               271286F41CC13F2F00E517C7 /* mailto.c in Sources */ = {isa = PBXBuildFile; fileRef = 724FA6D51CC039D00092477B /* mailto.c */; };
+               271286FB1CC13F3F00E517C7 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               271286FC1CC13F3F00E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               271286FD1CC13F3F00E517C7 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2C15B4913D003F877F /* IOKit.framework */; };
+               271286FE1CC13F3F00E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               271287041CC13F4C00E517C7 /* rss.c in Sources */ = {isa = PBXBuildFile; fileRef = 724FA6D61CC039D00092477B /* rss.c */; };
+               2712870F1CC13FAB00E517C7 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               271287101CC13FAB00E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               271287111CC13FAB00E517C7 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               271287121CC13FAB00E517C7 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               271287131CC13FAB00E517C7 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               2712871A1CC13FE800E517C7 /* mantohtml.c in Sources */ = {isa = PBXBuildFile; fileRef = 271287191CC13FDB00E517C7 /* mantohtml.c */; };
+               2712872D1CC140D200E517C7 /* genstrings.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 2712871D1CC140B400E517C7 /* genstrings.cxx */; };
+               271287321CC140EB00E517C7 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               271287331CC140EB00E517C7 /* libcupsppdc_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA7401CC03AAF0092477B /* libcupsppdc_static.a */; };
+               271287341CC140F500E517C7 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
                273BF6C71333B5370022CAAB /* testcups.c in Sources */ = {isa = PBXBuildFile; fileRef = 273BF6C61333B5370022CAAB /* testcups.c */; };
-               274EE2611A03EDCA003213D1 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
-               274EE2621A03EDCA003213D1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
-               274EE2631A03EDCA003213D1 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
-               274EE2641A03EDCA003213D1 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
-               274EE2651A03EDCA003213D1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
-               274EE2661A03EDCA003213D1 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
-               274EE2721A03EDCB003213D1 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
-               274EE2731A03EDCB003213D1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
-               274EE2741A03EDCB003213D1 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
-               274EE2751A03EDCB003213D1 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
-               274EE2761A03EDCB003213D1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
-               274EE2771A03EDCB003213D1 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
-               274EE27E1A03EE0B003213D1 /* ippinfra.c in Sources */ = {isa = PBXBuildFile; fileRef = 274EE27D1A03EE0B003213D1 /* ippinfra.c */; };
-               274EE2801A03EE41003213D1 /* ippproxy.c in Sources */ = {isa = PBXBuildFile; fileRef = 274EE27F1A03EE41003213D1 /* ippproxy.c */; };
                274FF5D913332CC700317ECB /* cups-driverd.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5D613332CC700317ECB /* cups-driverd.cxx */; };
                274FF5DA13332CC700317ECB /* util.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5D713332CC700317ECB /* util.c */; };
                274FF5DD13332D0600317ECB /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                274FF61B1333315100317ECB /* ppdc-source.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6061333315100317ECB /* ppdc-source.cxx */; };
                274FF61C1333315100317ECB /* ppdc-string.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6071333315100317ECB /* ppdc-string.cxx */; };
                274FF61D1333315100317ECB /* ppdc-variable.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6081333315100317ECB /* ppdc-variable.cxx */; };
-               274FF61E1333315100317ECB /* ppdc.h in Headers */ = {isa = PBXBuildFile; fileRef = 274FF6091333315100317ECB /* ppdc.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               274FF61E1333315100317ECB /* ppdc.h in Headers */ = {isa = PBXBuildFile; fileRef = 274FF6091333315100317ECB /* ppdc.h */; settings = {ATTRIBUTES = (Private, ); }; };
                274FF6231333321400317ECB /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                274FF6241333323B00317ECB /* libcupsppdc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 274FF5EE133330C800317ECB /* libcupsppdc.dylib */; };
                274FF6321333334A00317ECB /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                274FF68813333B6E00317ECB /* cupsfilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FF68713333B6E00317ECB /* cupsfilter.c */; };
                274FF68B1333B1C400317ECB /* adminutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EB51333052D00FCA411 /* adminutil.c */; };
                274FF68C1333B1C400317ECB /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EB81333056300FCA411 /* array.c */; };
-               274FF68D1333B1C400317ECB /* attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBA1333056300FCA411 /* attr.c */; };
+               274FF68D1333B1C400317ECB /* ppd-attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBA1333056300FCA411 /* ppd-attr.c */; };
                274FF68E1333B1C400317ECB /* auth.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBB1333056300FCA411 /* auth.c */; };
                274FF68F1333B1C400317ECB /* backchannel.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBC1333056300FCA411 /* backchannel.c */; };
                274FF6901333B1C400317ECB /* backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBD1333056300FCA411 /* backend.c */; };
-               274FF6911333B1C400317ECB /* conflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBF1333056300FCA411 /* conflicts.c */; };
-               274FF6921333B1C400317ECB /* custom.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EC21333056300FCA411 /* custom.c */; };
+               274FF6911333B1C400317ECB /* ppd-conflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBF1333056300FCA411 /* ppd-conflicts.c */; };
+               274FF6921333B1C400317ECB /* ppd-custom.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EC21333056300FCA411 /* ppd-custom.c */; };
                274FF6931333B1C400317ECB /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED1133305BB00FCA411 /* debug.c */; };
                274FF6941333B1C400317ECB /* dest.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED2133305BB00FCA411 /* dest.c */; };
                274FF6951333B1C400317ECB /* dir.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED3133305BB00FCA411 /* dir.c */; };
-               274FF6961333B1C400317ECB /* emit.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED5133305BB00FCA411 /* emit.c */; };
+               274FF6961333B1C400317ECB /* ppd-emit.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED5133305BB00FCA411 /* ppd-emit.c */; };
                274FF6971333B1C400317ECB /* encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED6133305BB00FCA411 /* encode.c */; };
                274FF6981333B1C400317ECB /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED8133305BB00FCA411 /* file.c */; };
                274FF6991333B1C400317ECB /* getdevices.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EDA133305BB00FCA411 /* getdevices.c */; };
                274FF6A21333B1C400317ECB /* ipp.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE6133305BB00FCA411 /* ipp.c */; };
                274FF6A31333B1C400317ECB /* langprintf.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE8133305BB00FCA411 /* langprintf.c */; };
                274FF6A41333B1C400317ECB /* language.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEA133305BB00FCA411 /* language.c */; };
-               274FF6A51333B1C400317ECB /* localize.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEC133305BB00FCA411 /* localize.c */; };
-               274FF6A61333B1C400317ECB /* mark.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EED133305BB00FCA411 /* mark.c */; };
+               274FF6A51333B1C400317ECB /* ppd-localize.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEC133305BB00FCA411 /* ppd-localize.c */; };
+               274FF6A61333B1C400317ECB /* ppd-mark.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EED133305BB00FCA411 /* ppd-mark.c */; };
                274FF6A71333B1C400317ECB /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEF133305BB00FCA411 /* md5.c */; };
                274FF6A81333B1C400317ECB /* md5passwd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF0133305BB00FCA411 /* md5passwd.c */; };
                274FF6A91333B1C400317ECB /* notify.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF1133305BB00FCA411 /* notify.c */; };
                274FF6AA1333B1C400317ECB /* options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF2133305BB00FCA411 /* options.c */; };
-               274FF6AB1333B1C400317ECB /* page.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF3133305BB00FCA411 /* page.c */; };
+               274FF6AB1333B1C400317ECB /* ppd-page.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF3133305BB00FCA411 /* ppd-page.c */; };
                274FF6AC1333B1C400317ECB /* ppd-cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF4133305BB00FCA411 /* ppd-cache.c */; };
                274FF6AD1333B1C400317ECB /* ppd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF6133305BB00FCA411 /* ppd.c */; };
                274FF6AE1333B1C400317ECB /* pwg-media.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF8133305BB00FCA411 /* pwg-media.c */; };
                72220EC41333056300FCA411 /* adminutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EB71333056300FCA411 /* adminutil.h */; settings = {ATTRIBUTES = (Public, ); }; };
                72220EC51333056300FCA411 /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EB81333056300FCA411 /* array.c */; };
                72220EC61333056300FCA411 /* array.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EB91333056300FCA411 /* array.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220EC71333056300FCA411 /* attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBA1333056300FCA411 /* attr.c */; };
+               72220EC71333056300FCA411 /* ppd-attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBA1333056300FCA411 /* ppd-attr.c */; };
                72220EC81333056300FCA411 /* auth.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBB1333056300FCA411 /* auth.c */; };
                72220EC91333056300FCA411 /* backchannel.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBC1333056300FCA411 /* backchannel.c */; };
                72220ECA1333056300FCA411 /* backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBD1333056300FCA411 /* backend.c */; };
                72220ECB1333056300FCA411 /* backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EBE1333056300FCA411 /* backend.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220ECC1333056300FCA411 /* conflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBF1333056300FCA411 /* conflicts.c */; };
+               72220ECC1333056300FCA411 /* ppd-conflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBF1333056300FCA411 /* ppd-conflicts.c */; };
                72220ECD1333056300FCA411 /* cups-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC01333056300FCA411 /* cups-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220ECE1333056300FCA411 /* cups.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC11333056300FCA411 /* cups.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220ECF1333056300FCA411 /* custom.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EC21333056300FCA411 /* custom.c */; };
+               72220ECF1333056300FCA411 /* ppd-custom.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EC21333056300FCA411 /* ppd-custom.c */; };
                72220ED01333056300FCA411 /* debug-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC31333056300FCA411 /* debug-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F0B133305BB00FCA411 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED1133305BB00FCA411 /* debug.c */; };
                72220F0C133305BB00FCA411 /* dest.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED2133305BB00FCA411 /* dest.c */; };
                72220F0D133305BB00FCA411 /* dir.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED3133305BB00FCA411 /* dir.c */; };
                72220F0E133305BB00FCA411 /* dir.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220ED4133305BB00FCA411 /* dir.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220F0F133305BB00FCA411 /* emit.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED5133305BB00FCA411 /* emit.c */; };
+               72220F0F133305BB00FCA411 /* ppd-emit.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED5133305BB00FCA411 /* ppd-emit.c */; };
                72220F10133305BB00FCA411 /* encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED6133305BB00FCA411 /* encode.c */; };
                72220F11133305BB00FCA411 /* file-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220ED7133305BB00FCA411 /* file-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F12133305BB00FCA411 /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED8133305BB00FCA411 /* file.c */; };
                72220F23133305BB00FCA411 /* language-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EE9133305BB00FCA411 /* language-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F24133305BB00FCA411 /* language.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEA133305BB00FCA411 /* language.c */; };
                72220F25133305BB00FCA411 /* language.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EEB133305BB00FCA411 /* language.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220F26133305BB00FCA411 /* localize.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEC133305BB00FCA411 /* localize.c */; };
-               72220F27133305BB00FCA411 /* mark.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EED133305BB00FCA411 /* mark.c */; };
+               72220F26133305BB00FCA411 /* ppd-localize.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEC133305BB00FCA411 /* ppd-localize.c */; };
+               72220F27133305BB00FCA411 /* ppd-mark.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EED133305BB00FCA411 /* ppd-mark.c */; };
                72220F28133305BB00FCA411 /* md5-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EEE133305BB00FCA411 /* md5-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F29133305BB00FCA411 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEF133305BB00FCA411 /* md5.c */; };
                72220F2A133305BB00FCA411 /* md5passwd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF0133305BB00FCA411 /* md5passwd.c */; };
                72220F2B133305BB00FCA411 /* notify.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF1133305BB00FCA411 /* notify.c */; };
                72220F2C133305BB00FCA411 /* options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF2133305BB00FCA411 /* options.c */; };
-               72220F2D133305BB00FCA411 /* page.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF3133305BB00FCA411 /* page.c */; };
+               72220F2D133305BB00FCA411 /* ppd-page.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF3133305BB00FCA411 /* ppd-page.c */; };
                72220F2E133305BB00FCA411 /* ppd-cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF4133305BB00FCA411 /* ppd-cache.c */; };
                72220F2F133305BB00FCA411 /* ppd-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EF5133305BB00FCA411 /* ppd-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F30133305BB00FCA411 /* ppd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF6133305BB00FCA411 /* ppd.c */; };
                72220FA713330B0C00FCA411 /* sysman.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220F8E13330B0C00FCA411 /* sysman.c */; };
                72220FB613330BCE00FCA411 /* filter.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220FB213330BCE00FCA411 /* filter.c */; };
                72220FB713330BCE00FCA411 /* mime.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220FB313330BCE00FCA411 /* mime.c */; };
-               72220FB813330BCE00FCA411 /* mime.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220FB413330BCE00FCA411 /* mime.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               72220FB813330BCE00FCA411 /* mime.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220FB413330BCE00FCA411 /* mime.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220FB913330BCE00FCA411 /* type.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220FB513330BCE00FCA411 /* type.c */; };
                72220FBA13330BEE00FCA411 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                72220FBF13330C1000FCA411 /* libcupsmime.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220FAC13330B2200FCA411 /* libcupsmime.dylib */; };
-               7234F4201378A16F00D3E9C9 /* array-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7234F41F1378A16F00D3E9C9 /* array-private.h */; };
+               7234F4201378A16F00D3E9C9 /* array-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7234F41F1378A16F00D3E9C9 /* array-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                724379081333E4A5009631B9 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                7243790D1333E4E3009631B9 /* ipp.c in Sources */ = {isa = PBXBuildFile; fileRef = 7243790A1333E4E3009631B9 /* ipp.c */; };
                7243790E1333E4E3009631B9 /* network.c in Sources */ = {isa = PBXBuildFile; fileRef = 7243790B1333E4E3009631B9 /* network.c */; };
                724379661333FF3B009631B9 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                724379C71333FFC7009631B9 /* usb.c in Sources */ = {isa = PBXBuildFile; fileRef = 724379C51333FFC7009631B9 /* usb.c */; };
                724379CB1334000E009631B9 /* ieee1284.c in Sources */ = {isa = PBXBuildFile; fileRef = 724379CA1334000E009631B9 /* ieee1284.c */; };
+               724FA52A1CC0370C0092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               724FA52B1CC0370C0092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               724FA52C1CC0370C0092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               724FA52D1CC0370C0092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               724FA52E1CC0370C0092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               724FA52F1CC0370C0092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               724FA5301CC0370C0092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA5361CC0372F0092477B /* testadmin.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF041192E3544001EF690 /* testadmin.c */; };
+               724FA53D1CC037370092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               724FA53E1CC037370092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               724FA53F1CC037370092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               724FA5401CC037370092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               724FA5411CC037370092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               724FA5421CC037370092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               724FA5431CC037370092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA5491CC037460092477B /* testarray.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF042192E3544001EF690 /* testarray.c */; };
+               724FA5501CC037500092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               724FA5511CC037500092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               724FA5521CC037500092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               724FA5531CC037500092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               724FA5541CC037500092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               724FA5551CC037500092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               724FA5561CC037500092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA55C1CC0375F0092477B /* testcache.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF043192E3544001EF690 /* testcache.c */; };
+               724FA5631CC037670092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               724FA5641CC037670092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               724FA5651CC037670092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               724FA5661CC037670092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               724FA5671CC037670092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               724FA5681CC037670092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               724FA5691CC037670092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA56F1CC037760092477B /* testconflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF044192E3544001EF690 /* testconflicts.c */; };
+               724FA5761CC037810092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA5771CC037810092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               724FA5781CC037810092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               724FA5791CC037810092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               724FA57A1CC037810092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               724FA57B1CC037810092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               724FA57C1CC037810092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               724FA5821CC0378E0092477B /* testfile.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF045192E3544001EF690 /* testfile.c */; };
+               724FA5891CC037980092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA58A1CC037980092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA58B1CC037980092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA58C1CC037980092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               724FA58D1CC037980092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               724FA58E1CC037980092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               724FA58F1CC037980092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA5951CC037A50092477B /* testi18n.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF046192E3544001EF690 /* testi18n.c */; };
+               724FA59C1CC037AA0092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA59D1CC037AA0092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA59E1CC037AA0092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA59F1CC037AA0092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               724FA5A01CC037AA0092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               724FA5A11CC037AA0092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               724FA5A21CC037AA0092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA5A81CC037B70092477B /* testipp.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF047192E3544001EF690 /* testipp.c */; };
+               724FA5AF1CC037C60092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA5B01CC037C60092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA5B11CC037C60092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA5B21CC037C60092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               724FA5B31CC037C60092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               724FA5B41CC037C60092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               724FA5B51CC037C60092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA5BB1CC037D30092477B /* testlang.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF048192E3544001EF690 /* testlang.c */; };
+               724FA5C21CC037D90092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA5C31CC037D90092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA5C41CC037D90092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA5C51CC037D90092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               724FA5C61CC037D90092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               724FA5C71CC037D90092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               724FA5C81CC037D90092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA5CE1CC037E50092477B /* testlpd.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF04D192E3602001EF690 /* testlpd.c */; };
+               724FA5D71CC037F00092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA5D81CC037F00092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA5D91CC037F00092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA5DA1CC037F00092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA5DB1CC037F00092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA5E21CC037FD0092477B /* testoptions.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF049192E3544001EF690 /* testoptions.c */; };
+               724FA5EB1CC038040092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA5EC1CC038040092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA5ED1CC038040092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA5EE1CC038040092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA5EF1CC038040092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA5F61CC0380F0092477B /* testppd.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF04A192E3544001EF690 /* testppd.c */; };
+               724FA5FF1CC038190092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6001CC038190092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6011CC038190092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6021CC038190092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA6031CC038190092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA60A1CC038250092477B /* testpwg.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF04B192E3544001EF690 /* testpwg.c */; };
+               724FA6131CC0382B0092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6141CC0382B0092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6151CC0382B0092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6161CC0382B0092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA6171CC0382B0092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA61E1CC0383B0092477B /* testraster.c in Sources */ = {isa = PBXBuildFile; fileRef = 27F89DA21B3AC43B00E5A4B7 /* testraster.c */; };
+               724FA6271CC038410092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6281CC038410092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6291CC038410092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA62A1CC038410092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA62B1CC038410092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA6321CC038510092477B /* testsnmp.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF04C192E3544001EF690 /* testsnmp.c */; };
+               724FA63B1CC038560092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA63C1CC038560092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA63D1CC038560092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA63E1CC038560092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA63F1CC038560092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA6461CC038650092477B /* testspeed.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF04E192E3602001EF690 /* testspeed.c */; };
+               724FA64F1CC0386E0092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6501CC0386E0092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6511CC0386E0092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6521CC0386E0092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA6531CC0386E0092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA65A1CC038790092477B /* testsub.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF04F192E3602001EF690 /* testsub.c */; };
+               724FA6661CC038A50092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6671CC038A50092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6681CC038A50092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6691CC038A50092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA66A1CC038A50092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA66B1CC038A50092477B /* libcupsmime.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220FAC13330B2200FCA411 /* libcupsmime.dylib */; };
+               724FA6711CC038B30092477B /* test1284.c in Sources */ = {isa = PBXBuildFile; fileRef = 724FA65B1CC0389F0092477B /* test1284.c */; };
+               724FA6781CC038BD0092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               724FA6791CC038BD0092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               724FA67A1CC038BD0092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               724FA67B1CC038BD0092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               724FA67C1CC038BD0092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               724FA67D1CC038BD0092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               724FA67E1CC038BD0092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6841CC038CA0092477B /* testbackend.c in Sources */ = {isa = PBXBuildFile; fileRef = 724FA65C1CC0389F0092477B /* testbackend.c */; };
+               724FA68D1CC038D90092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA68E1CC038D90092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA68F1CC038D90092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6901CC038D90092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA6911CC038D90092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA6981CC038E70092477B /* testsupplies.c in Sources */ = {isa = PBXBuildFile; fileRef = 724FA65D1CC0389F0092477B /* testsupplies.c */; };
+               724FA69F1CC039200092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               724FA6A01CC039200092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               724FA6A11CC039200092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               724FA6A21CC039200092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               724FA6A31CC039200092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               724FA6A41CC039200092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               724FA6A51CC039200092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6AB1CC0392E0092477B /* testcgi.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF03D192E3498001EF690 /* testcgi.c */; };
+               724FA6B21CC0393E0092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6B31CC0393E0092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6B41CC0393E0092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6B51CC0393E0092477B /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
+               724FA6B61CC0393E0092477B /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               724FA6B71CC0393E0092477B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EC1536161C005426E1 /* libz.dylib */; };
+               724FA6B81CC0393E0092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA6BE1CC0394C0092477B /* testhi.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF03E192E3498001EF690 /* testhi.c */; };
+               724FA6C71CC0395A0092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6C81CC0395A0092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6C91CC0395A0092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6CA1CC0395A0092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA6CB1CC0395A0092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA6D21CC039680092477B /* testtemplate.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF03F192E3498001EF690 /* testtemplate.c */; };
+               724FA6E01CC039DE0092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6E11CC039DE0092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6E21CC039DE0092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6E31CC039DE0092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA6E41CC039DE0092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA6EB1CC039EB0092477B /* testnotify.c in Sources */ = {isa = PBXBuildFile; fileRef = 724FA6D71CC039D00092477B /* testnotify.c */; };
+               724FA6F51CC03A210092477B /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               724FA6F61CC03A210092477B /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
+               724FA6F71CC03A210092477B /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
+               724FA6F81CC03A210092477B /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
+               724FA6F91CC03A210092477B /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
+               724FA7001CC03A2F0092477B /* testcatalog.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 724FA6EC1CC03A1D0092477B /* testcatalog.cxx */; };
+               724FA7051CC03A490092477B /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 72F75A691336FA8A004BB496 /* error.c */; };
+               724FA7061CC03A490092477B /* interpret.c in Sources */ = {isa = PBXBuildFile; fileRef = 72F75A6A1336FA8A004BB496 /* interpret.c */; };
+               724FA7071CC03A490092477B /* raster.c in Sources */ = {isa = PBXBuildFile; fileRef = 72F75A6B1336FA8A004BB496 /* raster.c */; };
+               724FA70B1CC03A490092477B /* raster.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EFA133305BB00FCA411 /* raster.h */; settings = {ATTRIBUTES = (Public, ); }; };
+               724FA7141CC03A990092477B /* filter.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220FB213330BCE00FCA411 /* filter.c */; };
+               724FA7151CC03A990092477B /* mime.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220FB313330BCE00FCA411 /* mime.c */; };
+               724FA7161CC03A990092477B /* type.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220FB513330BCE00FCA411 /* type.c */; };
+               724FA71A1CC03A990092477B /* mime.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220FB413330BCE00FCA411 /* mime.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA71B1CC03A990092477B /* mime-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7271883C1374AB14001A2036 /* mime-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA7241CC03AAF0092477B /* ppdc-array.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5F51333315100317ECB /* ppdc-array.cxx */; };
+               724FA7251CC03AAF0092477B /* ppdc-attr.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5F61333315100317ECB /* ppdc-attr.cxx */; };
+               724FA7261CC03AAF0092477B /* ppdc-catalog.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5F71333315100317ECB /* ppdc-catalog.cxx */; };
+               724FA7271CC03AAF0092477B /* ppdc-choice.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5F81333315100317ECB /* ppdc-choice.cxx */; };
+               724FA7281CC03AAF0092477B /* ppdc-constraint.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5F91333315100317ECB /* ppdc-constraint.cxx */; };
+               724FA7291CC03AAF0092477B /* ppdc-driver.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5FA1333315100317ECB /* ppdc-driver.cxx */; };
+               724FA72A1CC03AAF0092477B /* ppdc-file.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5FB1333315100317ECB /* ppdc-file.cxx */; };
+               724FA72B1CC03AAF0092477B /* ppdc-filter.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5FC1333315100317ECB /* ppdc-filter.cxx */; };
+               724FA72C1CC03AAF0092477B /* ppdc-font.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5FD1333315100317ECB /* ppdc-font.cxx */; };
+               724FA72D1CC03AAF0092477B /* ppdc-group.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5FE1333315100317ECB /* ppdc-group.cxx */; };
+               724FA72E1CC03AAF0092477B /* ppdc-import.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF5FF1333315100317ECB /* ppdc-import.cxx */; };
+               724FA72F1CC03AAF0092477B /* ppdc-mediasize.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6001333315100317ECB /* ppdc-mediasize.cxx */; };
+               724FA7301CC03AAF0092477B /* ppdc-message.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6011333315100317ECB /* ppdc-message.cxx */; };
+               724FA7311CC03AAF0092477B /* ppdc-option.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6021333315100317ECB /* ppdc-option.cxx */; };
+               724FA7321CC03AAF0092477B /* ppdc-profile.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6041333315100317ECB /* ppdc-profile.cxx */; };
+               724FA7331CC03AAF0092477B /* ppdc-shared.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6051333315100317ECB /* ppdc-shared.cxx */; };
+               724FA7341CC03AAF0092477B /* ppdc-source.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6061333315100317ECB /* ppdc-source.cxx */; };
+               724FA7351CC03AAF0092477B /* ppdc-string.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6071333315100317ECB /* ppdc-string.cxx */; };
+               724FA7361CC03AAF0092477B /* ppdc-variable.cxx in Sources */ = {isa = PBXBuildFile; fileRef = 274FF6081333315100317ECB /* ppdc-variable.cxx */; };
+               724FA73B1CC03AAF0092477B /* ppdc.h in Headers */ = {isa = PBXBuildFile; fileRef = 274FF6091333315100317ECB /* ppdc.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA73C1CC03AAF0092477B /* ppdc-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 274FF6031333315100317ECB /* ppdc-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA7491CC03ACC0092477B /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
+               724FA7511CC03AF20092477B /* help-index.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF033192E3498001EF690 /* help-index.c */; };
+               724FA7521CC03AF20092477B /* help.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF035192E3498001EF690 /* help.c */; };
+               724FA7531CC03AF20092477B /* html.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF036192E3498001EF690 /* html.c */; };
+               724FA7541CC03AF20092477B /* ipp-var.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF037192E3498001EF690 /* ipp-var.c */; };
+               724FA7551CC03AF20092477B /* search.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF03B192E3498001EF690 /* search.c */; };
+               724FA7561CC03AF20092477B /* template.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF03C192E3498001EF690 /* template.c */; };
+               724FA7571CC03AF20092477B /* var.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF040192E3498001EF690 /* var.c */; };
+               724FA75D1CC03AF60092477B /* help-index.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF033192E3498001EF690 /* help-index.c */; };
+               724FA75E1CC03AF60092477B /* help.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF035192E3498001EF690 /* help.c */; };
+               724FA75F1CC03AF60092477B /* html.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF036192E3498001EF690 /* html.c */; };
+               724FA7601CC03AF60092477B /* ipp-var.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF037192E3498001EF690 /* ipp-var.c */; };
+               724FA7611CC03AF60092477B /* search.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF03B192E3498001EF690 /* search.c */; };
+               724FA7621CC03AF60092477B /* template.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF03C192E3498001EF690 /* template.c */; };
+               724FA7631CC03AF60092477B /* var.c in Sources */ = {isa = PBXBuildFile; fileRef = 727EF040192E3498001EF690 /* var.c */; };
+               724FA76C1CC03B4D0092477B /* cgi-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 727EF030192E3498001EF690 /* cgi-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA76D1CC03B4D0092477B /* cgi.h in Headers */ = {isa = PBXBuildFile; fileRef = 727EF031192E3498001EF690 /* cgi.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA76E1CC03B640092477B /* raster-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2767FC76192696A0000F61D3 /* raster-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA76F1CC03B820092477B /* cgi-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 727EF030192E3498001EF690 /* cgi-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA7701CC03B820092477B /* cgi.h in Headers */ = {isa = PBXBuildFile; fileRef = 727EF031192E3498001EF690 /* cgi.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               724FA7711CC03B920092477B /* raster-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 2767FC76192696A0000F61D3 /* raster-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                7258EAED134594EB009286F1 /* rastertopwg.c in Sources */ = {isa = PBXBuildFile; fileRef = 7258EAEC134594EB009286F1 /* rastertopwg.c */; };
                7258EAF413459B6D009286F1 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };
                7258EAF513459B6D009286F1 /* libcupsimage.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72F75A611336F9A3004BB496 /* libcupsimage.dylib */; };
                726AD702135E8A90002C930D /* ippserver.c in Sources */ = {isa = PBXBuildFile; fileRef = 726AD701135E8A90002C930D /* ippserver.c */; };
-               7271883D1374AB14001A2036 /* mime-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7271883C1374AB14001A2036 /* mime-private.h */; };
+               7271883D1374AB14001A2036 /* mime-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7271883C1374AB14001A2036 /* mime-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                727AD5B719100A58009F6862 /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 727AD5B619100A58009F6862 /* tls.c */; };
                727AD5B819100A58009F6862 /* tls.c in Sources */ = {isa = PBXBuildFile; fileRef = 727AD5B619100A58009F6862 /* tls.c */; };
+               7284F9F01BFCCDB10026F886 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 7284F9EF1BFCCD940026F886 /* hash.c */; };
+               7284F9F11BFCCDB20026F886 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = 7284F9EF1BFCCD940026F886 /* hash.c */; };
                728FB7E91536161C005426E1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
                728FB7EA1536161C005426E1 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
                728FB7EB1536161C005426E1 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; };
                728FB7EE15361642005426E1 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
                728FB7F11536167A005426E1 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
                728FB7F21536167A005426E1 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               72A8B3D71C188CB800A1A547 /* ppd-util.c in Sources */ = {isa = PBXBuildFile; fileRef = 72A8B3D61C188BDE00A1A547 /* ppd-util.c */; };
+               72A8B3D81C188CB900A1A547 /* ppd-util.c in Sources */ = {isa = PBXBuildFile; fileRef = 72A8B3D61C188BDE00A1A547 /* ppd-util.c */; };
                72BFD5FB191AF0A30005DA37 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
                72BFD5FC191AF0A30005DA37 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
                72BFD5FD191AF0A30005DA37 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
                        remoteGlobalIDString = 270CCDA6135E3C9E00007BE2;
                        remoteInfo = testmime;
                };
-               270CCDB5135E3CF700007BE2 /* PBXContainerItemProxy */ = {
-                       isa = PBXContainerItemProxy;
-                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
-                       proxyType = 1;
-                       remoteGlobalIDString = 72220FAB13330B2200FCA411;
-                       remoteInfo = libcupsmime;
-               };
                270CCDB7135E3CFD00007BE2 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        remoteGlobalIDString = 274FF6891333B1C400317ECB;
                        remoteInfo = libcups_static;
                };
-               273BF6C81333B5410022CAAB /* PBXContainerItemProxy */ = {
+               270D02151D707E0200EA9403 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 274FF6891333B1C400317ECB;
                        remoteInfo = libcups_static;
                };
-               273BF6DD1333B6370022CAAB /* PBXContainerItemProxy */ = {
+               270D02271D707E5100EA9403 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 273BF6BC1333B5000022CAAB;
-                       remoteInfo = testcups;
+                       remoteGlobalIDString = 270D02131D707E0200EA9403;
+                       remoteInfo = testcreds;
                };
-               274EE25D1A03EDCA003213D1 /* PBXContainerItemProxy */ = {
+               271284901CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 274FF6891333B1C400317ECB;
                        remoteInfo = libcups_static;
                };
-               274EE26E1A03EDCB003213D1 /* PBXContainerItemProxy */ = {
+               271284921CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
-                       remoteInfo = libcups_static;
+                       remoteGlobalIDString = 724FA7581CC03AF60092477B;
+                       remoteInfo = libcupscgi_static;
                };
-               274EE2811A03EEE0003213D1 /* PBXContainerItemProxy */ = {
+               271284941CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274EE25B1A03EDCA003213D1;
-                       remoteInfo = ippinfra;
+                       remoteGlobalIDString = 724FA7011CC03A490092477B;
+                       remoteInfo = libcupsimage_static;
                };
-               274EE2831A03EEE0003213D1 /* PBXContainerItemProxy */ = {
+               271284961CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274EE26C1A03EDCB003213D1;
-                       remoteInfo = ippproxy;
+                       remoteGlobalIDString = 724FA7101CC03A990092477B;
+                       remoteInfo = libcupsmime_static;
                };
-               274EE2851A03EEEE003213D1 /* PBXContainerItemProxy */ = {
+               271284981CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274EE25B1A03EDCA003213D1;
-                       remoteInfo = ippinfra;
+                       remoteGlobalIDString = 724FA7201CC03AAF0092477B;
+                       remoteInfo = libcupsppdc_static;
                };
-               274EE2871A03EEEE003213D1 /* PBXContainerItemProxy */ = {
+               2712849A1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274EE26C1A03EDCB003213D1;
-                       remoteInfo = ippproxy;
+                       remoteGlobalIDString = 724FA65E1CC038A50092477B;
+                       remoteInfo = test1284;
                };
-               274FF5DB13332CF900317ECB /* PBXContainerItemProxy */ = {
+               2712849C1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA5241CC0370C0092477B;
+                       remoteInfo = testadmin;
                };
-               274FF5E213332D4300317ECB /* PBXContainerItemProxy */ = {
+               2712849E1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA5371CC037370092477B;
+                       remoteInfo = testarray;
                };
-               274FF5E413332D4300317ECB /* PBXContainerItemProxy */ = {
+               271284A01CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220FAB13330B2200FCA411;
-                       remoteInfo = libcupsmime;
+                       remoteGlobalIDString = 724FA6721CC038BD0092477B;
+                       remoteInfo = testbackend;
                };
-               274FF5E613332D4300317ECB /* PBXContainerItemProxy */ = {
+               271284A21CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220F5A13330A5A00FCA411;
-                       remoteInfo = cupsd;
+                       remoteGlobalIDString = 724FA54A1CC037500092477B;
+                       remoteInfo = testcache;
                };
-               274FF5E813332D4300317ECB /* PBXContainerItemProxy */ = {
+               271284A41CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF5CB13332B1F00317ECB;
-                       remoteInfo = "cups-driverd";
+                       remoteGlobalIDString = 724FA6ED1CC03A210092477B;
+                       remoteInfo = testcatalog;
                };
-               274FF5F2133330FD00317ECB /* PBXContainerItemProxy */ = {
+               271284A61CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA6991CC039200092477B;
+                       remoteInfo = testcgi;
                };
-               274FF61F1333316200317ECB /* PBXContainerItemProxy */ = {
+               271284A81CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
-                       remoteInfo = libcupsppdc;
+                       remoteGlobalIDString = 724FA55D1CC037670092477B;
+                       remoteInfo = testconflicts;
                };
-               274FF621133331D300317ECB /* PBXContainerItemProxy */ = {
+               271284AA1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
-                       remoteInfo = libcupsppdc;
+                       remoteGlobalIDString = 724FA5701CC037810092477B;
+                       remoteInfo = testfile;
                };
-               274FF6331333335200317ECB /* PBXContainerItemProxy */ = {
+               271284AC1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA6AC1CC0393E0092477B;
+                       remoteInfo = testhi;
                };
-               274FF6381333348400317ECB /* PBXContainerItemProxy */ = {
+               271284AE1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF6281333333600317ECB;
-                       remoteInfo = "cups-deviced";
+                       remoteGlobalIDString = 724FA5831CC037980092477B;
+                       remoteInfo = testi18n;
                };
-               274FF647133335A300317ECB /* PBXContainerItemProxy */ = {
+               271284B01CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF63D1333358B00317ECB;
-                       remoteInfo = "cups-exec";
+                       remoteGlobalIDString = 724FA5961CC037AA0092477B;
+                       remoteInfo = testipp;
                };
-               274FF659133339D900317ECB /* PBXContainerItemProxy */ = {
+               271284B21CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA5A91CC037C60092477B;
+                       remoteInfo = testlang;
                };
-               274FF65D13333A3400317ECB /* PBXContainerItemProxy */ = {
+               271284B41CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF64E133339C400317ECB;
-                       remoteInfo = "cups-lpd";
+                       remoteGlobalIDString = 724FA5BC1CC037D90092477B;
+                       remoteInfo = testlpd;
                };
-               274FF68113333B3C00317ECB /* PBXContainerItemProxy */ = {
+               271284B61CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA6D81CC039DE0092477B;
+                       remoteInfo = testnotify;
                };
-               274FF68313333B3C00317ECB /* PBXContainerItemProxy */ = {
+               271284B81CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220FAB13330B2200FCA411;
-                       remoteInfo = libcupsmime;
+                       remoteGlobalIDString = 724FA5CF1CC037F00092477B;
+                       remoteInfo = testoptions;
                };
-               274FF6E11333B33F00317ECB /* PBXContainerItemProxy */ = {
+               271284BA1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF67713333B2F00317ECB;
-                       remoteInfo = cupsfilter;
+                       remoteGlobalIDString = 724FA5E31CC038040092477B;
+                       remoteInfo = testppd;
                };
-               276683651337A9D6000D33D0 /* PBXContainerItemProxy */ = {
+               271284BC1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA5F71CC038190092477B;
+                       remoteInfo = testpwg;
                };
-               2766836A1337AA25000D33D0 /* PBXContainerItemProxy */ = {
+               271284BE1CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 2766835B1337A9B6000D33D0;
-                       remoteInfo = cupsctl;
+                       remoteGlobalIDString = 724FA60B1CC0382B0092477B;
+                       remoteInfo = testraster;
                };
-               276683AD1337ACF9000D33D0 /* PBXContainerItemProxy */ = {
+               271284C01CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA61F1CC038410092477B;
+                       remoteInfo = testsnmp;
                };
-               276683AF1337ACF9000D33D0 /* PBXContainerItemProxy */ = {
+               271284C21CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
-                       remoteInfo = libcupsppdc;
+                       remoteGlobalIDString = 724FA6331CC038560092477B;
+                       remoteInfo = testspeed;
                };
-               276683B31337AD18000D33D0 /* PBXContainerItemProxy */ = {
+               271284C41CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA6471CC0386E0092477B;
+                       remoteInfo = testsub;
                };
-               276683B51337AD18000D33D0 /* PBXContainerItemProxy */ = {
+               271284C61CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
-                       remoteInfo = libcupsppdc;
+                       remoteGlobalIDString = 724FA6851CC038D90092477B;
+                       remoteInfo = testsupplies;
                };
-               276683BB1337AE49000D33D0 /* PBXContainerItemProxy */ = {
+               271284C81CC11FA500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA6BF1CC0395A0092477B;
+                       remoteInfo = testtemplate;
                };
-               276683BD1337AE49000D33D0 /* PBXContainerItemProxy */ = {
+               271284CA1CC122D000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
-                       remoteInfo = libcupsppdc;
+                       remoteGlobalIDString = 724FA7581CC03AF60092477B;
+                       remoteInfo = libcupscgi_static;
                };
-               276683BF1337B1AD000D33D0 /* PBXContainerItemProxy */ = {
+               271284CC1CC122E400E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA7201CC03AAF0092477B;
+                       remoteInfo = libcupsppdc_static;
                };
-               276683C11337B1AD000D33D0 /* PBXContainerItemProxy */ = {
+               271284CE1CC122ED00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
-                       remoteInfo = libcupsppdc;
+                       remoteGlobalIDString = 724FA7581CC03AF60092477B;
+                       remoteInfo = libcupscgi_static;
                };
-               276683C51337B1BC000D33D0 /* PBXContainerItemProxy */ = {
+               271284D01CC122F900E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 724FA7011CC03A490092477B;
+                       remoteInfo = libcupsimage_static;
                };
-               276683C71337B1BC000D33D0 /* PBXContainerItemProxy */ = {
+               271284D31CC1232500E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
-                       remoteInfo = libcupsppdc;
+                       remoteGlobalIDString = 724FA7581CC03AF60092477B;
+                       remoteInfo = libcupscgi_static;
                };
-               276683D61337B24A000D33D0 /* PBXContainerItemProxy */ = {
+               271284D51CC1234D00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 2766836F1337AC79000D33D0;
-                       remoteInfo = ppdc;
+                       remoteGlobalIDString = 724FA7101CC03A990092477B;
+                       remoteInfo = libcupsmime_static;
                };
-               276683D81337B24A000D33D0 /* PBXContainerItemProxy */ = {
+               271284E31CC1261900E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 2766837C1337AC8C000D33D0;
-                       remoteInfo = ppdhtml;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               276683DA1337B24A000D33D0 /* PBXContainerItemProxy */ = {
+               271284F01CC1264B00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 276683891337AC97000D33D0;
-                       remoteInfo = ppdi;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               276683DC1337B24A000D33D0 /* PBXContainerItemProxy */ = {
+               271284FD1CC1265D00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 276683961337ACA2000D33D0;
-                       remoteInfo = ppdmerge;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               276683DE1337B24A000D33D0 /* PBXContainerItemProxy */ = {
+               2712850A1CC1267A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 276683A31337ACAB000D33D0;
-                       remoteInfo = ppdpo;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               276683E01337B299000D33D0 /* PBXContainerItemProxy */ = {
+               271285171CC1269700E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72220EAD1333047D00FCA411;
                        remoteInfo = libcups;
                };
-               276683E31337B2BA000D33D0 /* PBXContainerItemProxy */ = {
+               271285241CC126AA00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72F75A601336F9A3004BB496;
-                       remoteInfo = libcupsimage;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               276683FB1337F7B3000D33D0 /* PBXContainerItemProxy */ = {
+               271285311CC1270B00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72220EAD1333047D00FCA411;
                        remoteInfo = libcups;
                };
-               276683FE1337F7C5000D33D0 /* PBXContainerItemProxy */ = {
+               2712853E1CC1271E00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 276683EF1337F78E000D33D0;
-                       remoteInfo = ipptool;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               2766840D1337FA31000D33D0 /* PBXContainerItemProxy */ = {
+               2712854B1CC1272D00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72220EAD1333047D00FCA411;
                        remoteInfo = libcups;
                };
-               276684121337FA8D000D33D0 /* PBXContainerItemProxy */ = {
+               271285581CC1274300E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 276684031337FA1D000D33D0;
-                       remoteInfo = cupsaddsmb;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               2767FC4819266A0D000F61D3 /* PBXContainerItemProxy */ = {
+               271285651CC1275200E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
-                       remoteInfo = libcups_static;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               2767FC5319267469000F61D3 /* PBXContainerItemProxy */ = {
+               271285721CC1276400E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 276683EF1337F78E000D33D0;
-                       remoteInfo = ipptool;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               2767FC5519267469000F61D3 /* PBXContainerItemProxy */ = {
+               2712857D1CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 2767FC4619266A0D000F61D3;
-                       remoteInfo = testdest;
+                       remoteGlobalIDString = 271284E11CC1261900E517C7;
+                       remoteInfo = cancel;
                };
-               278C58D5136B641D00836530 /* PBXContainerItemProxy */ = {
+               2712857F1CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 278C58CA136B640300836530;
-                       remoteInfo = testhttp;
+                       remoteGlobalIDString = 271284EE1CC1264B00E517C7;
+                       remoteInfo = cupsaccept;
                };
-               278C58D7136B642F00836530 /* PBXContainerItemProxy */ = {
+               271285811CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
-                       remoteInfo = libcups_static;
+                       remoteGlobalIDString = 271284FB1CC1265D00E517C7;
+                       remoteInfo = cupstestdsc;
                };
-               27A034831A8BDC4A00650675 /* PBXContainerItemProxy */ = {
+               271285831CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 271285081CC1267A00E517C7;
+                       remoteInfo = lp;
                };
-               27A034861A8BDC6900650675 /* PBXContainerItemProxy */ = {
+               271285851CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 27A0347A1A8BDB1200650675;
-                       remoteInfo = lpadmin;
+                       remoteGlobalIDString = 271285151CC1269700E517C7;
+                       remoteInfo = lpc;
                };
-               720DD6CE1358FD790064AA82 /* PBXContainerItemProxy */ = {
+               271285871CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 271285221CC126AA00E517C7;
+                       remoteInfo = lpinfo;
                };
-               720DD6D01358FDBE0064AA82 /* PBXContainerItemProxy */ = {
+               271285891CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 720DD6C11358FD5F0064AA82;
-                       remoteInfo = snmp;
+                       remoteGlobalIDString = 2712852F1CC1270B00E517C7;
+                       remoteInfo = lpmove;
                };
-               72220F6413330A6500FCA411 /* PBXContainerItemProxy */ = {
+               2712858B1CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 2712853C1CC1271E00E517C7;
+                       remoteInfo = lpoptions;
                };
-               72220FBB13330C0500FCA411 /* PBXContainerItemProxy */ = {
+               2712858D1CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 271285491CC1272D00E517C7;
+                       remoteInfo = lpq;
                };
-               72220FBD13330C0B00FCA411 /* PBXContainerItemProxy */ = {
+               2712858F1CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220FAB13330B2200FCA411;
-                       remoteInfo = libcupsmime;
+                       remoteGlobalIDString = 271285561CC1274300E517C7;
+                       remoteInfo = lpr;
                };
-               724379061333E49B009631B9 /* PBXContainerItemProxy */ = {
+               271285911CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 271285631CC1275200E517C7;
+                       remoteInfo = lprm;
                };
-               724379101333E4EA009631B9 /* PBXContainerItemProxy */ = {
+               271285931CC1295A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 724378FC1333E43E009631B9;
-                       remoteInfo = ipp;
+                       remoteGlobalIDString = 271285701CC1276400E517C7;
+                       remoteInfo = lpstat;
                };
-               724379251333E932009631B9 /* PBXContainerItemProxy */ = {
+               271285971CC12D1300E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72220EAD1333047D00FCA411;
                        remoteInfo = libcups;
                };
-               7243792A1333E962009631B9 /* PBXContainerItemProxy */ = {
+               271285A51CC12D3A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 724379171333E532009631B9;
-                       remoteInfo = lpd;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               724379391333FB95009631B9 /* PBXContainerItemProxy */ = {
+               271285B31CC12D4E00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72220EAD1333047D00FCA411;
                        remoteInfo = libcups;
                };
-               7243793E1333FD23009631B9 /* PBXContainerItemProxy */ = {
+               271285C11CC12D5E00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 7243792F1333FB85009631B9;
-                       remoteInfo = socket;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               724379521333FECE009631B9 /* PBXContainerItemProxy */ = {
+               271285CF1CC12DBF00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 724379461333FEA9009631B9;
-                       remoteInfo = dnssd;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               724379541333FEFE009631B9 /* PBXContainerItemProxy */ = {
+               271285DC1CC12DDF00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72220EAD1333047D00FCA411;
                        remoteInfo = libcups;
                };
-               724379641333FF2E009631B9 /* PBXContainerItemProxy */ = {
+               271285E91CC12E2D00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72220EAD1333047D00FCA411;
                        remoteInfo = libcups;
                };
-               724379C21333FF7D009631B9 /* PBXContainerItemProxy */ = {
+               271285F71CC12EEB00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 7243795A1333FF1D009631B9;
-                       remoteInfo = usb;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               7258EAEE13459ADA009286F1 /* PBXContainerItemProxy */ = {
+               271286021CC12F0100E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 7258EAE1134594C4009286F1;
-                       remoteInfo = rastertopwg;
+                       remoteGlobalIDString = 72F75A601336F9A3004BB496;
+                       remoteInfo = libcupsimage;
                };
-               7258EAF013459B67009286F1 /* PBXContainerItemProxy */ = {
+               271286071CC12F0B00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72F75A601336F9A3004BB496;
+                       remoteInfo = libcupsimage;
+               };
+               271286091CC12F0B00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72220EAD1333047D00FCA411;
                        remoteInfo = libcups;
                };
-               7258EAF213459B67009286F1 /* PBXContainerItemProxy */ = {
+               271286171CC12F1A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
                        remoteGlobalIDString = 72F75A601336F9A3004BB496;
                        remoteInfo = libcupsimage;
                };
-               726AD703135E8AA1002C930D /* PBXContainerItemProxy */ = {
+               271286191CC12F1A00E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 726AD6F6135E88F0002C930D;
-                       remoteInfo = ippserver;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               726AD705135E8AC5002C930D /* PBXContainerItemProxy */ = {
+               271286341CC12F9000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
-                       remoteInfo = libcups_static;
+                       remoteGlobalIDString = 271285951CC12D1300E517C7;
+                       remoteInfo = admin.cgi;
                };
-               72BEA8D319AFA89C0085F0F3 /* PBXContainerItemProxy */ = {
+               271286361CC12F9000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 726AD6F6135E88F0002C930D;
-                       remoteInfo = ippserver;
+                       remoteGlobalIDString = 271285A31CC12D3A00E517C7;
+                       remoteInfo = classes.cgi;
                };
-               72BEA8D519AFA8A00085F0F3 /* PBXContainerItemProxy */ = {
+               271286381CC12F9000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72CF95E618A19134000FCAE4;
-                       remoteInfo = ippfind;
+                       remoteGlobalIDString = 271285CD1CC12DBF00E517C7;
+                       remoteInfo = commandtops;
                };
-               72BEA8D719AFA8BB0085F0F3 /* PBXContainerItemProxy */ = {
+               2712863A1CC12F9000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
-                       remoteInfo = libcups_static;
+                       remoteGlobalIDString = 271285DA1CC12DDF00E517C7;
+                       remoteInfo = gziptoany;
                };
-               72CF95E818A19134000FCAE4 /* PBXContainerItemProxy */ = {
+               2712863C1CC12F9000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 271285B11CC12D4E00E517C7;
+                       remoteInfo = jobs.cgi;
                };
-               72F75A651336FA30004BB496 /* PBXContainerItemProxy */ = {
+               2712863E1CC12F9000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
-                       remoteInfo = libcups;
+                       remoteGlobalIDString = 271285BF1CC12D5E00E517C7;
+                       remoteInfo = printers.cgi;
                };
-               72F75A701336FACD004BB496 /* PBXContainerItemProxy */ = {
+               271286401CC12F9000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72F75A601336F9A3004BB496;
-                       remoteInfo = libcupsimage;
+                       remoteGlobalIDString = 271285E71CC12E2D00E517C7;
+                       remoteInfo = pstops;
                };
-               72F75A721336FACD004BB496 /* PBXContainerItemProxy */ = {
+               271286421CC12F9000E517C7 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        proxyType = 1;
-                       remoteGlobalIDString = 72F75A511336F950004BB496;
-                       remoteInfo = cupstestppd;
+                       remoteGlobalIDString = 271285F51CC12EEB00E517C7;
+                       remoteInfo = rastertoepson;
                };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
-               270CCDA5135E3C9E00007BE2 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
-               };
-               273BF6BB1333B5000022CAAB /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286441CC12F9000E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286051CC12F0B00E517C7;
+                       remoteInfo = rastertohp;
                };
-               274EE2671A03EDCA003213D1 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286461CC12F9000E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286151CC12F1A00E517C7;
+                       remoteInfo = rastertolabel;
                };
-               274EE2781A03EDCB003213D1 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286591CC1309000E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
                };
-               274FF5CA13332B1F00317ECB /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               2712866D1CC1310E00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 724FA7011CC03A490092477B;
+                       remoteInfo = libcupsimage_static;
                };
-               274FF6271333333600317ECB /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               2712866F1CC1310E00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
                };
-               274FF63C1333358B00317ECB /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286891CC13DC000E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
                };
-               274FF64D133339C400317ECB /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               2712869A1CC13DF100E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
                };
-               274FF67613333B2F00317ECB /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286AB1CC13DFF00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
                };
-               2766835A1337A9B6000D33D0 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286BC1CC13E2100E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               2766836E1337AC79000D33D0 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286CD1CC13E5B00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               2766837B1337AC8C000D33D0 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286DB1CC13EF400E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286981CC13DF100E517C7;
+                       remoteInfo = po2strings;
                };
-               276683881337AC97000D33D0 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286DD1CC13EF400E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286A91CC13DFF00E517C7;
+                       remoteInfo = strings2po;
                };
-               276683951337ACA2000D33D0 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286DF1CC13EF400E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286571CC1309000E517C7;
+                       remoteInfo = tlscheck;
                };
-               276683A21337ACAB000D33D0 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286E11CC13F0100E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286BA1CC13E2100E517C7;
+                       remoteInfo = bcp;
                };
-               276683EE1337F78E000D33D0 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286E31CC13F0100E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286CB1CC13E5B00E517C7;
+                       remoteInfo = tbcp;
                };
-               276684021337FA1D000D33D0 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286E71CC13F2000E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               2767FC4C19266A0D000F61D3 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271286F71CC13F3F00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               278C58C9136B640300836530 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271287051CC13F8F00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286E51CC13F2000E517C7;
+                       remoteInfo = mailto;
                };
-               27A034791A8BDB1200650675 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271287071CC13F8F00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271286F51CC13F3F00E517C7;
+                       remoteInfo = rss;
                };
-               720DD6C01358FD5F0064AA82 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               2712870B1CC13FAB00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
                };
-               72220F5913330A5A00FCA411 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               2712871B1CC13FFA00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 271287091CC13FAB00E517C7;
+                       remoteInfo = mantohtml;
                };
-               724378FB1333E43E009631B9 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               2712872E1CC140DF00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
                };
-               724379161333E532009631B9 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271287301CC140DF00E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 724FA7201CC03AAF0092477B;
+                       remoteInfo = libcupsppdc_static;
                };
-               7243792E1333FB85009631B9 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               271287351CC1411000E517C7 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 2712871E1CC140BE00E517C7;
+                       remoteInfo = genstrings;
                };
-               724379451333FEA9009631B9 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               273BF6C81333B5410022CAAB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
                };
-               724379591333FF1D009631B9 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               273BF6DD1333B6370022CAAB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 273BF6BC1333B5000022CAAB;
+                       remoteInfo = testcups;
                };
-               7258EAE0134594C4009286F1 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               274FF5DB13332CF900317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               726AD6F5135E88F0002C930D /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               274FF5E213332D4300317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
                };
-               72CF95ED18A19134000FCAE4 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               274FF5E413332D4300317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220FAB13330B2200FCA411;
+                       remoteInfo = libcupsmime;
                };
-               72F75A501336F950004BB496 /* CopyFiles */ = {
-                       isa = PBXCopyFilesBuildPhase;
-                       buildActionMask = 2147483647;
-                       dstPath = /usr/share/man/man1/;
-                       dstSubfolderSpec = 0;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 1;
+               274FF5E613332D4300317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220F5A13330A5A00FCA411;
+                       remoteInfo = cupsd;
                };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
-               270B267D17F5C06700C8A3A9 /* tls-darwin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-darwin.c"; path = "../cups/tls-darwin.c"; sourceTree = "<group>"; };
-               270B267E17F5C06700C8A3A9 /* tls-gnutls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-gnutls.c"; path = "../cups/tls-gnutls.c"; sourceTree = "<group>"; };
-               270B268117F5C5D600C8A3A9 /* tls-sspi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-sspi.c"; path = "../cups/tls-sspi.c"; sourceTree = "<group>"; };
-               270CCDA7135E3C9E00007BE2 /* testmime */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testmime; sourceTree = BUILT_PRODUCTS_DIR; };
-               270CCDBB135E3D3E00007BE2 /* testmime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testmime.c; path = ../scheduler/testmime.c; sourceTree = "<group>"; };
-               2732E089137A3F5200FAFEF6 /* cancel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cancel.c; path = ../systemv/cancel.c; sourceTree = "<group>"; };
-               2732E08A137A3F5200FAFEF6 /* cupsaccept.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cupsaccept.c; path = ../systemv/cupsaccept.c; sourceTree = "<group>"; };
-               2732E08B137A3F5200FAFEF6 /* cupstestdsc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cupstestdsc.c; path = ../systemv/cupstestdsc.c; sourceTree = "<group>"; };
-               2732E08C137A3F5200FAFEF6 /* lp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lp.c; path = ../systemv/lp.c; sourceTree = "<group>"; };
-               2732E08D137A3F5200FAFEF6 /* lpadmin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpadmin.c; path = ../systemv/lpadmin.c; sourceTree = "<group>"; };
-               2732E08E137A3F5200FAFEF6 /* lpinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpinfo.c; path = ../systemv/lpinfo.c; sourceTree = "<group>"; };
-               2732E08F137A3F5200FAFEF6 /* lpmove.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpmove.c; path = ../systemv/lpmove.c; sourceTree = "<group>"; };
-               2732E090137A3F5200FAFEF6 /* lpoptions.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpoptions.c; path = ../systemv/lpoptions.c; sourceTree = "<group>"; };
-               2732E092137A3F5200FAFEF6 /* lpstat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpstat.c; path = ../systemv/lpstat.c; sourceTree = "<group>"; };
-               273BF6BD1333B5000022CAAB /* testcups */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testcups; sourceTree = BUILT_PRODUCTS_DIR; };
-               273BF6C61333B5370022CAAB /* testcups.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testcups.c; path = ../cups/testcups.c; sourceTree = "<group>"; };
-               274EE26B1A03EDCA003213D1 /* ippserver copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ippserver copy"; sourceTree = BUILT_PRODUCTS_DIR; };
-               274EE27C1A03EDCB003213D1 /* ippserver copy copy */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "ippserver copy copy"; sourceTree = BUILT_PRODUCTS_DIR; };
-               274EE27D1A03EE0B003213D1 /* ippinfra.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ippinfra.c; path = ../test/ippinfra.c; sourceTree = "<group>"; };
-               274EE27F1A03EE41003213D1 /* ippproxy.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ippproxy.c; path = ../test/ippproxy.c; sourceTree = "<group>"; };
-               274FF5CC13332B1F00317ECB /* cups-driverd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-driverd"; sourceTree = BUILT_PRODUCTS_DIR; };
-               274FF5D613332CC700317ECB /* cups-driverd.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "cups-driverd.cxx"; path = "../scheduler/cups-driverd.cxx"; sourceTree = "<group>"; };
-               274FF5D713332CC700317ECB /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = util.c; path = ../scheduler/util.c; sourceTree = "<group>"; };
-               274FF5D813332CC700317ECB /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = util.h; path = ../scheduler/util.h; sourceTree = "<group>"; };
-               274FF5EE133330C800317ECB /* libcupsppdc.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupsppdc.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
-               274FF5F51333315100317ECB /* ppdc-array.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-array.cxx"; path = "../ppdc/ppdc-array.cxx"; sourceTree = "<group>"; };
-               274FF5F61333315100317ECB /* ppdc-attr.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-attr.cxx"; path = "../ppdc/ppdc-attr.cxx"; sourceTree = "<group>"; };
-               274FF5F71333315100317ECB /* ppdc-catalog.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-catalog.cxx"; path = "../ppdc/ppdc-catalog.cxx"; sourceTree = "<group>"; };
-               274FF5F81333315100317ECB /* ppdc-choice.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-choice.cxx"; path = "../ppdc/ppdc-choice.cxx"; sourceTree = "<group>"; };
-               274FF5F91333315100317ECB /* ppdc-constraint.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-constraint.cxx"; path = "../ppdc/ppdc-constraint.cxx"; sourceTree = "<group>"; };
-               274FF5FA1333315100317ECB /* ppdc-driver.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-driver.cxx"; path = "../ppdc/ppdc-driver.cxx"; sourceTree = "<group>"; };
-               274FF5FB1333315100317ECB /* ppdc-file.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-file.cxx"; path = "../ppdc/ppdc-file.cxx"; sourceTree = "<group>"; };
-               274FF5FC1333315100317ECB /* ppdc-filter.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-filter.cxx"; path = "../ppdc/ppdc-filter.cxx"; sourceTree = "<group>"; };
-               274FF5FD1333315100317ECB /* ppdc-font.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-font.cxx"; path = "../ppdc/ppdc-font.cxx"; sourceTree = "<group>"; };
-               274FF5FE1333315100317ECB /* ppdc-group.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-group.cxx"; path = "../ppdc/ppdc-group.cxx"; sourceTree = "<group>"; };
-               274FF5FF1333315100317ECB /* ppdc-import.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-import.cxx"; path = "../ppdc/ppdc-import.cxx"; sourceTree = "<group>"; };
-               274FF6001333315100317ECB /* ppdc-mediasize.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-mediasize.cxx"; path = "../ppdc/ppdc-mediasize.cxx"; sourceTree = "<group>"; };
-               274FF6011333315100317ECB /* ppdc-message.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-message.cxx"; path = "../ppdc/ppdc-message.cxx"; sourceTree = "<group>"; };
-               274FF6021333315100317ECB /* ppdc-option.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-option.cxx"; path = "../ppdc/ppdc-option.cxx"; sourceTree = "<group>"; };
-               274FF6031333315100317ECB /* ppdc-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ppdc-private.h"; path = "../ppdc/ppdc-private.h"; sourceTree = "<group>"; };
-               274FF6041333315100317ECB /* ppdc-profile.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-profile.cxx"; path = "../ppdc/ppdc-profile.cxx"; sourceTree = "<group>"; };
-               274FF6051333315100317ECB /* ppdc-shared.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-shared.cxx"; path = "../ppdc/ppdc-shared.cxx"; sourceTree = "<group>"; };
-               274FF6061333315100317ECB /* ppdc-source.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-source.cxx"; path = "../ppdc/ppdc-source.cxx"; sourceTree = "<group>"; };
-               274FF6071333315100317ECB /* ppdc-string.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-string.cxx"; path = "../ppdc/ppdc-string.cxx"; sourceTree = "<group>"; };
-               274FF6081333315100317ECB /* ppdc-variable.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-variable.cxx"; path = "../ppdc/ppdc-variable.cxx"; sourceTree = "<group>"; };
-               274FF6091333315100317ECB /* ppdc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ppdc.h; path = ../ppdc/ppdc.h; sourceTree = "<group>"; };
-               274FF6291333333600317ECB /* cups-deviced */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-deviced"; sourceTree = BUILT_PRODUCTS_DIR; };
-               274FF6351333344400317ECB /* cups-deviced.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "cups-deviced.c"; path = "../scheduler/cups-deviced.c"; sourceTree = "<group>"; };
-               274FF63E1333358B00317ECB /* cups-exec */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-exec"; sourceTree = BUILT_PRODUCTS_DIR; };
-               274FF6491333398D00317ECB /* cups-exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "cups-exec.c"; path = "../scheduler/cups-exec.c"; sourceTree = "<group>"; };
-               274FF64F133339C400317ECB /* cups-lpd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-lpd"; sourceTree = BUILT_PRODUCTS_DIR; };
-               274FF65B133339FC00317ECB /* cups-lpd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "cups-lpd.c"; path = "../scheduler/cups-lpd.c"; sourceTree = "<group>"; };
-               274FF67813333B2F00317ECB /* cupsfilter */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsfilter; sourceTree = BUILT_PRODUCTS_DIR; };
-               274FF68713333B6E00317ECB /* cupsfilter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupsfilter.c; path = ../scheduler/cupsfilter.c; sourceTree = "<group>"; };
-               276683561337A8C5000D33D0 /* cups.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = cups.strings; path = ../locale/cups.strings; sourceTree = "<group>"; };
-               2766835C1337A9B6000D33D0 /* cupsctl */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsctl; sourceTree = BUILT_PRODUCTS_DIR; };
-               276683681337AA00000D33D0 /* cupsctl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupsctl.c; path = ../systemv/cupsctl.c; sourceTree = "<group>"; };
-               276683701337AC79000D33D0 /* ppdc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdc; sourceTree = BUILT_PRODUCTS_DIR; };
-               2766837D1337AC8C000D33D0 /* ppdhtml */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdhtml; sourceTree = BUILT_PRODUCTS_DIR; };
-               2766838A1337AC97000D33D0 /* ppdi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdi; sourceTree = BUILT_PRODUCTS_DIR; };
-               276683971337ACA2000D33D0 /* ppdmerge */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdmerge; sourceTree = BUILT_PRODUCTS_DIR; };
-               276683A41337ACAB000D33D0 /* ppdpo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdpo; sourceTree = BUILT_PRODUCTS_DIR; };
-               276683CC1337B201000D33D0 /* ppdc.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdc.cxx; path = ../ppdc/ppdc.cxx; sourceTree = "<group>"; };
-               276683CE1337B20D000D33D0 /* ppdhtml.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdhtml.cxx; path = ../ppdc/ppdhtml.cxx; sourceTree = "<group>"; };
-               276683D01337B21A000D33D0 /* ppdi.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdi.cxx; path = ../ppdc/ppdi.cxx; sourceTree = "<group>"; };
-               276683D21337B228000D33D0 /* ppdmerge.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdmerge.cxx; path = ../ppdc/ppdmerge.cxx; sourceTree = "<group>"; };
-               276683D41337B237000D33D0 /* ppdpo.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdpo.cxx; path = ../ppdc/ppdpo.cxx; sourceTree = "<group>"; };
-               276683F01337F78E000D33D0 /* ipptool */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ipptool; sourceTree = BUILT_PRODUCTS_DIR; };
-               276683F91337F7A9000D33D0 /* ipptool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ipptool.c; path = ../test/ipptool.c; sourceTree = "<group>"; };
-               276684041337FA1D000D33D0 /* cupsaddsmb */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsaddsmb; sourceTree = BUILT_PRODUCTS_DIR; };
-               276684101337FA7C000D33D0 /* cupsaddsmb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupsaddsmb.c; path = ../systemv/cupsaddsmb.c; sourceTree = "<group>"; };
-               2767FC5019266A0D000F61D3 /* testdest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testdest; sourceTree = BUILT_PRODUCTS_DIR; };
-               2767FC5119266A36000F61D3 /* testdest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testdest.c; path = ../cups/testdest.c; sourceTree = "<group>"; };
-               2767FC591926750C000F61D3 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
-               2767FC5A1926750C000F61D3 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
-               2767FC5B1926750C000F61D3 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = usr/lib/libresolv.dylib; sourceTree = SDKROOT; };
-               2767FC5C1926750C000F61D3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
-               2767FC5D1926750C000F61D3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
-               2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
-               2767FC7519269687000F61D3 /* pwg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pwg.h; path = ../cups/pwg.h; sourceTree = "<group>"; };
-               2767FC76192696A0000F61D3 /* raster-private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "raster-private.h"; path = "../cups/raster-private.h"; sourceTree = "<group>"; };
-               278C58CB136B640300836530 /* testhttp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testhttp; sourceTree = BUILT_PRODUCTS_DIR; };
-               278C58E2136B647200836530 /* testhttp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testhttp.c; path = ../cups/testhttp.c; sourceTree = "<group>"; };
-               278C58E5136B64AF00836530 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
-               278C58E6136B64B000836530 /* Kerberos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kerberos.framework; path = /System/Library/Frameworks/Kerberos.framework; sourceTree = "<absolute>"; };
-               278C58E7136B64B000836530 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
-               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; };
-               72220EB51333052D00FCA411 /* adminutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = adminutil.c; path = ../cups/adminutil.c; sourceTree = "<group>"; };
-               72220EB71333056300FCA411 /* adminutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = adminutil.h; path = ../cups/adminutil.h; sourceTree = "<group>"; };
-               72220EB81333056300FCA411 /* array.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = array.c; path = ../cups/array.c; sourceTree = "<group>"; };
-               72220EB91333056300FCA411 /* array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = array.h; path = ../cups/array.h; sourceTree = "<group>"; };
-               72220EBA1333056300FCA411 /* attr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = attr.c; path = ../cups/attr.c; sourceTree = "<group>"; };
-               72220EBB1333056300FCA411 /* auth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = auth.c; path = ../cups/auth.c; sourceTree = "<group>"; };
-               72220EBC1333056300FCA411 /* backchannel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = backchannel.c; path = ../cups/backchannel.c; sourceTree = "<group>"; };
-               72220EBD1333056300FCA411 /* backend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = backend.c; path = ../cups/backend.c; sourceTree = "<group>"; };
-               72220EBE1333056300FCA411 /* backend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = backend.h; path = ../cups/backend.h; sourceTree = "<group>"; };
-               72220EBF1333056300FCA411 /* conflicts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = conflicts.c; path = ../cups/conflicts.c; sourceTree = "<group>"; };
-               72220EC01333056300FCA411 /* cups-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "cups-private.h"; path = "../cups/cups-private.h"; sourceTree = "<group>"; };
-               72220EC11333056300FCA411 /* cups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cups.h; path = ../cups/cups.h; sourceTree = "<group>"; };
-               72220EC21333056300FCA411 /* custom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = custom.c; path = ../cups/custom.c; sourceTree = "<group>"; };
-               72220EC31333056300FCA411 /* debug-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "debug-private.h"; path = "../cups/debug-private.h"; sourceTree = "<group>"; };
-               72220ED1133305BB00FCA411 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = debug.c; path = ../cups/debug.c; sourceTree = "<group>"; };
-               72220ED2133305BB00FCA411 /* dest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dest.c; path = ../cups/dest.c; sourceTree = "<group>"; };
-               72220ED3133305BB00FCA411 /* dir.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dir.c; path = ../cups/dir.c; sourceTree = "<group>"; };
-               72220ED4133305BB00FCA411 /* dir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dir.h; path = ../cups/dir.h; sourceTree = "<group>"; };
-               72220ED5133305BB00FCA411 /* emit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = emit.c; path = ../cups/emit.c; sourceTree = "<group>"; };
-               72220ED6133305BB00FCA411 /* encode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encode.c; path = ../cups/encode.c; sourceTree = "<group>"; };
-               72220ED7133305BB00FCA411 /* file-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "file-private.h"; path = "../cups/file-private.h"; sourceTree = "<group>"; };
-               72220ED8133305BB00FCA411 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../cups/file.c; sourceTree = "<group>"; };
-               72220ED9133305BB00FCA411 /* file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = file.h; path = ../cups/file.h; sourceTree = "<group>"; };
-               72220EDA133305BB00FCA411 /* getdevices.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = getdevices.c; path = ../cups/getdevices.c; sourceTree = "<group>"; };
-               72220EDB133305BB00FCA411 /* getifaddrs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = getifaddrs.c; path = ../cups/getifaddrs.c; sourceTree = "<group>"; };
-               72220EDC133305BB00FCA411 /* getputfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = getputfile.c; path = ../cups/getputfile.c; sourceTree = "<group>"; };
-               72220EDD133305BB00FCA411 /* globals.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = globals.c; path = ../cups/globals.c; sourceTree = "<group>"; };
-               72220EDE133305BB00FCA411 /* http-addr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "http-addr.c"; path = "../cups/http-addr.c"; sourceTree = "<group>"; };
-               72220EDF133305BB00FCA411 /* http-addrlist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "http-addrlist.c"; path = "../cups/http-addrlist.c"; sourceTree = "<group>"; };
-               72220EE0133305BB00FCA411 /* http-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "http-private.h"; path = "../cups/http-private.h"; sourceTree = "<group>"; };
-               72220EE1133305BB00FCA411 /* http-support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "http-support.c"; path = "../cups/http-support.c"; sourceTree = "<group>"; };
-               72220EE2133305BB00FCA411 /* http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = http.c; path = ../cups/http.c; sourceTree = "<group>"; };
-               72220EE3133305BB00FCA411 /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http.h; path = ../cups/http.h; sourceTree = "<group>"; wrapsLines = 1; };
-               72220EE4133305BB00FCA411 /* ipp-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ipp-private.h"; path = "../cups/ipp-private.h"; sourceTree = "<group>"; };
-               72220EE5133305BB00FCA411 /* ipp-support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ipp-support.c"; path = "../cups/ipp-support.c"; sourceTree = "<group>"; };
-               72220EE6133305BB00FCA411 /* ipp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ipp.c; path = ../cups/ipp.c; sourceTree = "<group>"; };
-               72220EE7133305BB00FCA411 /* ipp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ipp.h; path = ../cups/ipp.h; sourceTree = "<group>"; };
-               72220EE8133305BB00FCA411 /* langprintf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = langprintf.c; path = ../cups/langprintf.c; sourceTree = "<group>"; };
-               72220EE9133305BB00FCA411 /* language-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "language-private.h"; path = "../cups/language-private.h"; sourceTree = "<group>"; };
-               72220EEA133305BB00FCA411 /* language.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = language.c; path = ../cups/language.c; sourceTree = "<group>"; };
-               72220EEB133305BB00FCA411 /* language.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = language.h; path = ../cups/language.h; sourceTree = "<group>"; };
-               72220EEC133305BB00FCA411 /* localize.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = localize.c; path = ../cups/localize.c; sourceTree = "<group>"; };
-               72220EED133305BB00FCA411 /* mark.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mark.c; path = ../cups/mark.c; sourceTree = "<group>"; };
-               72220EEE133305BB00FCA411 /* md5-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "md5-private.h"; path = "../cups/md5-private.h"; sourceTree = "<group>"; };
-               72220EEF133305BB00FCA411 /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../cups/md5.c; sourceTree = "<group>"; };
-               72220EF0133305BB00FCA411 /* md5passwd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5passwd.c; path = ../cups/md5passwd.c; sourceTree = "<group>"; };
-               72220EF1133305BB00FCA411 /* notify.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = notify.c; path = ../cups/notify.c; sourceTree = "<group>"; };
-               72220EF2133305BB00FCA411 /* options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = options.c; path = ../cups/options.c; sourceTree = "<group>"; };
-               72220EF3133305BB00FCA411 /* page.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = page.c; path = ../cups/page.c; sourceTree = "<group>"; };
-               72220EF4133305BB00FCA411 /* ppd-cache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-cache.c"; path = "../cups/ppd-cache.c"; sourceTree = "<group>"; };
-               72220EF5133305BB00FCA411 /* ppd-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ppd-private.h"; path = "../cups/ppd-private.h"; sourceTree = "<group>"; };
-               72220EF6133305BB00FCA411 /* ppd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ppd.c; path = ../cups/ppd.c; sourceTree = "<group>"; };
-               72220EF7133305BB00FCA411 /* ppd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ppd.h; path = ../cups/ppd.h; sourceTree = "<group>"; };
-               72220EF8133305BB00FCA411 /* pwg-media.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "pwg-media.c"; path = "../cups/pwg-media.c"; sourceTree = "<group>"; };
+               274FF5E813332D4300317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF5CB13332B1F00317ECB;
+                       remoteInfo = "cups-driverd";
+               };
+               274FF5F2133330FD00317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               274FF61F1333316200317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
+                       remoteInfo = libcupsppdc;
+               };
+               274FF621133331D300317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
+                       remoteInfo = libcupsppdc;
+               };
+               274FF6331333335200317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               274FF6381333348400317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6281333333600317ECB;
+                       remoteInfo = "cups-deviced";
+               };
+               274FF647133335A300317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF63D1333358B00317ECB;
+                       remoteInfo = "cups-exec";
+               };
+               274FF659133339D900317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               274FF65D13333A3400317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF64E133339C400317ECB;
+                       remoteInfo = "cups-lpd";
+               };
+               274FF68113333B3C00317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               274FF68313333B3C00317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220FAB13330B2200FCA411;
+                       remoteInfo = libcupsmime;
+               };
+               274FF6E11333B33F00317ECB /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF67713333B2F00317ECB;
+                       remoteInfo = cupsfilter;
+               };
+               276683651337A9D6000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               2766836A1337AA25000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 2766835B1337A9B6000D33D0;
+                       remoteInfo = cupsctl;
+               };
+               276683AD1337ACF9000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               276683AF1337ACF9000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
+                       remoteInfo = libcupsppdc;
+               };
+               276683B31337AD18000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               276683B51337AD18000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
+                       remoteInfo = libcupsppdc;
+               };
+               276683BB1337AE49000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               276683BD1337AE49000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
+                       remoteInfo = libcupsppdc;
+               };
+               276683BF1337B1AD000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               276683C11337B1AD000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
+                       remoteInfo = libcupsppdc;
+               };
+               276683C51337B1BC000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               276683C71337B1BC000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF5ED133330C800317ECB;
+                       remoteInfo = libcupsppdc;
+               };
+               276683D61337B24A000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 2766836F1337AC79000D33D0;
+                       remoteInfo = ppdc;
+               };
+               276683D81337B24A000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 2766837C1337AC8C000D33D0;
+                       remoteInfo = ppdhtml;
+               };
+               276683DA1337B24A000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 276683891337AC97000D33D0;
+                       remoteInfo = ppdi;
+               };
+               276683DC1337B24A000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 276683961337ACA2000D33D0;
+                       remoteInfo = ppdmerge;
+               };
+               276683DE1337B24A000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 276683A31337ACAB000D33D0;
+                       remoteInfo = ppdpo;
+               };
+               276683E01337B299000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               276683E31337B2BA000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72F75A601336F9A3004BB496;
+                       remoteInfo = libcupsimage;
+               };
+               276683FB1337F7B3000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               276683FE1337F7C5000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 276683EF1337F78E000D33D0;
+                       remoteInfo = ipptool;
+               };
+               2766840D1337FA31000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               276684121337FA8D000D33D0 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 276684031337FA1D000D33D0;
+                       remoteInfo = cupsaddsmb;
+               };
+               2767FC4819266A0D000F61D3 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               2767FC5319267469000F61D3 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 276683EF1337F78E000D33D0;
+                       remoteInfo = ipptool;
+               };
+               2767FC5519267469000F61D3 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 2767FC4619266A0D000F61D3;
+                       remoteInfo = testdest;
+               };
+               278C58D5136B641D00836530 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 278C58CA136B640300836530;
+                       remoteInfo = testhttp;
+               };
+               278C58D7136B642F00836530 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               27A034831A8BDC4A00650675 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               27A034861A8BDC6900650675 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 27A0347A1A8BDB1200650675;
+                       remoteInfo = lpadmin;
+               };
+               720DD6CE1358FD790064AA82 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               720DD6D01358FDBE0064AA82 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 720DD6C11358FD5F0064AA82;
+                       remoteInfo = snmp;
+               };
+               72220F6413330A6500FCA411 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               72220FBB13330C0500FCA411 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               72220FBD13330C0B00FCA411 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220FAB13330B2200FCA411;
+                       remoteInfo = libcupsmime;
+               };
+               724379061333E49B009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               724379101333E4EA009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 724378FC1333E43E009631B9;
+                       remoteInfo = ipp;
+               };
+               724379251333E932009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               7243792A1333E962009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 724379171333E532009631B9;
+                       remoteInfo = lpd;
+               };
+               724379391333FB95009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               7243793E1333FD23009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 7243792F1333FB85009631B9;
+                       remoteInfo = socket;
+               };
+               724379521333FECE009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 724379461333FEA9009631B9;
+                       remoteInfo = dnssd;
+               };
+               724379541333FEFE009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               724379641333FF2E009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               724379C21333FF7D009631B9 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 7243795A1333FF1D009631B9;
+                       remoteInfo = usb;
+               };
+               724FA5261CC0370C0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5391CC037370092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA54C1CC037500092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA55F1CC037670092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5721CC037810092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5851CC037980092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5981CC037AA0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5AB1CC037C60092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5BE1CC037D90092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5D11CC037F00092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5E51CC038040092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA5F91CC038190092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA60D1CC0382B0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6211CC038410092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6351CC038560092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6491CC0386E0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6601CC038A50092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6741CC038BD0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6871CC038D90092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA69B1CC039200092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6AE1CC0393E0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6C11CC0395A0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6DA1CC039DE0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA6EF1CC03A210092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               724FA7431CC03ACC0092477B /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               7258EAEE13459ADA009286F1 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 7258EAE1134594C4009286F1;
+                       remoteInfo = rastertopwg;
+               };
+               7258EAF013459B67009286F1 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               7258EAF213459B67009286F1 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72F75A601336F9A3004BB496;
+                       remoteInfo = libcupsimage;
+               };
+               726AD703135E8AA1002C930D /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 726AD6F6135E88F0002C930D;
+                       remoteInfo = ippserver;
+               };
+               726AD705135E8AC5002C930D /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               72BEA8D319AFA89C0085F0F3 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 726AD6F6135E88F0002C930D;
+                       remoteInfo = ippserver;
+               };
+               72BEA8D519AFA8A00085F0F3 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72CF95E618A19134000FCAE4;
+                       remoteInfo = ippfind;
+               };
+               72BEA8D719AFA8BB0085F0F3 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               72CF95E818A19134000FCAE4 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               72F75A651336FA30004BB496 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72220EAD1333047D00FCA411;
+                       remoteInfo = libcups;
+               };
+               72F75A701336FACD004BB496 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72F75A601336F9A3004BB496;
+                       remoteInfo = libcupsimage;
+               };
+               72F75A721336FACD004BB496 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 72F75A511336F950004BB496;
+                       remoteInfo = cupstestppd;
+               };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+               270CCDA5135E3C9E00007BE2 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               270D02201D707E0200EA9403 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271284E81CC1261900E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271284F51CC1264B00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285021CC1265D00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2712850F1CC1267A00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2712851C1CC1269700E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285291CC126AA00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285361CC1270B00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285431CC1271E00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285501CC1272D00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2712855D1CC1274300E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2712856A1CC1275200E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285771CC1276400E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2712859C1CC12D1300E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285AB1CC12D3A00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285B91CC12D4E00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285C71CC12D5E00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285D41CC12DBF00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285E11CC12DDF00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285EE1CC12E2D00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271285FC1CC12EEB00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2712860F1CC12F0B00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2712861F1CC12F1A00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286631CC1309000E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286791CC1310E00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286921CC13DC000E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286A31CC13DF100E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286B41CC13DFF00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286C51CC13E2100E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286D51CC13E5B00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286EF1CC13F2000E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271286FF1CC13F3F00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271287141CC13FAB00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               271287281CC140BE00E517C7 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               273BF6BB1333B5000022CAAB /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               274FF5CA13332B1F00317ECB /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               274FF6271333333600317ECB /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               274FF63C1333358B00317ECB /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               274FF64D133339C400317ECB /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               274FF67613333B2F00317ECB /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2766835A1337A9B6000D33D0 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2766836E1337AC79000D33D0 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2766837B1337AC8C000D33D0 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               276683881337AC97000D33D0 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               276683951337ACA2000D33D0 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               276683A21337ACAB000D33D0 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               276683EE1337F78E000D33D0 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               276684021337FA1D000D33D0 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               2767FC4C19266A0D000F61D3 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               278C58C9136B640300836530 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               27A034791A8BDB1200650675 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               720DD6C01358FD5F0064AA82 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               72220F5913330A5A00FCA411 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724378FB1333E43E009631B9 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724379161333E532009631B9 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               7243792E1333FB85009631B9 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724379451333FEA9009631B9 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724379591333FF1D009631B9 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5311CC0370C0092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5441CC037370092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5571CC037500092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA56A1CC037670092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA57D1CC037810092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5901CC037980092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5A31CC037AA0092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5B61CC037C60092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5C91CC037D90092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5DD1CC037F00092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA5F11CC038040092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6051CC038190092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6191CC0382B0092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA62D1CC038410092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6411CC038560092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6551CC0386E0092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA66C1CC038A50092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA67F1CC038BD0092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6931CC038D90092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6A61CC039200092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6B91CC0393E0092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6CD1CC0395A0092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6E61CC039DE0092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               724FA6FB1CC03A210092477B /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               7258EAE0134594C4009286F1 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               726AD6F5135E88F0002C930D /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               72CF95ED18A19134000FCAE4 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+               72F75A501336F950004BB496 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+               2706965A1CADF3E200FFE5FB /* libcups_ios.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcups_ios.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               270B267D17F5C06700C8A3A9 /* tls-darwin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-darwin.c"; path = "../cups/tls-darwin.c"; sourceTree = "<group>"; };
+               270B267E17F5C06700C8A3A9 /* tls-gnutls.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-gnutls.c"; path = "../cups/tls-gnutls.c"; sourceTree = "<group>"; };
+               270B268117F5C5D600C8A3A9 /* tls-sspi.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "tls-sspi.c"; path = "../cups/tls-sspi.c"; sourceTree = "<group>"; };
+               270CCDA7135E3C9E00007BE2 /* testmime */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testmime; sourceTree = BUILT_PRODUCTS_DIR; };
+               270CCDBB135E3D3E00007BE2 /* testmime.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testmime.c; path = ../scheduler/testmime.c; sourceTree = "<group>"; };
+               270D02241D707E0200EA9403 /* testcreds */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testcreds; sourceTree = BUILT_PRODUCTS_DIR; };
+               270D02251D707E3700EA9403 /* testcreds.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testcreds.c; path = ../cups/testcreds.c; sourceTree = "<group>"; };
+               271284DD1CC125FC00E517C7 /* lpc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lpc.c; path = ../berkeley/lpc.c; sourceTree = "<group>"; };
+               271284DE1CC125FC00E517C7 /* lpq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lpq.c; path = ../berkeley/lpq.c; sourceTree = "<group>"; };
+               271284DF1CC125FC00E517C7 /* lpr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lpr.c; path = ../berkeley/lpr.c; sourceTree = "<group>"; };
+               271284E01CC125FC00E517C7 /* lprm.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = lprm.c; path = ../berkeley/lprm.c; sourceTree = "<group>"; };
+               271284EC1CC1261900E517C7 /* cancel */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cancel; sourceTree = BUILT_PRODUCTS_DIR; };
+               271284F91CC1264B00E517C7 /* cupsaccept */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsaccept; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285061CC1265D00E517C7 /* cupstestdsc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupstestdsc; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285131CC1267A00E517C7 /* lp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lp; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285201CC1269700E517C7 /* lpc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpc; sourceTree = BUILT_PRODUCTS_DIR; };
+               2712852D1CC126AA00E517C7 /* lpinfo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpinfo; sourceTree = BUILT_PRODUCTS_DIR; };
+               2712853A1CC1270B00E517C7 /* lpmove */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpmove; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285471CC1271E00E517C7 /* lpoptions */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpoptions; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285541CC1272D00E517C7 /* lpq */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpq; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285611CC1274300E517C7 /* lpr */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpr; sourceTree = BUILT_PRODUCTS_DIR; };
+               2712856E1CC1275200E517C7 /* lprm */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lprm; sourceTree = BUILT_PRODUCTS_DIR; };
+               2712857B1CC1276400E517C7 /* lpstat */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = lpstat; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285A01CC12D1300E517C7 /* admin.cgi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = admin.cgi; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285AF1CC12D3A00E517C7 /* classes.cgi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = classes.cgi; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285BD1CC12D4E00E517C7 /* jobs.cgi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = jobs.cgi; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285CB1CC12D5E00E517C7 /* printers.cgi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = printers.cgi; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285D81CC12DBF00E517C7 /* commandtops */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = commandtops; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285E51CC12DDF00E517C7 /* gziptoany */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = gziptoany; sourceTree = BUILT_PRODUCTS_DIR; };
+               271285F21CC12E2E00E517C7 /* pstops */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pstops; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286001CC12EEB00E517C7 /* rastertoepson */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = rastertoepson; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286131CC12F0B00E517C7 /* rastertohp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = rastertohp; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286231CC12F1A00E517C7 /* rastertolabel */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = rastertolabel; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286671CC1309000E517C7 /* tlscheck */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tlscheck; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286681CC130BD00E517C7 /* tlscheck.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tlscheck.c; path = ../cups/tlscheck.c; sourceTree = "<group>"; };
+               2712866A1CC130FF00E517C7 /* rasterbench.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rasterbench.c; path = ../filter/rasterbench.c; sourceTree = "<group>"; };
+               2712867D1CC1310E00E517C7 /* rasterbench */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = rasterbench; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286801CC1396100E517C7 /* bcp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = bcp.c; path = ../monitor/bcp.c; sourceTree = "<group>"; };
+               271286811CC1396100E517C7 /* tbcp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = tbcp.c; path = ../monitor/tbcp.c; sourceTree = "<group>"; };
+               271286831CC13D9600E517C7 /* checkpo.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = checkpo.c; path = ../locale/checkpo.c; sourceTree = "<group>"; };
+               271286841CC13D9600E517C7 /* cups.pot */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = cups.pot; path = ../locale/cups.pot; sourceTree = "<group>"; };
+               271286851CC13D9600E517C7 /* po2strings.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = po2strings.c; path = ../locale/po2strings.c; sourceTree = "<group>"; };
+               271286861CC13D9600E517C7 /* strings2po.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = strings2po.c; path = ../locale/strings2po.c; sourceTree = "<group>"; };
+               271286961CC13DC000E517C7 /* checkpo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = checkpo; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286A71CC13DF100E517C7 /* po2strings */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = po2strings; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286B81CC13DFF00E517C7 /* strings2po */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = strings2po; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286C91CC13E2100E517C7 /* bcp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = bcp; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286D91CC13E5B00E517C7 /* tbcp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = tbcp; sourceTree = BUILT_PRODUCTS_DIR; };
+               271286F31CC13F2000E517C7 /* mailto */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mailto; sourceTree = BUILT_PRODUCTS_DIR; };
+               271287031CC13F3F00E517C7 /* rss */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = rss; sourceTree = BUILT_PRODUCTS_DIR; };
+               271287181CC13FAB00E517C7 /* mantohtml */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = mantohtml; sourceTree = BUILT_PRODUCTS_DIR; };
+               271287191CC13FDB00E517C7 /* mantohtml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mantohtml.c; path = ../man/mantohtml.c; sourceTree = "<group>"; };
+               2712871D1CC140B400E517C7 /* genstrings.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = genstrings.cxx; path = ../ppdc/genstrings.cxx; sourceTree = "<group>"; };
+               2712872C1CC140BE00E517C7 /* genstrings */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = genstrings; sourceTree = BUILT_PRODUCTS_DIR; };
+               2732E089137A3F5200FAFEF6 /* cancel.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cancel.c; path = ../systemv/cancel.c; sourceTree = "<group>"; };
+               2732E08A137A3F5200FAFEF6 /* cupsaccept.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cupsaccept.c; path = ../systemv/cupsaccept.c; sourceTree = "<group>"; };
+               2732E08B137A3F5200FAFEF6 /* cupstestdsc.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = cupstestdsc.c; path = ../systemv/cupstestdsc.c; sourceTree = "<group>"; };
+               2732E08C137A3F5200FAFEF6 /* lp.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lp.c; path = ../systemv/lp.c; sourceTree = "<group>"; };
+               2732E08D137A3F5200FAFEF6 /* lpadmin.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpadmin.c; path = ../systemv/lpadmin.c; sourceTree = "<group>"; };
+               2732E08E137A3F5200FAFEF6 /* lpinfo.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpinfo.c; path = ../systemv/lpinfo.c; sourceTree = "<group>"; };
+               2732E08F137A3F5200FAFEF6 /* lpmove.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpmove.c; path = ../systemv/lpmove.c; sourceTree = "<group>"; };
+               2732E090137A3F5200FAFEF6 /* lpoptions.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpoptions.c; path = ../systemv/lpoptions.c; sourceTree = "<group>"; };
+               2732E092137A3F5200FAFEF6 /* lpstat.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = lpstat.c; path = ../systemv/lpstat.c; sourceTree = "<group>"; };
+               273BF6BD1333B5000022CAAB /* testcups */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testcups; sourceTree = BUILT_PRODUCTS_DIR; };
+               273BF6C61333B5370022CAAB /* testcups.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testcups.c; path = ../cups/testcups.c; sourceTree = "<group>"; };
+               274FF5CC13332B1F00317ECB /* cups-driverd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-driverd"; sourceTree = BUILT_PRODUCTS_DIR; };
+               274FF5D613332CC700317ECB /* cups-driverd.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "cups-driverd.cxx"; path = "../scheduler/cups-driverd.cxx"; sourceTree = "<group>"; };
+               274FF5D713332CC700317ECB /* util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = util.c; path = ../scheduler/util.c; sourceTree = "<group>"; };
+               274FF5D813332CC700317ECB /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = util.h; path = ../scheduler/util.h; sourceTree = "<group>"; };
+               274FF5EE133330C800317ECB /* libcupsppdc.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupsppdc.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
+               274FF5F51333315100317ECB /* ppdc-array.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-array.cxx"; path = "../ppdc/ppdc-array.cxx"; sourceTree = "<group>"; };
+               274FF5F61333315100317ECB /* ppdc-attr.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-attr.cxx"; path = "../ppdc/ppdc-attr.cxx"; sourceTree = "<group>"; };
+               274FF5F71333315100317ECB /* ppdc-catalog.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-catalog.cxx"; path = "../ppdc/ppdc-catalog.cxx"; sourceTree = "<group>"; };
+               274FF5F81333315100317ECB /* ppdc-choice.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-choice.cxx"; path = "../ppdc/ppdc-choice.cxx"; sourceTree = "<group>"; };
+               274FF5F91333315100317ECB /* ppdc-constraint.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-constraint.cxx"; path = "../ppdc/ppdc-constraint.cxx"; sourceTree = "<group>"; };
+               274FF5FA1333315100317ECB /* ppdc-driver.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-driver.cxx"; path = "../ppdc/ppdc-driver.cxx"; sourceTree = "<group>"; };
+               274FF5FB1333315100317ECB /* ppdc-file.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-file.cxx"; path = "../ppdc/ppdc-file.cxx"; sourceTree = "<group>"; };
+               274FF5FC1333315100317ECB /* ppdc-filter.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-filter.cxx"; path = "../ppdc/ppdc-filter.cxx"; sourceTree = "<group>"; };
+               274FF5FD1333315100317ECB /* ppdc-font.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-font.cxx"; path = "../ppdc/ppdc-font.cxx"; sourceTree = "<group>"; };
+               274FF5FE1333315100317ECB /* ppdc-group.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-group.cxx"; path = "../ppdc/ppdc-group.cxx"; sourceTree = "<group>"; };
+               274FF5FF1333315100317ECB /* ppdc-import.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-import.cxx"; path = "../ppdc/ppdc-import.cxx"; sourceTree = "<group>"; };
+               274FF6001333315100317ECB /* ppdc-mediasize.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-mediasize.cxx"; path = "../ppdc/ppdc-mediasize.cxx"; sourceTree = "<group>"; };
+               274FF6011333315100317ECB /* ppdc-message.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-message.cxx"; path = "../ppdc/ppdc-message.cxx"; sourceTree = "<group>"; };
+               274FF6021333315100317ECB /* ppdc-option.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-option.cxx"; path = "../ppdc/ppdc-option.cxx"; sourceTree = "<group>"; };
+               274FF6031333315100317ECB /* ppdc-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ppdc-private.h"; path = "../ppdc/ppdc-private.h"; sourceTree = "<group>"; };
+               274FF6041333315100317ECB /* ppdc-profile.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-profile.cxx"; path = "../ppdc/ppdc-profile.cxx"; sourceTree = "<group>"; };
+               274FF6051333315100317ECB /* ppdc-shared.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-shared.cxx"; path = "../ppdc/ppdc-shared.cxx"; sourceTree = "<group>"; };
+               274FF6061333315100317ECB /* ppdc-source.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-source.cxx"; path = "../ppdc/ppdc-source.cxx"; sourceTree = "<group>"; };
+               274FF6071333315100317ECB /* ppdc-string.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-string.cxx"; path = "../ppdc/ppdc-string.cxx"; sourceTree = "<group>"; };
+               274FF6081333315100317ECB /* ppdc-variable.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "ppdc-variable.cxx"; path = "../ppdc/ppdc-variable.cxx"; sourceTree = "<group>"; };
+               274FF6091333315100317ECB /* ppdc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ppdc.h; path = ../ppdc/ppdc.h; sourceTree = "<group>"; };
+               274FF6291333333600317ECB /* cups-deviced */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-deviced"; sourceTree = BUILT_PRODUCTS_DIR; };
+               274FF6351333344400317ECB /* cups-deviced.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "cups-deviced.c"; path = "../scheduler/cups-deviced.c"; sourceTree = "<group>"; };
+               274FF63E1333358B00317ECB /* cups-exec */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-exec"; sourceTree = BUILT_PRODUCTS_DIR; };
+               274FF6491333398D00317ECB /* cups-exec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "cups-exec.c"; path = "../scheduler/cups-exec.c"; sourceTree = "<group>"; };
+               274FF64F133339C400317ECB /* cups-lpd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "cups-lpd"; sourceTree = BUILT_PRODUCTS_DIR; };
+               274FF65B133339FC00317ECB /* cups-lpd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "cups-lpd.c"; path = "../scheduler/cups-lpd.c"; sourceTree = "<group>"; };
+               274FF67813333B2F00317ECB /* cupsfilter */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsfilter; sourceTree = BUILT_PRODUCTS_DIR; };
+               274FF68713333B6E00317ECB /* cupsfilter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupsfilter.c; path = ../scheduler/cupsfilter.c; sourceTree = "<group>"; };
+               276683561337A8C5000D33D0 /* cups.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = cups.strings; path = ../locale/cups.strings; sourceTree = "<group>"; };
+               2766835C1337A9B6000D33D0 /* cupsctl */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsctl; sourceTree = BUILT_PRODUCTS_DIR; };
+               276683681337AA00000D33D0 /* cupsctl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupsctl.c; path = ../systemv/cupsctl.c; sourceTree = "<group>"; };
+               276683701337AC79000D33D0 /* ppdc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdc; sourceTree = BUILT_PRODUCTS_DIR; };
+               2766837D1337AC8C000D33D0 /* ppdhtml */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdhtml; sourceTree = BUILT_PRODUCTS_DIR; };
+               2766838A1337AC97000D33D0 /* ppdi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdi; sourceTree = BUILT_PRODUCTS_DIR; };
+               276683971337ACA2000D33D0 /* ppdmerge */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdmerge; sourceTree = BUILT_PRODUCTS_DIR; };
+               276683A41337ACAB000D33D0 /* ppdpo */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdpo; sourceTree = BUILT_PRODUCTS_DIR; };
+               276683CC1337B201000D33D0 /* ppdc.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdc.cxx; path = ../ppdc/ppdc.cxx; sourceTree = "<group>"; };
+               276683CE1337B20D000D33D0 /* ppdhtml.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdhtml.cxx; path = ../ppdc/ppdhtml.cxx; sourceTree = "<group>"; };
+               276683D01337B21A000D33D0 /* ppdi.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdi.cxx; path = ../ppdc/ppdi.cxx; sourceTree = "<group>"; };
+               276683D21337B228000D33D0 /* ppdmerge.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdmerge.cxx; path = ../ppdc/ppdmerge.cxx; sourceTree = "<group>"; };
+               276683D41337B237000D33D0 /* ppdpo.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ppdpo.cxx; path = ../ppdc/ppdpo.cxx; sourceTree = "<group>"; };
+               276683F01337F78E000D33D0 /* ipptool */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ipptool; sourceTree = BUILT_PRODUCTS_DIR; };
+               276683F91337F7A9000D33D0 /* ipptool.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ipptool.c; path = ../test/ipptool.c; sourceTree = "<group>"; };
+               276684041337FA1D000D33D0 /* cupsaddsmb */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsaddsmb; sourceTree = BUILT_PRODUCTS_DIR; };
+               276684101337FA7C000D33D0 /* cupsaddsmb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupsaddsmb.c; path = ../systemv/cupsaddsmb.c; sourceTree = "<group>"; };
+               2767FC5019266A0D000F61D3 /* testdest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testdest; sourceTree = BUILT_PRODUCTS_DIR; };
+               2767FC5119266A36000F61D3 /* testdest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testdest.c; path = ../cups/testdest.c; sourceTree = "<group>"; };
+               2767FC591926750C000F61D3 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+               2767FC5A1926750C000F61D3 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = usr/lib/libiconv.dylib; sourceTree = SDKROOT; };
+               2767FC5B1926750C000F61D3 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = usr/lib/libresolv.dylib; sourceTree = SDKROOT; };
+               2767FC5C1926750C000F61D3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
+               2767FC5D1926750C000F61D3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+               2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+               2767FC7519269687000F61D3 /* pwg.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = pwg.h; path = ../cups/pwg.h; sourceTree = "<group>"; };
+               2767FC76192696A0000F61D3 /* raster-private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "raster-private.h"; path = "../cups/raster-private.h"; sourceTree = "<group>"; };
+               278C58CB136B640300836530 /* testhttp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testhttp; sourceTree = BUILT_PRODUCTS_DIR; };
+               278C58E2136B647200836530 /* testhttp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = testhttp.c; path = ../cups/testhttp.c; sourceTree = "<group>"; };
+               278C58E5136B64AF00836530 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
+               278C58E6136B64B000836530 /* Kerberos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kerberos.framework; path = /System/Library/Frameworks/Kerberos.framework; sourceTree = "<absolute>"; };
+               278C58E7136B64B000836530 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = /System/Library/Frameworks/Security.framework; sourceTree = "<absolute>"; };
+               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; };
+               72220EB51333052D00FCA411 /* adminutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = adminutil.c; path = ../cups/adminutil.c; sourceTree = "<group>"; };
+               72220EB71333056300FCA411 /* adminutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = adminutil.h; path = ../cups/adminutil.h; sourceTree = "<group>"; };
+               72220EB81333056300FCA411 /* array.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = array.c; path = ../cups/array.c; sourceTree = "<group>"; };
+               72220EB91333056300FCA411 /* array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = array.h; path = ../cups/array.h; sourceTree = "<group>"; };
+               72220EBA1333056300FCA411 /* ppd-attr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-attr.c"; path = "../cups/ppd-attr.c"; sourceTree = "<group>"; };
+               72220EBB1333056300FCA411 /* auth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = auth.c; path = ../cups/auth.c; sourceTree = "<group>"; };
+               72220EBC1333056300FCA411 /* backchannel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = backchannel.c; path = ../cups/backchannel.c; sourceTree = "<group>"; };
+               72220EBD1333056300FCA411 /* backend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = backend.c; path = ../cups/backend.c; sourceTree = "<group>"; };
+               72220EBE1333056300FCA411 /* backend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = backend.h; path = ../cups/backend.h; sourceTree = "<group>"; };
+               72220EBF1333056300FCA411 /* ppd-conflicts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-conflicts.c"; path = "../cups/ppd-conflicts.c"; sourceTree = "<group>"; };
+               72220EC01333056300FCA411 /* cups-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "cups-private.h"; path = "../cups/cups-private.h"; sourceTree = "<group>"; };
+               72220EC11333056300FCA411 /* cups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cups.h; path = ../cups/cups.h; sourceTree = "<group>"; };
+               72220EC21333056300FCA411 /* ppd-custom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-custom.c"; path = "../cups/ppd-custom.c"; sourceTree = "<group>"; };
+               72220EC31333056300FCA411 /* debug-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "debug-private.h"; path = "../cups/debug-private.h"; sourceTree = "<group>"; };
+               72220ED1133305BB00FCA411 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = debug.c; path = ../cups/debug.c; sourceTree = "<group>"; };
+               72220ED2133305BB00FCA411 /* dest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dest.c; path = ../cups/dest.c; sourceTree = "<group>"; };
+               72220ED3133305BB00FCA411 /* dir.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dir.c; path = ../cups/dir.c; sourceTree = "<group>"; };
+               72220ED4133305BB00FCA411 /* dir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dir.h; path = ../cups/dir.h; sourceTree = "<group>"; };
+               72220ED5133305BB00FCA411 /* ppd-emit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-emit.c"; path = "../cups/ppd-emit.c"; sourceTree = "<group>"; };
+               72220ED6133305BB00FCA411 /* encode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encode.c; path = ../cups/encode.c; sourceTree = "<group>"; };
+               72220ED7133305BB00FCA411 /* file-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "file-private.h"; path = "../cups/file-private.h"; sourceTree = "<group>"; };
+               72220ED8133305BB00FCA411 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../cups/file.c; sourceTree = "<group>"; };
+               72220ED9133305BB00FCA411 /* file.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = file.h; path = ../cups/file.h; sourceTree = "<group>"; };
+               72220EDA133305BB00FCA411 /* getdevices.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = getdevices.c; path = ../cups/getdevices.c; sourceTree = "<group>"; };
+               72220EDB133305BB00FCA411 /* getifaddrs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = getifaddrs.c; path = ../cups/getifaddrs.c; sourceTree = "<group>"; };
+               72220EDC133305BB00FCA411 /* getputfile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = getputfile.c; path = ../cups/getputfile.c; sourceTree = "<group>"; };
+               72220EDD133305BB00FCA411 /* globals.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = globals.c; path = ../cups/globals.c; sourceTree = "<group>"; };
+               72220EDE133305BB00FCA411 /* http-addr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "http-addr.c"; path = "../cups/http-addr.c"; sourceTree = "<group>"; };
+               72220EDF133305BB00FCA411 /* http-addrlist.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "http-addrlist.c"; path = "../cups/http-addrlist.c"; sourceTree = "<group>"; };
+               72220EE0133305BB00FCA411 /* http-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "http-private.h"; path = "../cups/http-private.h"; sourceTree = "<group>"; };
+               72220EE1133305BB00FCA411 /* http-support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "http-support.c"; path = "../cups/http-support.c"; sourceTree = "<group>"; };
+               72220EE2133305BB00FCA411 /* http.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = http.c; path = ../cups/http.c; sourceTree = "<group>"; };
+               72220EE3133305BB00FCA411 /* http.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = http.h; path = ../cups/http.h; sourceTree = "<group>"; wrapsLines = 1; };
+               72220EE4133305BB00FCA411 /* ipp-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ipp-private.h"; path = "../cups/ipp-private.h"; sourceTree = "<group>"; };
+               72220EE5133305BB00FCA411 /* ipp-support.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ipp-support.c"; path = "../cups/ipp-support.c"; sourceTree = "<group>"; };
+               72220EE6133305BB00FCA411 /* ipp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ipp.c; path = ../cups/ipp.c; sourceTree = "<group>"; };
+               72220EE7133305BB00FCA411 /* ipp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ipp.h; path = ../cups/ipp.h; sourceTree = "<group>"; };
+               72220EE8133305BB00FCA411 /* langprintf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = langprintf.c; path = ../cups/langprintf.c; sourceTree = "<group>"; };
+               72220EE9133305BB00FCA411 /* language-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "language-private.h"; path = "../cups/language-private.h"; sourceTree = "<group>"; };
+               72220EEA133305BB00FCA411 /* language.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = language.c; path = ../cups/language.c; sourceTree = "<group>"; };
+               72220EEB133305BB00FCA411 /* language.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = language.h; path = ../cups/language.h; sourceTree = "<group>"; };
+               72220EEC133305BB00FCA411 /* ppd-localize.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-localize.c"; path = "../cups/ppd-localize.c"; sourceTree = "<group>"; };
+               72220EED133305BB00FCA411 /* ppd-mark.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-mark.c"; path = "../cups/ppd-mark.c"; sourceTree = "<group>"; };
+               72220EEE133305BB00FCA411 /* md5-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "md5-private.h"; path = "../cups/md5-private.h"; sourceTree = "<group>"; };
+               72220EEF133305BB00FCA411 /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../cups/md5.c; sourceTree = "<group>"; };
+               72220EF0133305BB00FCA411 /* md5passwd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5passwd.c; path = ../cups/md5passwd.c; sourceTree = "<group>"; };
+               72220EF1133305BB00FCA411 /* notify.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = notify.c; path = ../cups/notify.c; sourceTree = "<group>"; };
+               72220EF2133305BB00FCA411 /* options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = options.c; path = ../cups/options.c; sourceTree = "<group>"; };
+               72220EF3133305BB00FCA411 /* ppd-page.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-page.c"; path = "../cups/ppd-page.c"; sourceTree = "<group>"; };
+               72220EF4133305BB00FCA411 /* ppd-cache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-cache.c"; path = "../cups/ppd-cache.c"; sourceTree = "<group>"; };
+               72220EF5133305BB00FCA411 /* ppd-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ppd-private.h"; path = "../cups/ppd-private.h"; sourceTree = "<group>"; };
+               72220EF6133305BB00FCA411 /* ppd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ppd.c; path = ../cups/ppd.c; sourceTree = "<group>"; };
+               72220EF7133305BB00FCA411 /* ppd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ppd.h; path = ../cups/ppd.h; sourceTree = "<group>"; };
+               72220EF8133305BB00FCA411 /* pwg-media.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "pwg-media.c"; path = "../cups/pwg-media.c"; sourceTree = "<group>"; };
                72220EF9133305BB00FCA411 /* pwg-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "pwg-private.h"; path = "../cups/pwg-private.h"; sourceTree = "<group>"; };
                72220EFA133305BB00FCA411 /* raster.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = raster.h; path = ../cups/raster.h; sourceTree = "<group>"; };
                72220EFB133305BB00FCA411 /* request.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = request.c; path = ../cups/request.c; sourceTree = "<group>"; };
                724379CA1334000E009631B9 /* ieee1284.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ieee1284.c; path = ../backend/ieee1284.c; sourceTree = "<group>"; };
                72496E161A13A03B0051899C /* org.cups.cups-lpd.socket */ = {isa = PBXFileReference; lastKnownFileType = text; name = "org.cups.cups-lpd.socket"; path = "../scheduler/org.cups.cups-lpd.socket"; sourceTree = SOURCE_ROOT; };
                72496E171A13A03B0051899C /* org.cups.cups-lpdAT.service.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = "org.cups.cups-lpdAT.service.in"; path = "../scheduler/org.cups.cups-lpdAT.service.in"; sourceTree = SOURCE_ROOT; };
+               724FA5351CC0370C0092477B /* testadmin */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testadmin; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA5481CC037370092477B /* testarray */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testarray; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA55B1CC037500092477B /* testcache */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testcache; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA56E1CC037670092477B /* testconflicts */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testconflicts; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA5811CC037810092477B /* testfile */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testfile; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA5941CC037980092477B /* testi18n */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testi18n; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA5A71CC037AA0092477B /* testipp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testipp; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA5BA1CC037C60092477B /* testlang */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testlang; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA5CD1CC037D90092477B /* testlpd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testlpd; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA5E11CC037F00092477B /* testoptions */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testoptions; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA5F51CC038040092477B /* testppd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testppd; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6091CC038190092477B /* testpwg */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testpwg; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA61D1CC0382B0092477B /* testraster */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testraster; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6311CC038410092477B /* testsnmp */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testsnmp; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6451CC038560092477B /* testspeed */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testspeed; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6591CC0386E0092477B /* testsub */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testsub; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA65B1CC0389F0092477B /* test1284.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = test1284.c; path = ../backend/test1284.c; sourceTree = "<group>"; };
+               724FA65C1CC0389F0092477B /* testbackend.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testbackend.c; path = ../backend/testbackend.c; sourceTree = "<group>"; };
+               724FA65D1CC0389F0092477B /* testsupplies.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testsupplies.c; path = ../backend/testsupplies.c; sourceTree = "<group>"; };
+               724FA6701CC038A50092477B /* test1284 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = test1284; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6831CC038BD0092477B /* testbackend */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testbackend; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6971CC038D90092477B /* testsupplies */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testsupplies; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6AA1CC039200092477B /* testcgi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testcgi; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6BD1CC0393E0092477B /* testhi */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testhi; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6D11CC0395A0092477B /* testtemplate */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testtemplate; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6D41CC039D00092477B /* dbus.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = dbus.c; path = ../notifier/dbus.c; sourceTree = "<group>"; };
+               724FA6D51CC039D00092477B /* mailto.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = mailto.c; path = ../notifier/mailto.c; sourceTree = "<group>"; };
+               724FA6D61CC039D00092477B /* rss.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = rss.c; path = ../notifier/rss.c; sourceTree = "<group>"; };
+               724FA6D71CC039D00092477B /* testnotify.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testnotify.c; path = ../notifier/testnotify.c; sourceTree = "<group>"; };
+               724FA6EA1CC039DE0092477B /* testnotify */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testnotify; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA6EC1CC03A1D0092477B /* testcatalog.cxx */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = testcatalog.cxx; path = ../ppdc/testcatalog.cxx; sourceTree = "<group>"; };
+               724FA6FF1CC03A210092477B /* testcatalog */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testcatalog; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA70F1CC03A490092477B /* libcupsimage_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupsimage_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA71F1CC03A990092477B /* libcupsmime_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupsmime_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA7401CC03AAF0092477B /* libcupsppdc_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupsppdc_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA74F1CC03ACC0092477B /* libcupscgi.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupscgi.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
+               724FA76B1CC03AF60092477B /* libcupscgi_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcupscgi_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
                7258EAE2134594C4009286F1 /* rastertopwg */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = rastertopwg; sourceTree = BUILT_PRODUCTS_DIR; };
                7258EAEC134594EB009286F1 /* rastertopwg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = rastertopwg.c; path = ../filter/rastertopwg.c; sourceTree = "<group>"; };
                726AD6F7135E88F0002C930D /* ippserver */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ippserver; sourceTree = BUILT_PRODUCTS_DIR; };
                727EF04D192E3602001EF690 /* testlpd.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testlpd.c; path = ../scheduler/testlpd.c; sourceTree = "<group>"; };
                727EF04E192E3602001EF690 /* testspeed.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testspeed.c; path = ../scheduler/testspeed.c; sourceTree = "<group>"; };
                727EF04F192E3602001EF690 /* testsub.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testsub.c; path = ../scheduler/testsub.c; sourceTree = "<group>"; };
+               7284F9EF1BFCCD940026F886 /* hash.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = hash.c; path = ../cups/hash.c; sourceTree = "<group>"; };
                728FB7EC1536161C005426E1 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
                728FB7EF1536167A005426E1 /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = /usr/lib/libiconv.dylib; sourceTree = "<absolute>"; };
                728FB7F01536167A005426E1 /* libresolv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libresolv.dylib; path = /usr/lib/libresolv.dylib; sourceTree = "<absolute>"; };
                729D4B561A2CB48700692B21 /* CHANGES-2.0.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "CHANGES-2.0.txt"; path = "../CHANGES-2.0.txt"; sourceTree = "<group>"; };
-               729D4B571A2CB48700692B21 /* CHANGES-IPPTOOL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "CHANGES-IPPTOOL.txt"; path = "../CHANGES-IPPTOOL.txt"; sourceTree = "<group>"; };
                72A4332F155844CF002E172D /* libcups_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcups_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               72A8B3D61C188BDE00A1A547 /* ppd-util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-util.c"; path = "../cups/ppd-util.c"; sourceTree = "<group>"; };
                72C16CB8137B195D007E4BF4 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../scheduler/file.c; sourceTree = SOURCE_ROOT; };
                72CF95E018A13543000FCAE4 /* dest-job.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-job.c"; path = "../cups/dest-job.c"; sourceTree = "<group>"; };
                72CF95E118A13543000FCAE4 /* dest-localization.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-localization.c"; path = "../cups/dest-localization.c"; sourceTree = "<group>"; };
                72E65BC618DC7A6B00097E89 /* api-overview.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-overview.shtml"; path = "../cups/api-overview.shtml"; sourceTree = "<group>"; };
                72E65BC718DC7A6B00097E89 /* api-ppd.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-ppd.header"; path = "../cups/api-ppd.header"; sourceTree = "<group>"; };
                72E65BC818DC7A6B00097E89 /* api-ppd.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-ppd.shtml"; path = "../cups/api-ppd.shtml"; sourceTree = "<group>"; };
-               72E65BC918DC7A7E00097E89 /* api-ppdc.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-ppdc.header"; path = "../ppdc/api-ppdc.header"; sourceTree = "<group>"; };
-               72E65BCA18DC7A7E00097E89 /* api-ppdc.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-ppdc.shtml"; path = "../ppdc/api-ppdc.shtml"; sourceTree = "<group>"; };
                72E65BCB18DC7A9800097E89 /* api-raster.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-raster.header"; path = "../filter/api-raster.header"; sourceTree = "<group>"; };
                72E65BCC18DC7A9800097E89 /* api-raster.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-raster.shtml"; path = "../filter/api-raster.shtml"; sourceTree = "<group>"; };
                72E65BCD18DC7A9800097E89 /* postscript-driver.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "postscript-driver.header"; path = "../filter/postscript-driver.header"; sourceTree = "<group>"; };
                72E65BD718DC818400097E89 /* org.cups.cupsd.service.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = org.cups.cupsd.service.in; path = ../scheduler/org.cups.cupsd.service.in; sourceTree = SOURCE_ROOT; };
                72E65BD818DC818400097E89 /* org.cups.cupsd.socket.in */ = {isa = PBXFileReference; lastKnownFileType = text; name = org.cups.cupsd.socket.in; path = ../scheduler/org.cups.cupsd.socket.in; sourceTree = SOURCE_ROOT; };
                72E65BD918DC850A00097E89 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../Makefile; sourceTree = "<group>"; };
-               72E65BDA18DC852700097E89 /* api-mime.header */ = {isa = PBXFileReference; lastKnownFileType = text; name = "api-mime.header"; path = "../scheduler/api-mime.header"; sourceTree = SOURCE_ROOT; };
-               72E65BDB18DC852700097E89 /* api-mime.shtml */ = {isa = PBXFileReference; lastKnownFileType = text.html.other; name = "api-mime.shtml"; path = "../scheduler/api-mime.shtml"; sourceTree = SOURCE_ROOT; };
                72E65BDC18DC852700097E89 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = Makefile; path = ../scheduler/Makefile; sourceTree = SOURCE_ROOT; };
                72E65BDD18DCA35700097E89 /* CHANGES-1.7.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "CHANGES-1.7.txt"; path = "../CHANGES-1.7.txt"; sourceTree = "<group>"; };
                72E65BDE18DCA35700097E89 /* CHANGES.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = CHANGES.txt; path = ../CHANGES.txt; sourceTree = "<group>"; };
                72E65BDF18DCA35700097E89 /* CREDITS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = CREDITS.txt; path = ../CREDITS.txt; sourceTree = "<group>"; };
                72E65BE018DCA35700097E89 /* INSTALL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = INSTALL.txt; path = ../INSTALL.txt; sourceTree = "<group>"; };
-               72E65BE118DCA35700097E89 /* IPPTOOL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = IPPTOOL.txt; path = ../IPPTOOL.txt; sourceTree = "<group>"; };
                72E65BE218DCA35700097E89 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE.txt; path = ../LICENSE.txt; sourceTree = "<group>"; };
                72E65BE318DCA35700097E89 /* README.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = README.txt; path = ../README.txt; sourceTree = "<group>"; };
                72F75A521336F950004BB496 /* cupstestppd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupstestppd; sourceTree = BUILT_PRODUCTS_DIR; };
                72FC29D01A37A1CA00BDF935 /* usb-unix.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = "usb-unix.c"; path = "../backend/usb-unix.c"; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
-/* Begin PBXFrameworksBuildPhase section */
-               270CCDA4135E3C9E00007BE2 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
+/* Begin PBXFrameworksBuildPhase section */
+               270696331CADF3E200FFE5FB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               270696341CADF3E200FFE5FB /* SystemConfiguration.framework in Frameworks */,
+                               270696351CADF3E200FFE5FB /* CoreFoundation.framework in Frameworks */,
+                               270696381CADF3E200FFE5FB /* libiconv.dylib in Frameworks */,
+                               270696391CADF3E200FFE5FB /* libresolv.dylib in Frameworks */,
+                               2706963A1CADF3E200FFE5FB /* libz.dylib in Frameworks */,
+                               2706963B1CADF3E200FFE5FB /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               270CCDA4135E3C9E00007BE2 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284DC1CC1254C00E517C7 /* libcupsmime_static.a in Frameworks */,
+                               2767FC57192674C4000F61D3 /* libcups_static.a in Frameworks */,
+                               278C58E9136B64B000836530 /* CoreFoundation.framework in Frameworks */,
+                               278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */,
+                               278C58EB136B64B000836530 /* Security.framework in Frameworks */,
+                               278C58EC136B64B000836530 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               270D02181D707E0200EA9403 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               270D02191D707E0200EA9403 /* libcups_static.a in Frameworks */,
+                               270D021A1D707E0200EA9403 /* CoreFoundation.framework in Frameworks */,
+                               270D021B1D707E0200EA9403 /* Kerberos.framework in Frameworks */,
+                               270D021C1D707E0200EA9403 /* libiconv.dylib in Frameworks */,
+                               270D021D1D707E0200EA9403 /* libresolv.dylib in Frameworks */,
+                               270D021E1D707E0200EA9403 /* libz.dylib in Frameworks */,
+                               270D021F1D707E0200EA9403 /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271284E61CC1261900E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284E71CC1261900E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271284F31CC1264B00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284F41CC1264B00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285001CC1265D00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285011CC1265D00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712850D1CC1267A00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712850E1CC1267A00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712851A1CC1269700E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712851B1CC1269700E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285271CC126AA00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285281CC126AA00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285341CC1270B00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285351CC1270B00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285411CC1271E00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285421CC1271E00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712854E1CC1272D00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712854F1CC1272D00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712855B1CC1274300E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712855C1CC1274300E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285681CC1275200E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285691CC1275200E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285751CC1276400E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285761CC1276400E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712859A1CC12D1300E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285A21CC12D2900E517C7 /* libcupscgi.dylib in Frameworks */,
+                               2712859B1CC12D1300E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285A81CC12D3A00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285A91CC12D3A00E517C7 /* libcupscgi.dylib in Frameworks */,
+                               271285AA1CC12D3A00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285B61CC12D4E00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285B71CC12D4E00E517C7 /* libcupscgi.dylib in Frameworks */,
+                               271285B81CC12D4E00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285C41CC12D5E00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285C51CC12D5E00E517C7 /* libcupscgi.dylib in Frameworks */,
+                               271285C61CC12D5E00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285D21CC12DBF00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285D31CC12DBF00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285DF1CC12DDF00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285E01CC12DDF00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285EC1CC12E2D00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285ED1CC12E2D00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285FA1CC12EEB00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286041CC12F0800E517C7 /* libcupsimage.dylib in Frameworks */,
+                               271285FB1CC12EEB00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712860C1CC12F0B00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712860D1CC12F0B00E517C7 /* libcupsimage.dylib in Frameworks */,
+                               2712860E1CC12F0B00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712861C1CC12F1A00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712861D1CC12F1A00E517C7 /* libcupsimage.dylib in Frameworks */,
+                               2712861E1CC12F1A00E517C7 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712865C1CC1309000E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712865D1CC1309000E517C7 /* libcups_static.a in Frameworks */,
+                               2712865E1CC1309000E517C7 /* CoreFoundation.framework in Frameworks */,
+                               2712865F1CC1309000E517C7 /* libresolv.dylib in Frameworks */,
+                               271286601CC1309000E517C7 /* libz.dylib in Frameworks */,
+                               271286611CC1309000E517C7 /* Security.framework in Frameworks */,
+                               271286621CC1309000E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286721CC1310E00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286731CC1310E00E517C7 /* libcupsimage_static.a in Frameworks */,
+                               271286741CC1310E00E517C7 /* libcups_static.a in Frameworks */,
+                               271286751CC1310E00E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271286761CC1310E00E517C7 /* Kerberos.framework in Frameworks */,
+                               271286771CC1310E00E517C7 /* Security.framework in Frameworks */,
+                               271286781CC1310E00E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712868C1CC13DC000E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712868D1CC13DC000E517C7 /* libcups_static.a in Frameworks */,
+                               2712868E1CC13DC000E517C7 /* CoreFoundation.framework in Frameworks */,
+                               2712868F1CC13DC000E517C7 /* Kerberos.framework in Frameworks */,
+                               271286901CC13DC000E517C7 /* Security.framework in Frameworks */,
+                               271286911CC13DC000E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712869D1CC13DF100E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712869E1CC13DF100E517C7 /* libcups_static.a in Frameworks */,
+                               2712869F1CC13DF100E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271286A01CC13DF100E517C7 /* Kerberos.framework in Frameworks */,
+                               271286A11CC13DF100E517C7 /* Security.framework in Frameworks */,
+                               271286A21CC13DF100E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286AE1CC13DFF00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286AF1CC13DFF00E517C7 /* libcups_static.a in Frameworks */,
+                               271286B01CC13DFF00E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271286B11CC13DFF00E517C7 /* Kerberos.framework in Frameworks */,
+                               271286B21CC13DFF00E517C7 /* Security.framework in Frameworks */,
+                               271286B31CC13DFF00E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286C01CC13E2100E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286C11CC13E2100E517C7 /* libcups.dylib in Frameworks */,
+                               271286C21CC13E2100E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271286C31CC13E2100E517C7 /* IOKit.framework in Frameworks */,
+                               271286C41CC13E2100E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286D01CC13E5B00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286D11CC13E5B00E517C7 /* libcups.dylib in Frameworks */,
+                               271286D21CC13E5B00E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271286D31CC13E5B00E517C7 /* IOKit.framework in Frameworks */,
+                               271286D41CC13E5B00E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286EA1CC13F2000E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286EB1CC13F2000E517C7 /* libcups.dylib in Frameworks */,
+                               271286EC1CC13F2000E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271286ED1CC13F2000E517C7 /* IOKit.framework in Frameworks */,
+                               271286EE1CC13F2000E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286FA1CC13F3F00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286FB1CC13F3F00E517C7 /* libcups.dylib in Frameworks */,
+                               271286FC1CC13F3F00E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271286FD1CC13F3F00E517C7 /* IOKit.framework in Frameworks */,
+                               271286FE1CC13F3F00E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712870E1CC13FAB00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712870F1CC13FAB00E517C7 /* libcups_static.a in Frameworks */,
+                               271287101CC13FAB00E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271287111CC13FAB00E517C7 /* Kerberos.framework in Frameworks */,
+                               271287121CC13FAB00E517C7 /* Security.framework in Frameworks */,
+                               271287131CC13FAB00E517C7 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271287251CC140BE00E517C7 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271287341CC140F500E517C7 /* CoreFoundation.framework in Frameworks */,
+                               271287321CC140EB00E517C7 /* libcups_static.a in Frameworks */,
+                               271287331CC140EB00E517C7 /* libcupsppdc_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               273BF6BA1333B5000022CAAB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2767FC5F1926750C000F61D3 /* CoreFoundation.framework in Frameworks */,
+                               2767FC601926750C000F61D3 /* libiconv.dylib in Frameworks */,
+                               2767FC611926750C000F61D3 /* libresolv.dylib in Frameworks */,
+                               2767FC621926750C000F61D3 /* libz.dylib in Frameworks */,
+                               2767FC631926750C000F61D3 /* Security.framework in Frameworks */,
+                               2767FC641926750C000F61D3 /* SystemConfiguration.framework in Frameworks */,
+                               2767FC58192674E0000F61D3 /* libcups_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF5C913332B1F00317ECB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF5DD13332D0600317ECB /* libcups.dylib in Frameworks */,
+                               274FF6241333323B00317ECB /* libcupsppdc.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF5EB133330C800317ECB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               7200511218F492F200E7B81B /* CoreFoundation.framework in Frameworks */,
+                               274FF6231333321400317ECB /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF6261333333600317ECB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF6321333334A00317ECB /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF63B1333358B00317ECB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72CEF95618A966E000FA9B81 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF64C133339C400317ECB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF658133339D300317ECB /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF67513333B2F00317ECB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF68513333B4300317ECB /* libcups.dylib in Frameworks */,
+                               274FF68613333B4300317ECB /* libcupsmime.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF6B91333B1C400317ECB /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72BFD609191AF14C0005DA37 /* SystemConfiguration.framework in Frameworks */,
+                               72BFD602191AF1270005DA37 /* CoreFoundation.framework in Frameworks */,
+                               72BFD603191AF1270005DA37 /* GSS.framework in Frameworks */,
+                               72BFD604191AF1270005DA37 /* Kerberos.framework in Frameworks */,
+                               72BFD605191AF1270005DA37 /* libiconv.dylib in Frameworks */,
+                               72BFD606191AF1270005DA37 /* libresolv.dylib in Frameworks */,
+                               72BFD607191AF1270005DA37 /* libz.dylib in Frameworks */,
+                               72BFD608191AF1270005DA37 /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683591337A9B6000D33D0 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683671337A9E0000D33D0 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2766836D1337AC79000D33D0 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683B11337AD06000D33D0 /* libcups.dylib in Frameworks */,
+                               276683B21337AD06000D33D0 /* libcupsppdc.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2766837A1337AC8C000D33D0 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683B71337AD23000D33D0 /* libcups.dylib in Frameworks */,
+                               276683B81337AD23000D33D0 /* libcupsppdc.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683871337AC97000D33D0 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683B91337AD31000D33D0 /* libcups.dylib in Frameworks */,
+                               276683BA1337AD31000D33D0 /* libcupsppdc.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683941337ACA2000D33D0 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683C31337B1B3000D33D0 /* libcups.dylib in Frameworks */,
+                               276683C41337B1B3000D33D0 /* libcupsppdc.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683A11337ACAB000D33D0 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683C91337B1C1000D33D0 /* libcups.dylib in Frameworks */,
+                               276683CA1337B1C1000D33D0 /* libcupsppdc.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683ED1337F78E000D33D0 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683FD1337F7B8000D33D0 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276684011337FA1D000D33D0 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2766840F1337FA38000D33D0 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2767FC4B19266A0D000F61D3 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2767FC6B192685E6000F61D3 /* libcups_static.a in Frameworks */,
+                               2767FC6C192685E6000F61D3 /* CoreFoundation.framework in Frameworks */,
+                               2767FC6D192685E6000F61D3 /* libiconv.dylib in Frameworks */,
+                               2767FC6E192685E6000F61D3 /* libresolv.dylib in Frameworks */,
+                               2767FC6F192685E6000F61D3 /* libz.dylib in Frameworks */,
+                               2767FC70192685E6000F61D3 /* Security.framework in Frameworks */,
+                               2767FC71192685E6000F61D3 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               278C58C8136B640300836530 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72BFD5FB191AF0A30005DA37 /* libcups_static.a in Frameworks */,
+                               72BFD5FC191AF0A30005DA37 /* CoreFoundation.framework in Frameworks */,
+                               72BFD5FD191AF0A30005DA37 /* Kerberos.framework in Frameworks */,
+                               72BFD5FE191AF0A30005DA37 /* libiconv.dylib in Frameworks */,
+                               72BFD5FF191AF0A30005DA37 /* libresolv.dylib in Frameworks */,
+                               72BFD600191AF0A30005DA37 /* libz.dylib in Frameworks */,
+                               72BFD601191AF0A30005DA37 /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               27A034781A8BDB1200650675 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               27A034851A8BDC5C00650675 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               720DD6BF1358FD5F0064AA82 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               720DD6CD1358FD720064AA82 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72220EAB1333047D00FCA411 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               728FB7F11536167A005426E1 /* libiconv.dylib in Frameworks */,
+                               728FB7F21536167A005426E1 /* libresolv.dylib in Frameworks */,
+                               728FB7ED1536161C005426E1 /* libz.dylib in Frameworks */,
+                               728FB7E91536161C005426E1 /* CoreFoundation.framework in Frameworks */,
+                               72D53A2A15B49110003F877F /* GSS.framework in Frameworks */,
+                               728FB7EA1536161C005426E1 /* Kerberos.framework in Frameworks */,
+                               728FB7EB1536161C005426E1 /* Security.framework in Frameworks */,
+                               728FB7EE15361642005426E1 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72220F5813330A5A00FCA411 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72D53A3A15B492FA003F877F /* libpam.dylib in Frameworks */,
+                               72220F6613330A7000FCA411 /* libcups.dylib in Frameworks */,
+                               72220FBF13330C1000FCA411 /* libcupsmime.dylib in Frameworks */,
+                               72D53A3415B4925B003F877F /* ApplicationServices.framework in Frameworks */,
+                               72D53A3015B4923F003F877F /* CoreFoundation.framework in Frameworks */,
+                               72D53A3B15B4930A003F877F /* GSS.framework in Frameworks */,
+                               72D53A3515B49270003F877F /* IOKit.framework in Frameworks */,
+                               72D53A3C15B4930A003F877F /* Kerberos.framework in Frameworks */,
+                               72D53A3115B4923F003F877F /* Security.framework in Frameworks */,
+                               72D53A3215B4923F003F877F /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72220FA913330B2200FCA411 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72220FBA13330BEE00FCA411 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724378FA1333E43E009631B9 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724379081333E4A5009631B9 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724379151333E532009631B9 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724379271333E93D009631B9 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               7243792D1333FB85009631B9 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               7243793B1333FB9D009631B9 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724379441333FEA9009631B9 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724379561333FF04009631B9 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724379581333FF1D009631B9 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724379661333FF3B009631B9 /* libcups.dylib in Frameworks */,
+                               72D53A2F15B49174003F877F /* CoreFoundation.framework in Frameworks */,
+                               72D53A2D15B4913D003F877F /* IOKit.framework in Frameworks */,
+                               72D53A2E15B4915B003F877F /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5291CC0370C0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA52A1CC0370C0092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA52B1CC0370C0092477B /* libiconv.dylib in Frameworks */,
+                               724FA52C1CC0370C0092477B /* libresolv.dylib in Frameworks */,
+                               724FA52D1CC0370C0092477B /* libz.dylib in Frameworks */,
+                               724FA52E1CC0370C0092477B /* Security.framework in Frameworks */,
+                               724FA52F1CC0370C0092477B /* SystemConfiguration.framework in Frameworks */,
+                               724FA5301CC0370C0092477B /* libcups_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA53C1CC037370092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA53D1CC037370092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA53E1CC037370092477B /* libiconv.dylib in Frameworks */,
+                               724FA53F1CC037370092477B /* libresolv.dylib in Frameworks */,
+                               724FA5401CC037370092477B /* libz.dylib in Frameworks */,
+                               724FA5411CC037370092477B /* Security.framework in Frameworks */,
+                               724FA5421CC037370092477B /* SystemConfiguration.framework in Frameworks */,
+                               724FA5431CC037370092477B /* libcups_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA54F1CC037500092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5501CC037500092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA5511CC037500092477B /* libiconv.dylib in Frameworks */,
+                               724FA5521CC037500092477B /* libresolv.dylib in Frameworks */,
+                               724FA5531CC037500092477B /* libz.dylib in Frameworks */,
+                               724FA5541CC037500092477B /* Security.framework in Frameworks */,
+                               724FA5551CC037500092477B /* SystemConfiguration.framework in Frameworks */,
+                               724FA5561CC037500092477B /* libcups_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5621CC037670092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5631CC037670092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA5641CC037670092477B /* libiconv.dylib in Frameworks */,
+                               724FA5651CC037670092477B /* libresolv.dylib in Frameworks */,
+                               724FA5661CC037670092477B /* libz.dylib in Frameworks */,
+                               724FA5671CC037670092477B /* Security.framework in Frameworks */,
+                               724FA5681CC037670092477B /* SystemConfiguration.framework in Frameworks */,
+                               724FA5691CC037670092477B /* libcups_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5751CC037810092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5761CC037810092477B /* libcups_static.a in Frameworks */,
+                               724FA5771CC037810092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA5781CC037810092477B /* libiconv.dylib in Frameworks */,
+                               724FA5791CC037810092477B /* libresolv.dylib in Frameworks */,
+                               724FA57A1CC037810092477B /* libz.dylib in Frameworks */,
+                               724FA57B1CC037810092477B /* Security.framework in Frameworks */,
+                               724FA57C1CC037810092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5881CC037980092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5891CC037980092477B /* libcups_static.a in Frameworks */,
+                               724FA58A1CC037980092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA58B1CC037980092477B /* Kerberos.framework in Frameworks */,
+                               724FA58C1CC037980092477B /* libiconv.dylib in Frameworks */,
+                               724FA58D1CC037980092477B /* libresolv.dylib in Frameworks */,
+                               724FA58E1CC037980092477B /* libz.dylib in Frameworks */,
+                               724FA58F1CC037980092477B /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA59B1CC037AA0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA59C1CC037AA0092477B /* libcups_static.a in Frameworks */,
+                               724FA59D1CC037AA0092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA59E1CC037AA0092477B /* Kerberos.framework in Frameworks */,
+                               724FA59F1CC037AA0092477B /* libiconv.dylib in Frameworks */,
+                               724FA5A01CC037AA0092477B /* libresolv.dylib in Frameworks */,
+                               724FA5A11CC037AA0092477B /* libz.dylib in Frameworks */,
+                               724FA5A21CC037AA0092477B /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5AE1CC037C60092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5AF1CC037C60092477B /* libcups_static.a in Frameworks */,
+                               724FA5B01CC037C60092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA5B11CC037C60092477B /* Kerberos.framework in Frameworks */,
+                               724FA5B21CC037C60092477B /* libiconv.dylib in Frameworks */,
+                               724FA5B31CC037C60092477B /* libresolv.dylib in Frameworks */,
+                               724FA5B41CC037C60092477B /* libz.dylib in Frameworks */,
+                               724FA5B51CC037C60092477B /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5C11CC037D90092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5C21CC037D90092477B /* libcups_static.a in Frameworks */,
+                               724FA5C31CC037D90092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA5C41CC037D90092477B /* Kerberos.framework in Frameworks */,
+                               724FA5C51CC037D90092477B /* libiconv.dylib in Frameworks */,
+                               724FA5C61CC037D90092477B /* libresolv.dylib in Frameworks */,
+                               724FA5C71CC037D90092477B /* libz.dylib in Frameworks */,
+                               724FA5C81CC037D90092477B /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5D61CC037F00092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5D71CC037F00092477B /* libcups_static.a in Frameworks */,
+                               724FA5D81CC037F00092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA5D91CC037F00092477B /* Kerberos.framework in Frameworks */,
+                               724FA5DA1CC037F00092477B /* Security.framework in Frameworks */,
+                               724FA5DB1CC037F00092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5EA1CC038040092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5EB1CC038040092477B /* libcups_static.a in Frameworks */,
+                               724FA5EC1CC038040092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA5ED1CC038040092477B /* Kerberos.framework in Frameworks */,
+                               724FA5EE1CC038040092477B /* Security.framework in Frameworks */,
+                               724FA5EF1CC038040092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5FE1CC038190092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5FF1CC038190092477B /* libcups_static.a in Frameworks */,
+                               724FA6001CC038190092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6011CC038190092477B /* Kerberos.framework in Frameworks */,
+                               724FA6021CC038190092477B /* Security.framework in Frameworks */,
+                               724FA6031CC038190092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6121CC0382B0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284DA1CC1251400E517C7 /* libcupsimage_static.a in Frameworks */,
+                               724FA6131CC0382B0092477B /* libcups_static.a in Frameworks */,
+                               724FA6141CC0382B0092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6151CC0382B0092477B /* Kerberos.framework in Frameworks */,
+                               724FA6161CC0382B0092477B /* Security.framework in Frameworks */,
+                               724FA6171CC0382B0092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6261CC038410092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6271CC038410092477B /* libcups_static.a in Frameworks */,
+                               724FA6281CC038410092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6291CC038410092477B /* Kerberos.framework in Frameworks */,
+                               724FA62A1CC038410092477B /* Security.framework in Frameworks */,
+                               724FA62B1CC038410092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA63A1CC038560092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA63B1CC038560092477B /* libcups_static.a in Frameworks */,
+                               724FA63C1CC038560092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA63D1CC038560092477B /* Kerberos.framework in Frameworks */,
+                               724FA63E1CC038560092477B /* Security.framework in Frameworks */,
+                               724FA63F1CC038560092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA64E1CC0386E0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA64F1CC0386E0092477B /* libcups_static.a in Frameworks */,
+                               724FA6501CC0386E0092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6511CC0386E0092477B /* Kerberos.framework in Frameworks */,
+                               724FA6521CC0386E0092477B /* Security.framework in Frameworks */,
+                               724FA6531CC0386E0092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6651CC038A50092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6661CC038A50092477B /* libcups_static.a in Frameworks */,
+                               724FA6671CC038A50092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6681CC038A50092477B /* Kerberos.framework in Frameworks */,
+                               724FA6691CC038A50092477B /* Security.framework in Frameworks */,
+                               724FA66A1CC038A50092477B /* SystemConfiguration.framework in Frameworks */,
+                               724FA66B1CC038A50092477B /* libcupsmime.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6771CC038BD0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6781CC038BD0092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6791CC038BD0092477B /* libiconv.dylib in Frameworks */,
+                               724FA67A1CC038BD0092477B /* libresolv.dylib in Frameworks */,
+                               724FA67B1CC038BD0092477B /* libz.dylib in Frameworks */,
+                               724FA67C1CC038BD0092477B /* Security.framework in Frameworks */,
+                               724FA67D1CC038BD0092477B /* SystemConfiguration.framework in Frameworks */,
+                               724FA67E1CC038BD0092477B /* libcups_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA68C1CC038D90092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA68D1CC038D90092477B /* libcups_static.a in Frameworks */,
+                               724FA68E1CC038D90092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA68F1CC038D90092477B /* Kerberos.framework in Frameworks */,
+                               724FA6901CC038D90092477B /* Security.framework in Frameworks */,
+                               724FA6911CC038D90092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA69E1CC039200092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284D71CC124D700E517C7 /* libcupscgi_static.a in Frameworks */,
+                               724FA69F1CC039200092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6A01CC039200092477B /* libiconv.dylib in Frameworks */,
+                               724FA6A11CC039200092477B /* libresolv.dylib in Frameworks */,
+                               724FA6A21CC039200092477B /* libz.dylib in Frameworks */,
+                               724FA6A31CC039200092477B /* Security.framework in Frameworks */,
+                               724FA6A41CC039200092477B /* SystemConfiguration.framework in Frameworks */,
+                               724FA6A51CC039200092477B /* libcups_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6B11CC0393E0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284D81CC124E300E517C7 /* libcupscgi_static.a in Frameworks */,
+                               724FA6B21CC0393E0092477B /* libcups_static.a in Frameworks */,
+                               724FA6B31CC0393E0092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6B41CC0393E0092477B /* Kerberos.framework in Frameworks */,
+                               724FA6B51CC0393E0092477B /* libiconv.dylib in Frameworks */,
+                               724FA6B61CC0393E0092477B /* libresolv.dylib in Frameworks */,
+                               724FA6B71CC0393E0092477B /* libz.dylib in Frameworks */,
+                               724FA6B81CC0393E0092477B /* Security.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6C61CC0395A0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284DB1CC1251F00E517C7 /* libcupscgi_static.a in Frameworks */,
+                               724FA6C71CC0395A0092477B /* libcups_static.a in Frameworks */,
+                               724FA6C81CC0395A0092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6C91CC0395A0092477B /* Kerberos.framework in Frameworks */,
+                               724FA6CA1CC0395A0092477B /* Security.framework in Frameworks */,
+                               724FA6CB1CC0395A0092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6DF1CC039DE0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6E01CC039DE0092477B /* libcups_static.a in Frameworks */,
+                               724FA6E11CC039DE0092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6E21CC039DE0092477B /* Kerberos.framework in Frameworks */,
+                               724FA6E31CC039DE0092477B /* Security.framework in Frameworks */,
+                               724FA6E41CC039DE0092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6F41CC03A210092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284D91CC124F000E517C7 /* libcupsppdc_static.a in Frameworks */,
+                               724FA6F51CC03A210092477B /* libcups_static.a in Frameworks */,
+                               724FA6F61CC03A210092477B /* CoreFoundation.framework in Frameworks */,
+                               724FA6F71CC03A210092477B /* Kerberos.framework in Frameworks */,
+                               724FA6F81CC03A210092477B /* Security.framework in Frameworks */,
+                               724FA6F91CC03A210092477B /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7081CC03A490092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7171CC03A990092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7371CC03AAF0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7481CC03ACC0092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA7491CC03ACC0092477B /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7641CC03AF60092477B /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               7258EADF134594C4009286F1 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               7258EAF413459B6D009286F1 /* libcups.dylib in Frameworks */,
+                               7258EAF513459B6D009286F1 /* libcupsimage.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               726AD6F4135E88F0002C930D /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2767FC6519267538000F61D3 /* libcups_static.a in Frameworks */,
+                               2767FC6619267538000F61D3 /* CoreFoundation.framework in Frameworks */,
+                               2767FC6719267538000F61D3 /* libresolv.dylib in Frameworks */,
+                               2767FC6819267538000F61D3 /* libz.dylib in Frameworks */,
+                               2767FC6919267538000F61D3 /* Security.framework in Frameworks */,
+                               2767FC6A19267538000F61D3 /* SystemConfiguration.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72CF95EB18A19134000FCAE4 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72CF95EC18A19134000FCAE4 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72F75A4F1336F950004BB496 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683E51337B2BE000D33D0 /* libcupsimage.dylib in Frameworks */,
+                               276683E21337B29C000D33D0 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72F75A5E1336F9A3004BB496 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72F75A671336FA38004BB496 /* libcups.dylib in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+               2712867F1CC1394100E517C7 /* monitors */ = {
+                       isa = PBXGroup;
+                       children = (
+                               271286801CC1396100E517C7 /* bcp.c */,
+                               271286811CC1396100E517C7 /* tbcp.c */,
+                       );
+                       name = monitors;
+                       sourceTree = "<group>";
+               };
+               271286821CC13D7600E517C7 /* tools */ = {
+                       isa = PBXGroup;
+                       children = (
+                               2712871D1CC140B400E517C7 /* genstrings.cxx */,
+                               271286831CC13D9600E517C7 /* checkpo.c */,
+                               271286841CC13D9600E517C7 /* cups.pot */,
+                               271287191CC13FDB00E517C7 /* mantohtml.c */,
+                               271286851CC13D9600E517C7 /* po2strings.c */,
+                               271286861CC13D9600E517C7 /* strings2po.c */,
+                       );
+                       name = tools;
+                       sourceTree = "<group>";
+               };
+               273BF6B81333B4A90022CAAB /* tests */ = {
+                       isa = PBXGroup;
+                       children = (
+                               270D02251D707E3700EA9403 /* testcreds.c */,
+                               2712866A1CC130FF00E517C7 /* rasterbench.c */,
+                               724FA65B1CC0389F0092477B /* test1284.c */,
+                               727EF041192E3544001EF690 /* testadmin.c */,
+                               727EF042192E3544001EF690 /* testarray.c */,
+                               724FA65C1CC0389F0092477B /* testbackend.c */,
+                               727EF043192E3544001EF690 /* testcache.c */,
+                               724FA6EC1CC03A1D0092477B /* testcatalog.cxx */,
+                               727EF03D192E3498001EF690 /* testcgi.c */,
+                               727EF044192E3544001EF690 /* testconflicts.c */,
+                               273BF6C61333B5370022CAAB /* testcups.c */,
+                               2767FC5119266A36000F61D3 /* testdest.c */,
+                               727EF045192E3544001EF690 /* testfile.c */,
+                               727EF03E192E3498001EF690 /* testhi.c */,
+                               278C58E2136B647200836530 /* testhttp.c */,
+                               727EF046192E3544001EF690 /* testi18n.c */,
+                               727EF047192E3544001EF690 /* testipp.c */,
+                               727EF048192E3544001EF690 /* testlang.c */,
+                               727EF04D192E3602001EF690 /* testlpd.c */,
+                               270CCDBB135E3D3E00007BE2 /* testmime.c */,
+                               724FA6D71CC039D00092477B /* testnotify.c */,
+                               727EF049192E3544001EF690 /* testoptions.c */,
+                               727EF04A192E3544001EF690 /* testppd.c */,
+                               727EF04B192E3544001EF690 /* testpwg.c */,
+                               27F89DA21B3AC43B00E5A4B7 /* testraster.c */,
+                               727EF04C192E3544001EF690 /* testsnmp.c */,
+                               727EF04E192E3602001EF690 /* testspeed.c */,
+                               727EF04F192E3602001EF690 /* testsub.c */,
+                               724FA65D1CC0389F0092477B /* testsupplies.c */,
+                               727EF03F192E3498001EF690 /* testtemplate.c */,
+                               271286681CC130BD00E517C7 /* tlscheck.c */,
+                       );
+                       name = tests;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               274FF5D513332C2C00317ECB /* daemon */ = {
+                       isa = PBXGroup;
+                       children = (
+                               274FF6351333344400317ECB /* cups-deviced.c */,
+                               274FF5D613332CC700317ECB /* cups-driverd.cxx */,
+                               274FF6491333398D00317ECB /* cups-exec.c */,
+                               274FF65B133339FC00317ECB /* cups-lpd.c */,
+                               274FF5D713332CC700317ECB /* util.c */,
+                               274FF5D813332CC700317ECB /* util.h */,
+                       );
+                       name = daemon;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               274FF5F41333310400317ECB /* libcupsppdc */ = {
+                       isa = PBXGroup;
+                       children = (
+                               274FF5F51333315100317ECB /* ppdc-array.cxx */,
+                               274FF5F61333315100317ECB /* ppdc-attr.cxx */,
+                               274FF5F71333315100317ECB /* ppdc-catalog.cxx */,
+                               274FF5F81333315100317ECB /* ppdc-choice.cxx */,
+                               274FF5F91333315100317ECB /* ppdc-constraint.cxx */,
+                               274FF5FA1333315100317ECB /* ppdc-driver.cxx */,
+                               274FF5FB1333315100317ECB /* ppdc-file.cxx */,
+                               274FF5FC1333315100317ECB /* ppdc-filter.cxx */,
+                               274FF5FD1333315100317ECB /* ppdc-font.cxx */,
+                               274FF5FE1333315100317ECB /* ppdc-group.cxx */,
+                               274FF5FF1333315100317ECB /* ppdc-import.cxx */,
+                               274FF6001333315100317ECB /* ppdc-mediasize.cxx */,
+                               274FF6011333315100317ECB /* ppdc-message.cxx */,
+                               274FF6021333315100317ECB /* ppdc-option.cxx */,
+                               274FF6031333315100317ECB /* ppdc-private.h */,
+                               274FF6041333315100317ECB /* ppdc-profile.cxx */,
+                               274FF6051333315100317ECB /* ppdc-shared.cxx */,
+                               274FF6061333315100317ECB /* ppdc-source.cxx */,
+                               274FF6071333315100317ECB /* ppdc-string.cxx */,
+                               274FF6081333315100317ECB /* ppdc-variable.cxx */,
+                       );
+                       name = libcupsppdc;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               274FF67313333B0A00317ECB /* commands */ = {
+                       isa = PBXGroup;
+                       children = (
+                               2732E089137A3F5200FAFEF6 /* cancel.c */,
+                               2732E08A137A3F5200FAFEF6 /* cupsaccept.c */,
+                               276684101337FA7C000D33D0 /* cupsaddsmb.c */,
+                               276683681337AA00000D33D0 /* cupsctl.c */,
+                               274FF68713333B6E00317ECB /* cupsfilter.c */,
+                               2732E08B137A3F5200FAFEF6 /* cupstestdsc.c */,
+                               72F75A5B1336F988004BB496 /* cupstestppd.c */,
+                               72CF95F218A19165000FCAE4 /* ippfind.c */,
+                               726AD701135E8A90002C930D /* ippserver.c */,
+                               276683F91337F7A9000D33D0 /* ipptool.c */,
+                               2732E08C137A3F5200FAFEF6 /* lp.c */,
+                               2732E08D137A3F5200FAFEF6 /* lpadmin.c */,
+                               271284DD1CC125FC00E517C7 /* lpc.c */,
+                               2732E08E137A3F5200FAFEF6 /* lpinfo.c */,
+                               2732E08F137A3F5200FAFEF6 /* lpmove.c */,
+                               2732E090137A3F5200FAFEF6 /* lpoptions.c */,
+                               271284DE1CC125FC00E517C7 /* lpq.c */,
+                               271284DF1CC125FC00E517C7 /* lpr.c */,
+                               271284E01CC125FC00E517C7 /* lprm.c */,
+                               2732E092137A3F5200FAFEF6 /* lpstat.c */,
+                       );
+                       name = commands;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               276683CB1337B1CC000D33D0 /* ppdc tools */ = {
+                       isa = PBXGroup;
+                       children = (
+                               276683CC1337B201000D33D0 /* ppdc.cxx */,
+                               276683CE1337B20D000D33D0 /* ppdhtml.cxx */,
+                               276683D01337B21A000D33D0 /* ppdi.cxx */,
+                               276683D21337B228000D33D0 /* ppdmerge.cxx */,
+                               276683D41337B237000D33D0 /* ppdpo.cxx */,
+                       );
+                       name = "ppdc tools";
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               72220EAF1333047D00FCA411 /* Products */ = {
+                       isa = PBXGroup;
+                       children = (
+                               72220F5B13330A5A00FCA411 /* cupsd */,
+                               274FF5CC13332B1F00317ECB /* cups-driverd */,
+                               274FF6291333333600317ECB /* cups-deviced */,
+                               274FF63E1333358B00317ECB /* cups-exec */,
+                               274FF64F133339C400317ECB /* cups-lpd */,
+                               274FF67813333B2F00317ECB /* cupsfilter */,
+                               273BF6BD1333B5000022CAAB /* testcups */,
+                               724378FD1333E43E009631B9 /* ipp */,
+                               724379181333E532009631B9 /* lpd */,
+                               724379301333FB85009631B9 /* socket */,
+                               724379471333FEA9009631B9 /* dnssd */,
+                               7243795B1333FF1D009631B9 /* usb */,
+                               72F75A521336F950004BB496 /* cupstestppd */,
+                               2766835C1337A9B6000D33D0 /* cupsctl */,
+                               276683701337AC79000D33D0 /* ppdc */,
+                               2766837D1337AC8C000D33D0 /* ppdhtml */,
+                               2766838A1337AC97000D33D0 /* ppdi */,
+                               276683971337ACA2000D33D0 /* ppdmerge */,
+                               276683A41337ACAB000D33D0 /* ppdpo */,
+                               276683F01337F78E000D33D0 /* ipptool */,
+                               276684041337FA1D000D33D0 /* cupsaddsmb */,
+                               7258EAE2134594C4009286F1 /* rastertopwg */,
+                               720DD6C21358FD5F0064AA82 /* snmp */,
+                               270CCDA7135E3C9E00007BE2 /* testmime */,
+                               726AD6F7135E88F0002C930D /* ippserver */,
+                               278C58CB136B640300836530 /* testhttp */,
+                               72A4332F155844CF002E172D /* libcups_static.a */,
+                               72CF95F118A19134000FCAE4 /* ipptool copy */,
+                               2767FC5019266A0D000F61D3 /* testdest */,
+                               27A0347B1A8BDB1300650675 /* lpadmin */,
+                               2706965A1CADF3E200FFE5FB /* libcups_ios.a */,
+                               724FA5351CC0370C0092477B /* testadmin */,
+                               724FA5481CC037370092477B /* testarray */,
+                               724FA55B1CC037500092477B /* testcache */,
+                               724FA56E1CC037670092477B /* testconflicts */,
+                               724FA5811CC037810092477B /* testfile */,
+                               724FA5941CC037980092477B /* testi18n */,
+                               724FA5A71CC037AA0092477B /* testipp */,
+                               724FA5BA1CC037C60092477B /* testlang */,
+                               724FA5CD1CC037D90092477B /* testlpd */,
+                               724FA5E11CC037F00092477B /* testoptions */,
+                               724FA5F51CC038040092477B /* testppd */,
+                               724FA6091CC038190092477B /* testpwg */,
+                               724FA61D1CC0382B0092477B /* testraster */,
+                               724FA6311CC038410092477B /* testsnmp */,
+                               724FA6451CC038560092477B /* testspeed */,
+                               724FA6591CC0386E0092477B /* testsub */,
+                               724FA6701CC038A50092477B /* test1284 */,
+                               724FA6831CC038BD0092477B /* testbackend */,
+                               724FA6971CC038D90092477B /* testsupplies */,
+                               724FA6AA1CC039200092477B /* testcgi */,
+                               724FA6BD1CC0393E0092477B /* testhi */,
+                               724FA6D11CC0395A0092477B /* testtemplate */,
+                               724FA6EA1CC039DE0092477B /* testnotify */,
+                               724FA6FF1CC03A210092477B /* testcatalog */,
+                               724FA70F1CC03A490092477B /* libcupsimage_static.a */,
+                               724FA71F1CC03A990092477B /* libcupsmime_static.a */,
+                               724FA7401CC03AAF0092477B /* libcupsppdc_static.a */,
+                               724FA74F1CC03ACC0092477B /* libcupscgi.dylib */,
+                               724FA76B1CC03AF60092477B /* libcupscgi_static.a */,
+                               271284EC1CC1261900E517C7 /* cancel */,
+                               271284F91CC1264B00E517C7 /* cupsaccept */,
+                               271285061CC1265D00E517C7 /* cupstestdsc */,
+                               271285131CC1267A00E517C7 /* lp */,
+                               271285201CC1269700E517C7 /* lpc */,
+                               2712852D1CC126AA00E517C7 /* lpinfo */,
+                               2712853A1CC1270B00E517C7 /* lpmove */,
+                               271285471CC1271E00E517C7 /* lpoptions */,
+                               271285541CC1272D00E517C7 /* lpq */,
+                               271285611CC1274300E517C7 /* lpr */,
+                               2712856E1CC1275200E517C7 /* lprm */,
+                               2712857B1CC1276400E517C7 /* lpstat */,
+                               271285A01CC12D1300E517C7 /* admin.cgi */,
+                               271285AF1CC12D3A00E517C7 /* classes.cgi */,
+                               271285BD1CC12D4E00E517C7 /* jobs.cgi */,
+                               271285CB1CC12D5E00E517C7 /* printers.cgi */,
+                               271285D81CC12DBF00E517C7 /* commandtops */,
+                               271285E51CC12DDF00E517C7 /* gziptoany */,
+                               271285F21CC12E2E00E517C7 /* pstops */,
+                               271286001CC12EEB00E517C7 /* rastertoepson */,
+                               271286131CC12F0B00E517C7 /* rastertohp */,
+                               271286231CC12F1A00E517C7 /* rastertolabel */,
+                               271286671CC1309000E517C7 /* tlscheck */,
+                               2712867D1CC1310E00E517C7 /* rasterbench */,
+                               271286961CC13DC000E517C7 /* checkpo */,
+                               271286A71CC13DF100E517C7 /* po2strings */,
+                               271286B81CC13DFF00E517C7 /* strings2po */,
+                               271286C91CC13E2100E517C7 /* bcp */,
+                               271286D91CC13E5B00E517C7 /* tbcp */,
+                               271286F31CC13F2000E517C7 /* mailto */,
+                               271287031CC13F3F00E517C7 /* rss */,
+                               271287181CC13FAB00E517C7 /* mantohtml */,
+                               2712872C1CC140BE00E517C7 /* genstrings */,
+                               270D02241D707E0200EA9403 /* testcreds */,
+                       );
+                       name = Products;
+                       sourceTree = "<group>";
+               };
+               72220EB41333050100FCA411 /* libcups */ = {
+                       isa = PBXGroup;
+                       children = (
+                               276683561337A8C5000D33D0 /* cups.strings */,
+                               27D3037D134148CB00F022B1 /* libcups2.def */,
+                               72220EB51333052D00FCA411 /* adminutil.c */,
+                               72220EB81333056300FCA411 /* array.c */,
+                               72220EBB1333056300FCA411 /* auth.c */,
+                               72220EBC1333056300FCA411 /* backchannel.c */,
+                               72220EBD1333056300FCA411 /* backend.c */,
+                               72220ED1133305BB00FCA411 /* debug.c */,
+                               72CF95E018A13543000FCAE4 /* dest-job.c */,
+                               72CF95E118A13543000FCAE4 /* dest-localization.c */,
+                               72CF95E218A13543000FCAE4 /* dest-options.c */,
+                               72220ED2133305BB00FCA411 /* dest.c */,
+                               72220ED3133305BB00FCA411 /* dir.c */,
+                               72220ED4133305BB00FCA411 /* dir.h */,
+                               72220ED6133305BB00FCA411 /* encode.c */,
+                               72220ED8133305BB00FCA411 /* file.c */,
+                               72220EDA133305BB00FCA411 /* getdevices.c */,
+                               72220EDB133305BB00FCA411 /* getifaddrs.c */,
+                               72220EDC133305BB00FCA411 /* getputfile.c */,
+                               72220EDD133305BB00FCA411 /* globals.c */,
+                               7284F9EF1BFCCD940026F886 /* hash.c */,
+                               72220EDE133305BB00FCA411 /* http-addr.c */,
+                               72220EDF133305BB00FCA411 /* http-addrlist.c */,
+                               72220EE1133305BB00FCA411 /* http-support.c */,
+                               72220EE2133305BB00FCA411 /* http.c */,
+                               72220EE5133305BB00FCA411 /* ipp-support.c */,
+                               72220EE6133305BB00FCA411 /* ipp.c */,
+                               72220EE8133305BB00FCA411 /* langprintf.c */,
+                               72220EEA133305BB00FCA411 /* language.c */,
+                               72220EEF133305BB00FCA411 /* md5.c */,
+                               72220EF0133305BB00FCA411 /* md5passwd.c */,
+                               72220EF1133305BB00FCA411 /* notify.c */,
+                               72220EF2133305BB00FCA411 /* options.c */,
+                               72220EF6133305BB00FCA411 /* ppd.c */,
+                               72220EBA1333056300FCA411 /* ppd-attr.c */,
+                               72220EF4133305BB00FCA411 /* ppd-cache.c */,
+                               72220EBF1333056300FCA411 /* ppd-conflicts.c */,
+                               72220EC21333056300FCA411 /* ppd-custom.c */,
+                               72220ED5133305BB00FCA411 /* ppd-emit.c */,
+                               72220EEC133305BB00FCA411 /* ppd-localize.c */,
+                               72220EED133305BB00FCA411 /* ppd-mark.c */,
+                               72220EF3133305BB00FCA411 /* ppd-page.c */,
+                               72A8B3D61C188BDE00A1A547 /* ppd-util.c */,
+                               72220EF8133305BB00FCA411 /* pwg-media.c */,
+                               72220EFB133305BB00FCA411 /* request.c */,
+                               72220EFC133305BB00FCA411 /* sidechannel.c */,
+                               72220EFF133305BB00FCA411 /* snmp.c */,
+                               72220F00133305BB00FCA411 /* snprintf.c */,
+                               72220F02133305BB00FCA411 /* string.c */,
+                               72220F03133305BB00FCA411 /* tempfile.c */,
+                               72220F05133305BB00FCA411 /* thread.c */,
+                               727AD5B619100A58009F6862 /* tls.c */,
+                               270B267D17F5C06700C8A3A9 /* tls-darwin.c */,
+                               270B267E17F5C06700C8A3A9 /* tls-gnutls.c */,
+                               270B268117F5C5D600C8A3A9 /* tls-sspi.c */,
+                               72220F06133305BB00FCA411 /* transcode.c */,
+                               72220F08133305BB00FCA411 /* usersys.c */,
+                               72220F09133305BB00FCA411 /* util.c */,
+                       );
+                       name = libcups;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               72220F45133305D000FCA411 /* Public Headers */ = {
+                       isa = PBXGroup;
+                       children = (
+                               72220EB71333056300FCA411 /* adminutil.h */,
+                               72220EB91333056300FCA411 /* array.h */,
+                               72220EBE1333056300FCA411 /* backend.h */,
+                               72220EC11333056300FCA411 /* cups.h */,
+                               72220ED9133305BB00FCA411 /* file.h */,
+                               72220EE3133305BB00FCA411 /* http.h */,
+                               72220EE7133305BB00FCA411 /* ipp.h */,
+                               72220EEB133305BB00FCA411 /* language.h */,
+                               72220EF7133305BB00FCA411 /* ppd.h */,
+                               274FF6091333315100317ECB /* ppdc.h */,
+                               2767FC7519269687000F61D3 /* pwg.h */,
+                               72220EFA133305BB00FCA411 /* raster.h */,
+                               72220EFD133305BB00FCA411 /* sidechannel.h */,
+                               72220F07133305BB00FCA411 /* transcode.h */,
+                               72220F0A133305BB00FCA411 /* versioning.h */,
+                       );
+                       name = "Public Headers";
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               72220F461333060C00FCA411 /* Private Headers */ = {
+                       isa = PBXGroup;
+                       children = (
+                               72220F471333063D00FCA411 /* config.h */,
+                               7234F41F1378A16F00D3E9C9 /* array-private.h */,
+                               72220EC01333056300FCA411 /* cups-private.h */,
+                               72220EC31333056300FCA411 /* debug-private.h */,
+                               72220ED7133305BB00FCA411 /* file-private.h */,
+                               72220EE0133305BB00FCA411 /* http-private.h */,
+                               72220EE4133305BB00FCA411 /* ipp-private.h */,
+                               72220EE9133305BB00FCA411 /* language-private.h */,
+                               72220EEE133305BB00FCA411 /* md5-private.h */,
+                               72220FB413330BCE00FCA411 /* mime.h */,
+                               7271883C1374AB14001A2036 /* mime-private.h */,
+                               72220EF5133305BB00FCA411 /* ppd-private.h */,
+                               72220EF9133305BB00FCA411 /* pwg-private.h */,
+                               2767FC76192696A0000F61D3 /* raster-private.h */,
+                               72220EFE133305BB00FCA411 /* snmp-private.h */,
+                               72220F01133305BB00FCA411 /* string-private.h */,
+                               72220F04133305BB00FCA411 /* thread-private.h */,
+                       );
+                       name = "Private Headers";
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               72220F5D13330A5A00FCA411 /* cupsd */ = {
+                       isa = PBXGroup;
+                       children = (
+                               72E65BDC18DC852700097E89 /* Makefile */,
+                               7226369B18AE6D19004ED309 /* org.cups.cups-lpd.plist */,
+                               72E65BD518DC818400097E89 /* org.cups.cups-lpd.plist.in */,
+                               72496E171A13A03B0051899C /* org.cups.cups-lpdAT.service.in */,
+                               72496E161A13A03B0051899C /* org.cups.cups-lpd.socket */,
+                               72E65BD618DC818400097E89 /* org.cups.cupsd.path.in */,
+                               7226369C18AE6D19004ED309 /* org.cups.cupsd.plist */,
+                               72E65BD718DC818400097E89 /* org.cups.cupsd.service.in */,
+                               72E65BD818DC818400097E89 /* org.cups.cupsd.socket.in */,
+                               72220F6913330B0C00FCA411 /* auth.c */,
+                               72220F6A13330B0C00FCA411 /* auth.h */,
+                               72220F6B13330B0C00FCA411 /* banners.c */,
+                               72220F6C13330B0C00FCA411 /* banners.h */,
+                               72220F6D13330B0C00FCA411 /* cert.c */,
+                               72220F6E13330B0C00FCA411 /* cert.h */,
+                               72220F6F13330B0C00FCA411 /* classes.c */,
+                               72220F7013330B0C00FCA411 /* classes.h */,
+                               72220F7113330B0C00FCA411 /* client.c */,
+                               72220F7213330B0C00FCA411 /* client.h */,
+                               72D53A3615B4929D003F877F /* colorman.c */,
+                               72D53A3715B4929D003F877F /* colorman.h */,
+                               72220F7313330B0C00FCA411 /* conf.c */,
+                               72220F7413330B0C00FCA411 /* conf.h */,
+                               72220F7513330B0C00FCA411 /* cupsd.h */,
+                               72220F7613330B0C00FCA411 /* dirsvc.c */,
+                               72220F7713330B0C00FCA411 /* dirsvc.h */,
+                               72220F7813330B0C00FCA411 /* env.c */,
+                               72C16CB8137B195D007E4BF4 /* file.c */,
+                               72220F7913330B0C00FCA411 /* ipp.c */,
+                               72220F7A13330B0C00FCA411 /* job.c */,
+                               72220F7B13330B0C00FCA411 /* job.h */,
+                               72220F7C13330B0C00FCA411 /* listen.c */,
+                               72220F7D13330B0C00FCA411 /* log.c */,
+                               72220F7E13330B0C00FCA411 /* main.c */,
+                               72220F7F13330B0C00FCA411 /* network.c */,
+                               72220F8013330B0C00FCA411 /* network.h */,
+                               72220F8113330B0C00FCA411 /* policy.c */,
+                               72220F8213330B0C00FCA411 /* policy.h */,
+                               72220F8313330B0C00FCA411 /* printers.c */,
+                               72220F8413330B0C00FCA411 /* printers.h */,
+                               72220F8513330B0C00FCA411 /* process.c */,
+                               72220F8613330B0C00FCA411 /* quotas.c */,
+                               72220F8813330B0C00FCA411 /* select.c */,
+                               72220F8913330B0C00FCA411 /* server.c */,
+                               72220F8A13330B0C00FCA411 /* statbuf.c */,
+                               72220F8B13330B0C00FCA411 /* statbuf.h */,
+                               72220F8C13330B0C00FCA411 /* subscriptions.c */,
+                               72220F8D13330B0C00FCA411 /* subscriptions.h */,
+                               72220F8E13330B0C00FCA411 /* sysman.c */,
+                               72220F8F13330B0C00FCA411 /* sysman.h */,
+                       );
+                       name = cupsd;
+                       path = .;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               72220FB013330B3400FCA411 /* libcupsmime */ = {
+                       isa = PBXGroup;
+                       children = (
+                               72220FB213330BCE00FCA411 /* filter.c */,
+                               72220FB313330BCE00FCA411 /* mime.c */,
+                               72220FB513330BCE00FCA411 /* type.c */,
+                       );
+                       name = libcupsmime;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               72220FB113330B4A00FCA411 /* Frameworks */ = {
+                       isa = PBXGroup;
+                       children = (
+                               2767FC591926750C000F61D3 /* CoreFoundation.framework */,
+                               2767FC5A1926750C000F61D3 /* libiconv.dylib */,
+                               2767FC5B1926750C000F61D3 /* libresolv.dylib */,
+                               2767FC5C1926750C000F61D3 /* libz.dylib */,
+                               2767FC5D1926750C000F61D3 /* Security.framework */,
+                               2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */,
+                               72D53A3915B492FA003F877F /* libpam.dylib */,
+                               72D53A3315B4925B003F877F /* ApplicationServices.framework */,
+                               72D53A2C15B4913D003F877F /* IOKit.framework */,
+                               72D53A2915B49110003F877F /* GSS.framework */,
+                               728FB7EF1536167A005426E1 /* libiconv.dylib */,
+                               728FB7F01536167A005426E1 /* libresolv.dylib */,
+                               728FB7EC1536161C005426E1 /* libz.dylib */,
+                               278C58E5136B64AF00836530 /* CoreFoundation.framework */,
+                               278C58E6136B64B000836530 /* Kerberos.framework */,
+                               278C58E7136B64B000836530 /* Security.framework */,
+                               278C58E8136B64B000836530 /* SystemConfiguration.framework */,
+                               72220EAE1333047D00FCA411 /* libcups.dylib */,
+                               72F75A611336F9A3004BB496 /* libcupsimage.dylib */,
+                               72220FAC13330B2200FCA411 /* libcupsmime.dylib */,
+                               274FF5EE133330C800317ECB /* libcupsppdc.dylib */,
+                       );
+                       name = Frameworks;
+                       sourceTree = "<group>";
+               };
+               724378F71333E3CE009631B9 /* backends */ = {
+                       isa = PBXGroup;
+                       children = (
+                               724379091333E4E3009631B9 /* backend-private.h */,
+                               724379501333FEBB009631B9 /* dnssd.c */,
+                               724379CA1334000E009631B9 /* ieee1284.c */,
+                               7243790A1333E4E3009631B9 /* ipp.c */,
+                               724379281333E952009631B9 /* lpd.c */,
+                               7243790B1333E4E3009631B9 /* network.c */,
+                               724379121333E516009631B9 /* runloop.c */,
+                               7243790C1333E4E3009631B9 /* snmp-supplies.c */,
+                               720DD6D21358FDDE0064AA82 /* snmp.c */,
+                               7243793C1333FD19009631B9 /* socket.c */,
+                               724379C51333FFC7009631B9 /* usb.c */,
+                               724379C41333FFC7009631B9 /* usb-darwin.c */,
+                               72FC29CF1A37A1CA00BDF935 /* usb-libusb.c */,
+                               72FC29D01A37A1CA00BDF935 /* usb-unix.c */,
+                               72F7F1D719D1C0CC00870B09 /* org.cups.usb-quirks */,
+                       );
+                       name = backends;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               724FA6D31CC0399D0092477B /* notifiers */ = {
+                       isa = PBXGroup;
+                       children = (
+                               724FA6D41CC039D00092477B /* dbus.c */,
+                               724FA6D51CC039D00092477B /* mailto.c */,
+                               724FA6D61CC039D00092477B /* rss.c */,
+                       );
+                       name = notifiers;
+                       sourceTree = "<group>";
+               };
+               7258EADC134594A8009286F1 /* filters */ = {
+                       isa = PBXGroup;
+                       children = (
+                               7271881713746EA8001A2036 /* commandtops.c */,
+                               7271881813746EA8001A2036 /* common.c */,
+                               7271881913746EA8001A2036 /* common.h */,
+                               7271881A13746EA8001A2036 /* gziptoany.c */,
+                               7271882013746EA8001A2036 /* pstops.c */,
+                               7271882113746EA8001A2036 /* rastertoepson.c */,
+                               7271882213746EA8001A2036 /* rastertohp.c */,
+                               7271882313746EA8001A2036 /* rastertolabel.c */,
+                               7258EAEC134594EB009286F1 /* rastertopwg.c */,
+                       );
+                       name = filters;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+               727EF02E192E3461001EF690 /* cgi-bin */ = {
+                       isa = PBXGroup;
+                       children = (
+                               727EF02F192E3498001EF690 /* admin.c */,
+                               727EF030192E3498001EF690 /* cgi-private.h */,
+                               727EF031192E3498001EF690 /* cgi.h */,
+                               727EF032192E3498001EF690 /* classes.c */,
+                               727EF033192E3498001EF690 /* help-index.c */,
+                               727EF034192E3498001EF690 /* help-index.h */,
+                               727EF035192E3498001EF690 /* help.c */,
+                               727EF036192E3498001EF690 /* html.c */,
+                               727EF037192E3498001EF690 /* ipp-var.c */,
+                               727EF038192E3498001EF690 /* jobs.c */,
+                               727EF039192E3498001EF690 /* makedocset.c */,
+                               727EF03A192E3498001EF690 /* printers.c */,
+                               727EF03B192E3498001EF690 /* search.c */,
+                               727EF03C192E3498001EF690 /* template.c */,
+                               727EF040192E3498001EF690 /* var.c */,
+                       );
+                       name = "cgi-bin";
+                       sourceTree = "<group>";
+               };
+               72BF96351333042100B1EAD7 = {
+                       isa = PBXGroup;
+                       children = (
+                               72E65BA218DC796500097E89 /* Autoconf Files */,
+                               72E65BB818DC79F800097E89 /* Documentation */,
+                               72220F45133305D000FCA411 /* Public Headers */,
+                               72220F461333060C00FCA411 /* Private Headers */,
+                               72220EB41333050100FCA411 /* libcups */,
+                               72F75A681336FA42004BB496 /* libcupsimage */,
+                               72220FB013330B3400FCA411 /* libcupsmime */,
+                               274FF5F41333310400317ECB /* libcupsppdc */,
+                               724378F71333E3CE009631B9 /* backends */,
+                               727EF02E192E3461001EF690 /* cgi-bin */,
+                               274FF67313333B0A00317ECB /* commands */,
+                               72220F5D13330A5A00FCA411 /* cupsd */,
+                               274FF5D513332C2C00317ECB /* daemon */,
+                               7258EADC134594A8009286F1 /* filters */,
+                               2712867F1CC1394100E517C7 /* monitors */,
+                               724FA6D31CC0399D0092477B /* notifiers */,
+                               276683CB1337B1CC000D33D0 /* ppdc tools */,
+                               273BF6B81333B4A90022CAAB /* tests */,
+                               271286821CC13D7600E517C7 /* tools */,
+                               72220FB113330B4A00FCA411 /* Frameworks */,
+                               72220EAF1333047D00FCA411 /* Products */,
+                       );
+                       indentWidth = 2;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       wrapsLines = 1;
+               };
+               72E65BA218DC796500097E89 /* Autoconf Files */ = {
+                       isa = PBXGroup;
+                       children = (
+                               72E65BD918DC850A00097E89 /* Makefile */,
+                               72E65BB718DC79CC00097E89 /* Makedefs.in */,
+                               72E65BA318DC797E00097E89 /* configure.ac */,
+                               7226369D18AE73BB004ED309 /* config.h.in */,
+                               72E65BB618DC79CC00097E89 /* cups-config.in */,
+                               72E65BA418DC799B00097E89 /* cups-common.m4 */,
+                               72E65BA518DC799B00097E89 /* cups-compiler.m4 */,
+                               72E65BA618DC799B00097E89 /* cups-defaults.m4 */,
+                               72E65BA718DC799B00097E89 /* cups-directories.m4 */,
+                               72E65BA818DC799B00097E89 /* cups-dnssd.m4 */,
+                               72E65BA918DC799B00097E89 /* cups-gssapi.m4 */,
+                               72E65BAA18DC799B00097E89 /* cups-largefile.m4 */,
+                               72E65BAB18DC799B00097E89 /* cups-startup.m4 */,
+                               72E65BAC18DC799B00097E89 /* cups-libtool.m4 */,
+                               72E65BAD18DC799B00097E89 /* cups-manpages.m4 */,
+                               72E65BAE18DC799B00097E89 /* cups-network.m4 */,
+                               72E65BAF18DC799B00097E89 /* cups-opsys.m4 */,
+                               72E65BB018DC799B00097E89 /* cups-pam.m4 */,
+                               72E65BB118DC799B00097E89 /* cups-poll.m4 */,
+                               72E65BB218DC799B00097E89 /* cups-scripting.m4 */,
+                               72E65BB318DC799B00097E89 /* cups-sharedlibs.m4 */,
+                               72E65BB418DC799B00097E89 /* cups-ssl.m4 */,
+                               72E65BB518DC799B00097E89 /* cups-threads.m4 */,
+                       );
+                       name = "Autoconf Files";
+                       sourceTree = "<group>";
+               };
+               72E65BB818DC79F800097E89 /* Documentation */ = {
+                       isa = PBXGroup;
+                       children = (
+                               72E65BBB18DC7A6B00097E89 /* api-array.header */,
+                               72E65BBC18DC7A6B00097E89 /* api-array.shtml */,
+                               72E65BBD18DC7A6B00097E89 /* api-cups.header */,
+                               72E65BBE18DC7A6B00097E89 /* api-cups.shtml */,
+                               72E65BBF18DC7A6B00097E89 /* api-filedir.header */,
+                               72E65BC018DC7A6B00097E89 /* api-filedir.shtml */,
+                               72E65BC118DC7A6B00097E89 /* api-filter.header */,
+                               72E65BC218DC7A6B00097E89 /* api-filter.shtml */,
+                               72E65BC318DC7A6B00097E89 /* api-httpipp.header */,
+                               72E65BC418DC7A6B00097E89 /* api-httpipp.shtml */,
+                               72E65BC518DC7A6B00097E89 /* api-overview.header */,
+                               72E65BC618DC7A6B00097E89 /* api-overview.shtml */,
+                               72E65BC718DC7A6B00097E89 /* api-ppd.header */,
+                               72E65BC818DC7A6B00097E89 /* api-ppd.shtml */,
+                               72E65BCB18DC7A9800097E89 /* api-raster.header */,
+                               72E65BCC18DC7A9800097E89 /* api-raster.shtml */,
+                               72E65BDD18DCA35700097E89 /* CHANGES-1.7.txt */,
+                               729D4B561A2CB48700692B21 /* CHANGES-2.0.txt */,
+                               72E65BDE18DCA35700097E89 /* CHANGES.txt */,
+                               72E65BDF18DCA35700097E89 /* CREDITS.txt */,
+                               72E65BB918DC7A3600097E89 /* doc */,
+                               72E65BE018DCA35700097E89 /* INSTALL.txt */,
+                               72E65BE218DCA35700097E89 /* LICENSE.txt */,
+                               72E65BBA18DC7A3600097E89 /* man */,
+                               72E65BCD18DC7A9800097E89 /* postscript-driver.header */,
+                               72E65BCE18DC7A9800097E89 /* postscript-driver.shtml */,
+                               72E65BCF18DC7A9800097E89 /* ppd-compiler.header */,
+                               72E65BD018DC7A9800097E89 /* ppd-compiler.shtml */,
+                               72E65BD118DC7A9800097E89 /* raster-driver.header */,
+                               72E65BD218DC7A9800097E89 /* raster-driver.shtml */,
+                               72E65BE318DCA35700097E89 /* README.txt */,
+                               72E65BD318DC7A9800097E89 /* spec-ppd.header */,
+                               72E65BD418DC7A9800097E89 /* spec-ppd.shtml */,
+                       );
+                       name = Documentation;
+                       sourceTree = "<group>";
+               };
+               72F75A681336FA42004BB496 /* libcupsimage */ = {
+                       isa = PBXGroup;
+                       children = (
+                               72F75A691336FA8A004BB496 /* error.c */,
+                               72F75A6A1336FA8A004BB496 /* interpret.c */,
+                               72F75A6B1336FA8A004BB496 /* raster.c */,
+                       );
+                       name = libcupsimage;
+                       sourceTree = "<group>";
+                       wrapsLines = 1;
+               };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+               2706963C1CADF3E200FFE5FB /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2706963D1CADF3E200FFE5FB /* adminutil.h in Headers */,
+                               2706963E1CADF3E200FFE5FB /* array.h in Headers */,
+                               2706963F1CADF3E200FFE5FB /* backend.h in Headers */,
+                               270696401CADF3E200FFE5FB /* cups-private.h in Headers */,
+                               270696411CADF3E200FFE5FB /* debug-private.h in Headers */,
+                               270696421CADF3E200FFE5FB /* file-private.h in Headers */,
+                               270696431CADF3E200FFE5FB /* http-private.h in Headers */,
+                               270696441CADF3E200FFE5FB /* ipp-private.h in Headers */,
+                               270696451CADF3E200FFE5FB /* language-private.h in Headers */,
+                               270696461CADF3E200FFE5FB /* md5-private.h in Headers */,
+                               270696471CADF3E200FFE5FB /* ppd-private.h in Headers */,
+                               270696481CADF3E200FFE5FB /* pwg-private.h in Headers */,
+                               270696491CADF3E200FFE5FB /* snmp-private.h in Headers */,
+                               2706964A1CADF3E200FFE5FB /* string-private.h in Headers */,
+                               2706964B1CADF3E200FFE5FB /* thread-private.h in Headers */,
+                               2706964C1CADF3E200FFE5FB /* config.h in Headers */,
+                               2706964D1CADF3E200FFE5FB /* cups.h in Headers */,
+                               2706964E1CADF3E200FFE5FB /* dir.h in Headers */,
+                               2706964F1CADF3E200FFE5FB /* file.h in Headers */,
+                               270696501CADF3E200FFE5FB /* http.h in Headers */,
+                               270696511CADF3E200FFE5FB /* ipp.h in Headers */,
+                               270696521CADF3E200FFE5FB /* language.h in Headers */,
+                               270696531CADF3E200FFE5FB /* ppd.h in Headers */,
+                               270696541CADF3E200FFE5FB /* sidechannel.h in Headers */,
+                               270696551CADF3E200FFE5FB /* transcode.h in Headers */,
+                               270696561CADF3E200FFE5FB /* versioning.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF5EC133330C800317ECB /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF61E1333315100317ECB /* ppdc.h in Headers */,
+                               274FF6181333315100317ECB /* ppdc-private.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF6C11333B1C400317ECB /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF6C21333B1C400317ECB /* adminutil.h in Headers */,
+                               274FF6C31333B1C400317ECB /* array.h in Headers */,
+                               274FF6C41333B1C400317ECB /* backend.h in Headers */,
+                               274FF6D01333B1C400317ECB /* cups-private.h in Headers */,
+                               274FF6D11333B1C400317ECB /* debug-private.h in Headers */,
+                               274FF6D21333B1C400317ECB /* file-private.h in Headers */,
+                               274FF6D31333B1C400317ECB /* http-private.h in Headers */,
+                               274FF6D41333B1C400317ECB /* ipp-private.h in Headers */,
+                               274FF6D51333B1C400317ECB /* language-private.h in Headers */,
+                               274FF6D61333B1C400317ECB /* md5-private.h in Headers */,
+                               274FF6D71333B1C400317ECB /* ppd-private.h in Headers */,
+                               274FF6D81333B1C400317ECB /* pwg-private.h in Headers */,
+                               274FF6D91333B1C400317ECB /* snmp-private.h in Headers */,
+                               274FF6DA1333B1C400317ECB /* string-private.h in Headers */,
+                               274FF6DB1333B1C400317ECB /* thread-private.h in Headers */,
+                               274FF6DC1333B1C400317ECB /* config.h in Headers */,
+                               274FF6C51333B1C400317ECB /* cups.h in Headers */,
+                               274FF6C61333B1C400317ECB /* dir.h in Headers */,
+                               274FF6C71333B1C400317ECB /* file.h in Headers */,
+                               274FF6C81333B1C400317ECB /* http.h in Headers */,
+                               274FF6C91333B1C400317ECB /* ipp.h in Headers */,
+                               274FF6CA1333B1C400317ECB /* language.h in Headers */,
+                               274FF6CB1333B1C400317ECB /* ppd.h in Headers */,
+                               274FF6CD1333B1C400317ECB /* sidechannel.h in Headers */,
+                               274FF6CE1333B1C400317ECB /* transcode.h in Headers */,
+                               274FF6CF1333B1C400317ECB /* versioning.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72220EAC1333047D00FCA411 /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72220EC41333056300FCA411 /* adminutil.h in Headers */,
+                               72220EC61333056300FCA411 /* array.h in Headers */,
+                               72220ECB1333056300FCA411 /* backend.h in Headers */,
+                               72220ECE1333056300FCA411 /* cups.h in Headers */,
+                               72220F0E133305BB00FCA411 /* dir.h in Headers */,
+                               72220F13133305BB00FCA411 /* file.h in Headers */,
+                               72220F1D133305BB00FCA411 /* http.h in Headers */,
+                               72220F21133305BB00FCA411 /* ipp.h in Headers */,
+                               72220F25133305BB00FCA411 /* language.h in Headers */,
+                               72220F31133305BB00FCA411 /* ppd.h in Headers */,
+                               72220F37133305BB00FCA411 /* sidechannel.h in Headers */,
+                               72220F41133305BB00FCA411 /* transcode.h in Headers */,
+                               72220F44133305BB00FCA411 /* versioning.h in Headers */,
+                               7234F4201378A16F00D3E9C9 /* array-private.h in Headers */,
+                               72220ECD1333056300FCA411 /* cups-private.h in Headers */,
+                               72220ED01333056300FCA411 /* debug-private.h in Headers */,
+                               72220F11133305BB00FCA411 /* file-private.h in Headers */,
+                               72220F1A133305BB00FCA411 /* http-private.h in Headers */,
+                               72220F1E133305BB00FCA411 /* ipp-private.h in Headers */,
+                               72220F23133305BB00FCA411 /* language-private.h in Headers */,
+                               72220F28133305BB00FCA411 /* md5-private.h in Headers */,
+                               72220F2F133305BB00FCA411 /* ppd-private.h in Headers */,
+                               72220F33133305BB00FCA411 /* pwg-private.h in Headers */,
+                               72220F38133305BB00FCA411 /* snmp-private.h in Headers */,
+                               72220F3B133305BB00FCA411 /* string-private.h in Headers */,
+                               72220F3E133305BB00FCA411 /* thread-private.h in Headers */,
+                               72220F481333063D00FCA411 /* config.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72220FAA13330B2200FCA411 /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72220FB813330BCE00FCA411 /* mime.h in Headers */,
+                               7271883D1374AB14001A2036 /* mime-private.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA70A1CC03A490092477B /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA70B1CC03A490092477B /* raster.h in Headers */,
+                               724FA7711CC03B920092477B /* raster-private.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7191CC03A990092477B /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA71A1CC03A990092477B /* mime.h in Headers */,
+                               724FA71B1CC03A990092477B /* mime-private.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA73A1CC03AAF0092477B /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA73B1CC03AAF0092477B /* ppdc.h in Headers */,
+                               724FA73C1CC03AAF0092477B /* ppdc-private.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA74A1CC03ACC0092477B /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA76D1CC03B4D0092477B /* cgi.h in Headers */,
+                               724FA76C1CC03B4D0092477B /* cgi-private.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7661CC03AF60092477B /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA7701CC03B820092477B /* cgi.h in Headers */,
+                               724FA76F1CC03B820092477B /* cgi-private.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72F75A5F1336F9A3004BB496 /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72F75A6F1336FAB6004BB496 /* raster.h in Headers */,
+                               724FA76E1CC03B640092477B /* raster-private.h in Headers */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+               270695FD1CADF3E200FFE5FB /* libcups_ios */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 270696571CADF3E200FFE5FB /* Build configuration list for PBXNativeTarget "libcups_ios" */;
+                       buildPhases = (
+                               270695FE1CADF3E200FFE5FB /* Sources */,
+                               270696331CADF3E200FFE5FB /* Frameworks */,
+                               2706963C1CADF3E200FFE5FB /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = libcups_ios;
+                       productName = libcups;
+                       productReference = 2706965A1CADF3E200FFE5FB /* libcups_ios.a */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               270CCDA6135E3C9E00007BE2 /* testmime */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 270CCDAF135E3C9E00007BE2 /* Build configuration list for PBXNativeTarget "testmime" */;
+                       buildPhases = (
+                               270CCDA3135E3C9E00007BE2 /* Sources */,
+                               270CCDA4135E3C9E00007BE2 /* Frameworks */,
+                               270CCDA5135E3C9E00007BE2 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284D61CC1234D00E517C7 /* PBXTargetDependency */,
+                               270CCDB8135E3CFD00007BE2 /* PBXTargetDependency */,
+                       );
+                       name = testmime;
+                       productName = testmime;
+                       productReference = 270CCDA7135E3C9E00007BE2 /* testmime */;
+                       productType = "com.apple.product-type.tool";
+               };
+               270D02131D707E0200EA9403 /* testcreds */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 270D02211D707E0200EA9403 /* Build configuration list for PBXNativeTarget "testcreds" */;
+                       buildPhases = (
+                               270D02161D707E0200EA9403 /* Sources */,
+                               270D02181D707E0200EA9403 /* Frameworks */,
+                               270D02201D707E0200EA9403 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               270D02141D707E0200EA9403 /* PBXTargetDependency */,
+                       );
+                       name = testcreds;
+                       productName = testhttp;
+                       productReference = 270D02241D707E0200EA9403 /* testcreds */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271284E11CC1261900E517C7 /* cancel */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271284E91CC1261900E517C7 /* Build configuration list for PBXNativeTarget "cancel" */;
+                       buildPhases = (
+                               271284E41CC1261900E517C7 /* Sources */,
+                               271284E61CC1261900E517C7 /* Frameworks */,
+                               271284E81CC1261900E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284E21CC1261900E517C7 /* PBXTargetDependency */,
+                       );
+                       name = cancel;
+                       productName = cupsaddsmb;
+                       productReference = 271284EC1CC1261900E517C7 /* cancel */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271284EE1CC1264B00E517C7 /* cupsaccept */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271284F61CC1264B00E517C7 /* Build configuration list for PBXNativeTarget "cupsaccept" */;
+                       buildPhases = (
+                               271284F11CC1264B00E517C7 /* Sources */,
+                               271284F31CC1264B00E517C7 /* Frameworks */,
+                               271284F51CC1264B00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284EF1CC1264B00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = cupsaccept;
+                       productName = cupsaddsmb;
+                       productReference = 271284F91CC1264B00E517C7 /* cupsaccept */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271284FB1CC1265D00E517C7 /* cupstestdsc */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285031CC1265D00E517C7 /* Build configuration list for PBXNativeTarget "cupstestdsc" */;
+                       buildPhases = (
+                               271284FE1CC1265D00E517C7 /* Sources */,
+                               271285001CC1265D00E517C7 /* Frameworks */,
+                               271285021CC1265D00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284FC1CC1265D00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = cupstestdsc;
+                       productName = cupsaddsmb;
+                       productReference = 271285061CC1265D00E517C7 /* cupstestdsc */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285081CC1267A00E517C7 /* lp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285101CC1267A00E517C7 /* Build configuration list for PBXNativeTarget "lp" */;
+                       buildPhases = (
+                               2712850B1CC1267A00E517C7 /* Sources */,
+                               2712850D1CC1267A00E517C7 /* Frameworks */,
+                               2712850F1CC1267A00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285091CC1267A00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lp;
+                       productName = cupsaddsmb;
+                       productReference = 271285131CC1267A00E517C7 /* lp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285151CC1269700E517C7 /* lpc */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2712851D1CC1269700E517C7 /* Build configuration list for PBXNativeTarget "lpc" */;
+                       buildPhases = (
+                               271285181CC1269700E517C7 /* Sources */,
+                               2712851A1CC1269700E517C7 /* Frameworks */,
+                               2712851C1CC1269700E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285161CC1269700E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lpc;
+                       productName = cupsaddsmb;
+                       productReference = 271285201CC1269700E517C7 /* lpc */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285221CC126AA00E517C7 /* lpinfo */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2712852A1CC126AA00E517C7 /* Build configuration list for PBXNativeTarget "lpinfo" */;
+                       buildPhases = (
+                               271285251CC126AA00E517C7 /* Sources */,
+                               271285271CC126AA00E517C7 /* Frameworks */,
+                               271285291CC126AA00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285231CC126AA00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lpinfo;
+                       productName = cupsaddsmb;
+                       productReference = 2712852D1CC126AA00E517C7 /* lpinfo */;
+                       productType = "com.apple.product-type.tool";
+               };
+               2712852F1CC1270B00E517C7 /* lpmove */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285371CC1270B00E517C7 /* Build configuration list for PBXNativeTarget "lpmove" */;
+                       buildPhases = (
+                               271285321CC1270B00E517C7 /* Sources */,
+                               271285341CC1270B00E517C7 /* Frameworks */,
+                               271285361CC1270B00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285301CC1270B00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lpmove;
+                       productName = cupsaddsmb;
+                       productReference = 2712853A1CC1270B00E517C7 /* lpmove */;
+                       productType = "com.apple.product-type.tool";
+               };
+               2712853C1CC1271E00E517C7 /* lpoptions */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285441CC1271E00E517C7 /* Build configuration list for PBXNativeTarget "lpoptions" */;
+                       buildPhases = (
+                               2712853F1CC1271E00E517C7 /* Sources */,
+                               271285411CC1271E00E517C7 /* Frameworks */,
+                               271285431CC1271E00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               2712853D1CC1271E00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lpoptions;
+                       productName = cupsaddsmb;
+                       productReference = 271285471CC1271E00E517C7 /* lpoptions */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285491CC1272D00E517C7 /* lpq */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285511CC1272D00E517C7 /* Build configuration list for PBXNativeTarget "lpq" */;
+                       buildPhases = (
+                               2712854C1CC1272D00E517C7 /* Sources */,
+                               2712854E1CC1272D00E517C7 /* Frameworks */,
+                               271285501CC1272D00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               2712854A1CC1272D00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lpq;
+                       productName = cupsaddsmb;
+                       productReference = 271285541CC1272D00E517C7 /* lpq */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285561CC1274300E517C7 /* lpr */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2712855E1CC1274300E517C7 /* Build configuration list for PBXNativeTarget "lpr" */;
+                       buildPhases = (
+                               271285591CC1274300E517C7 /* Sources */,
+                               2712855B1CC1274300E517C7 /* Frameworks */,
+                               2712855D1CC1274300E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285571CC1274300E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lpr;
+                       productName = cupsaddsmb;
+                       productReference = 271285611CC1274300E517C7 /* lpr */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285631CC1275200E517C7 /* lprm */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2712856B1CC1275200E517C7 /* Build configuration list for PBXNativeTarget "lprm" */;
+                       buildPhases = (
+                               271285661CC1275200E517C7 /* Sources */,
+                               271285681CC1275200E517C7 /* Frameworks */,
+                               2712856A1CC1275200E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285641CC1275200E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lprm;
+                       productName = cupsaddsmb;
+                       productReference = 2712856E1CC1275200E517C7 /* lprm */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285701CC1276400E517C7 /* lpstat */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285781CC1276400E517C7 /* Build configuration list for PBXNativeTarget "lpstat" */;
+                       buildPhases = (
+                               271285731CC1276400E517C7 /* Sources */,
+                               271285751CC1276400E517C7 /* Frameworks */,
+                               271285771CC1276400E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285711CC1276400E517C7 /* PBXTargetDependency */,
+                       );
+                       name = lpstat;
+                       productName = cupsaddsmb;
+                       productReference = 2712857B1CC1276400E517C7 /* lpstat */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285951CC12D1300E517C7 /* admin.cgi */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2712859D1CC12D1300E517C7 /* Build configuration list for PBXNativeTarget "admin.cgi" */;
+                       buildPhases = (
+                               271285981CC12D1300E517C7 /* Sources */,
+                               2712859A1CC12D1300E517C7 /* Frameworks */,
+                               2712859C1CC12D1300E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285961CC12D1300E517C7 /* PBXTargetDependency */,
+                       );
+                       name = admin.cgi;
+                       productName = cupsaddsmb;
+                       productReference = 271285A01CC12D1300E517C7 /* admin.cgi */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285A31CC12D3A00E517C7 /* classes.cgi */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285AC1CC12D3A00E517C7 /* Build configuration list for PBXNativeTarget "classes.cgi" */;
+                       buildPhases = (
+                               271285A61CC12D3A00E517C7 /* Sources */,
+                               271285A81CC12D3A00E517C7 /* Frameworks */,
+                               271285AB1CC12D3A00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285A41CC12D3A00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = classes.cgi;
+                       productName = cupsaddsmb;
+                       productReference = 271285AF1CC12D3A00E517C7 /* classes.cgi */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285B11CC12D4E00E517C7 /* jobs.cgi */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285BA1CC12D4E00E517C7 /* Build configuration list for PBXNativeTarget "jobs.cgi" */;
+                       buildPhases = (
+                               271285B41CC12D4E00E517C7 /* Sources */,
+                               271285B61CC12D4E00E517C7 /* Frameworks */,
+                               271285B91CC12D4E00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285B21CC12D4E00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = jobs.cgi;
+                       productName = cupsaddsmb;
+                       productReference = 271285BD1CC12D4E00E517C7 /* jobs.cgi */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285BF1CC12D5E00E517C7 /* printers.cgi */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285C81CC12D5E00E517C7 /* Build configuration list for PBXNativeTarget "printers.cgi" */;
+                       buildPhases = (
+                               271285C21CC12D5E00E517C7 /* Sources */,
+                               271285C41CC12D5E00E517C7 /* Frameworks */,
+                               271285C71CC12D5E00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285C01CC12D5E00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = printers.cgi;
+                       productName = cupsaddsmb;
+                       productReference = 271285CB1CC12D5E00E517C7 /* printers.cgi */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285CD1CC12DBF00E517C7 /* commandtops */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285D51CC12DBF00E517C7 /* Build configuration list for PBXNativeTarget "commandtops" */;
+                       buildPhases = (
+                               271285D01CC12DBF00E517C7 /* Sources */,
+                               271285D21CC12DBF00E517C7 /* Frameworks */,
+                               271285D41CC12DBF00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285CE1CC12DBF00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = commandtops;
+                       productName = cupsaddsmb;
+                       productReference = 271285D81CC12DBF00E517C7 /* commandtops */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285DA1CC12DDF00E517C7 /* gziptoany */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285E21CC12DDF00E517C7 /* Build configuration list for PBXNativeTarget "gziptoany" */;
+                       buildPhases = (
+                               271285DD1CC12DDF00E517C7 /* Sources */,
+                               271285DF1CC12DDF00E517C7 /* Frameworks */,
+                               271285E11CC12DDF00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285DB1CC12DDF00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = gziptoany;
+                       productName = cupsaddsmb;
+                       productReference = 271285E51CC12DDF00E517C7 /* gziptoany */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285E71CC12E2D00E517C7 /* pstops */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285EF1CC12E2D00E517C7 /* Build configuration list for PBXNativeTarget "pstops" */;
+                       buildPhases = (
+                               271285EA1CC12E2D00E517C7 /* Sources */,
+                               271285EC1CC12E2D00E517C7 /* Frameworks */,
+                               271285EE1CC12E2D00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271285E81CC12E2D00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = pstops;
+                       productName = cupsaddsmb;
+                       productReference = 271285F21CC12E2E00E517C7 /* pstops */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271285F51CC12EEB00E517C7 /* rastertoepson */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271285FD1CC12EEB00E517C7 /* Build configuration list for PBXNativeTarget "rastertoepson" */;
+                       buildPhases = (
+                               271285F81CC12EEB00E517C7 /* Sources */,
+                               271285FA1CC12EEB00E517C7 /* Frameworks */,
+                               271285FC1CC12EEB00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286031CC12F0100E517C7 /* PBXTargetDependency */,
+                               271285F61CC12EEB00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = rastertoepson;
+                       productName = cupsaddsmb;
+                       productReference = 271286001CC12EEB00E517C7 /* rastertoepson */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286051CC12F0B00E517C7 /* rastertohp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286101CC12F0B00E517C7 /* Build configuration list for PBXNativeTarget "rastertohp" */;
+                       buildPhases = (
+                               2712860A1CC12F0B00E517C7 /* Sources */,
+                               2712860C1CC12F0B00E517C7 /* Frameworks */,
+                               2712860F1CC12F0B00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286061CC12F0B00E517C7 /* PBXTargetDependency */,
+                               271286081CC12F0B00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = rastertohp;
+                       productName = cupsaddsmb;
+                       productReference = 271286131CC12F0B00E517C7 /* rastertohp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286151CC12F1A00E517C7 /* rastertolabel */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286201CC12F1A00E517C7 /* Build configuration list for PBXNativeTarget "rastertolabel" */;
+                       buildPhases = (
+                               2712861A1CC12F1A00E517C7 /* Sources */,
+                               2712861C1CC12F1A00E517C7 /* Frameworks */,
+                               2712861F1CC12F1A00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286161CC12F1A00E517C7 /* PBXTargetDependency */,
+                               271286181CC12F1A00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = rastertolabel;
+                       productName = cupsaddsmb;
+                       productReference = 271286231CC12F1A00E517C7 /* rastertolabel */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286571CC1309000E517C7 /* tlscheck */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286641CC1309000E517C7 /* Build configuration list for PBXNativeTarget "tlscheck" */;
+                       buildPhases = (
+                               2712865A1CC1309000E517C7 /* Sources */,
+                               2712865C1CC1309000E517C7 /* Frameworks */,
+                               271286631CC1309000E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286581CC1309000E517C7 /* PBXTargetDependency */,
+                       );
+                       name = tlscheck;
+                       productName = ippserver;
+                       productReference = 271286671CC1309000E517C7 /* tlscheck */;
+                       productType = "com.apple.product-type.tool";
+               };
+               2712866B1CC1310E00E517C7 /* rasterbench */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2712867A1CC1310E00E517C7 /* Build configuration list for PBXNativeTarget "rasterbench" */;
+                       buildPhases = (
+                               271286701CC1310E00E517C7 /* Sources */,
+                               271286721CC1310E00E517C7 /* Frameworks */,
+                               271286791CC1310E00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               2712866C1CC1310E00E517C7 /* PBXTargetDependency */,
+                               2712866E1CC1310E00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = rasterbench;
+                       productName = testmime;
+                       productReference = 2712867D1CC1310E00E517C7 /* rasterbench */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286871CC13DC000E517C7 /* checkpo */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286931CC13DC000E517C7 /* Build configuration list for PBXNativeTarget "checkpo" */;
+                       buildPhases = (
+                               2712868A1CC13DC000E517C7 /* Sources */,
+                               2712868C1CC13DC000E517C7 /* Frameworks */,
+                               271286921CC13DC000E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286881CC13DC000E517C7 /* PBXTargetDependency */,
+                       );
+                       name = checkpo;
+                       productName = testmime;
+                       productReference = 271286961CC13DC000E517C7 /* checkpo */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286981CC13DF100E517C7 /* po2strings */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286A41CC13DF100E517C7 /* Build configuration list for PBXNativeTarget "po2strings" */;
+                       buildPhases = (
+                               2712869B1CC13DF100E517C7 /* Sources */,
+                               2712869D1CC13DF100E517C7 /* Frameworks */,
+                               271286A31CC13DF100E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286991CC13DF100E517C7 /* PBXTargetDependency */,
+                       );
+                       name = po2strings;
+                       productName = testmime;
+                       productReference = 271286A71CC13DF100E517C7 /* po2strings */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286A91CC13DFF00E517C7 /* strings2po */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286B51CC13DFF00E517C7 /* Build configuration list for PBXNativeTarget "strings2po" */;
+                       buildPhases = (
+                               271286AC1CC13DFF00E517C7 /* Sources */,
+                               271286AE1CC13DFF00E517C7 /* Frameworks */,
+                               271286B41CC13DFF00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286AA1CC13DFF00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = strings2po;
+                       productName = testmime;
+                       productReference = 271286B81CC13DFF00E517C7 /* strings2po */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286BA1CC13E2100E517C7 /* bcp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286C61CC13E2100E517C7 /* Build configuration list for PBXNativeTarget "bcp" */;
+                       buildPhases = (
+                               271286BD1CC13E2100E517C7 /* Sources */,
+                               271286C01CC13E2100E517C7 /* Frameworks */,
+                               271286C51CC13E2100E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286BB1CC13E2100E517C7 /* PBXTargetDependency */,
+                       );
+                       name = bcp;
+                       productName = usb;
+                       productReference = 271286C91CC13E2100E517C7 /* bcp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286CB1CC13E5B00E517C7 /* tbcp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286D61CC13E5B00E517C7 /* Build configuration list for PBXNativeTarget "tbcp" */;
+                       buildPhases = (
+                               271286CE1CC13E5B00E517C7 /* Sources */,
+                               271286D01CC13E5B00E517C7 /* Frameworks */,
+                               271286D51CC13E5B00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286CC1CC13E5B00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = tbcp;
+                       productName = usb;
+                       productReference = 271286D91CC13E5B00E517C7 /* tbcp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286E51CC13F2000E517C7 /* mailto */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271286F01CC13F2000E517C7 /* Build configuration list for PBXNativeTarget "mailto" */;
+                       buildPhases = (
+                               271286E81CC13F2000E517C7 /* Sources */,
+                               271286EA1CC13F2000E517C7 /* Frameworks */,
+                               271286EF1CC13F2000E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286E61CC13F2000E517C7 /* PBXTargetDependency */,
+                       );
+                       name = mailto;
+                       productName = usb;
+                       productReference = 271286F31CC13F2000E517C7 /* mailto */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271286F51CC13F3F00E517C7 /* rss */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271287001CC13F3F00E517C7 /* Build configuration list for PBXNativeTarget "rss" */;
+                       buildPhases = (
+                               271286F81CC13F3F00E517C7 /* Sources */,
+                               271286FA1CC13F3F00E517C7 /* Frameworks */,
+                               271286FF1CC13F3F00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271286F61CC13F3F00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = rss;
+                       productName = usb;
+                       productReference = 271287031CC13F3F00E517C7 /* rss */;
+                       productType = "com.apple.product-type.tool";
+               };
+               271287091CC13FAB00E517C7 /* mantohtml */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271287151CC13FAB00E517C7 /* Build configuration list for PBXNativeTarget "mantohtml" */;
+                       buildPhases = (
+                               2712870C1CC13FAB00E517C7 /* Sources */,
+                               2712870E1CC13FAB00E517C7 /* Frameworks */,
+                               271287141CC13FAB00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               2712870A1CC13FAB00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = mantohtml;
+                       productName = testmime;
+                       productReference = 271287181CC13FAB00E517C7 /* mantohtml */;
+                       productType = "com.apple.product-type.tool";
+               };
+               2712871E1CC140BE00E517C7 /* genstrings */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 271287291CC140BE00E517C7 /* Build configuration list for PBXNativeTarget "genstrings" */;
+                       buildPhases = (
+                               271287231CC140BE00E517C7 /* Sources */,
+                               271287251CC140BE00E517C7 /* Frameworks */,
+                               271287281CC140BE00E517C7 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               2712872F1CC140DF00E517C7 /* PBXTargetDependency */,
+                               271287311CC140DF00E517C7 /* PBXTargetDependency */,
+                       );
+                       name = genstrings;
+                       productName = ppdc;
+                       productReference = 2712872C1CC140BE00E517C7 /* genstrings */;
+                       productType = "com.apple.product-type.tool";
+               };
+               273BF6BC1333B5000022CAAB /* testcups */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 273BF6C31333B5000022CAAB /* Build configuration list for PBXNativeTarget "testcups" */;
+                       buildPhases = (
+                               273BF6B91333B5000022CAAB /* Sources */,
+                               273BF6BA1333B5000022CAAB /* Frameworks */,
+                               273BF6BB1333B5000022CAAB /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               273BF6C91333B5410022CAAB /* PBXTargetDependency */,
+                       );
+                       name = testcups;
+                       productName = testcups;
+                       productReference = 273BF6BD1333B5000022CAAB /* testcups */;
+                       productType = "com.apple.product-type.tool";
+               };
+               274FF5CB13332B1F00317ECB /* cups-driverd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 274FF5D213332B1F00317ECB /* Build configuration list for PBXNativeTarget "cups-driverd" */;
+                       buildPhases = (
+                               274FF5C813332B1F00317ECB /* Sources */,
+                               274FF5C913332B1F00317ECB /* Frameworks */,
+                               274FF5CA13332B1F00317ECB /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               274FF5DC13332CF900317ECB /* PBXTargetDependency */,
+                               274FF6201333316200317ECB /* PBXTargetDependency */,
+                       );
+                       name = "cups-driverd";
+                       productName = "cups-driverd";
+                       productReference = 274FF5CC13332B1F00317ECB /* cups-driverd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               274FF5ED133330C800317ECB /* libcupsppdc */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 274FF5EF133330C800317ECB /* Build configuration list for PBXNativeTarget "libcupsppdc" */;
+                       buildPhases = (
+                               274FF5EA133330C800317ECB /* Sources */,
+                               274FF5EB133330C800317ECB /* Frameworks */,
+                               274FF5EC133330C800317ECB /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               274FF5F3133330FD00317ECB /* PBXTargetDependency */,
+                       );
+                       name = libcupsppdc;
+                       productName = libcupsppdc;
+                       productReference = 274FF5EE133330C800317ECB /* libcupsppdc.dylib */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               274FF6281333333600317ECB /* cups-deviced */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 274FF62F1333333600317ECB /* Build configuration list for PBXNativeTarget "cups-deviced" */;
+                       buildPhases = (
+                               274FF6251333333600317ECB /* Sources */,
+                               274FF6261333333600317ECB /* Frameworks */,
+                               274FF6271333333600317ECB /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               274FF6341333335200317ECB /* PBXTargetDependency */,
+                       );
+                       name = "cups-deviced";
+                       productName = "cups-deviced";
+                       productReference = 274FF6291333333600317ECB /* cups-deviced */;
+                       productType = "com.apple.product-type.tool";
+               };
+               274FF63D1333358B00317ECB /* cups-exec */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 274FF6441333358C00317ECB /* Build configuration list for PBXNativeTarget "cups-exec" */;
+                       buildPhases = (
+                               274FF63A1333358B00317ECB /* Sources */,
+                               274FF63B1333358B00317ECB /* Frameworks */,
+                               274FF63C1333358B00317ECB /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = "cups-exec";
+                       productName = "cups-exec";
+                       productReference = 274FF63E1333358B00317ECB /* cups-exec */;
+                       productType = "com.apple.product-type.tool";
+               };
+               274FF64E133339C400317ECB /* cups-lpd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 274FF655133339C400317ECB /* Build configuration list for PBXNativeTarget "cups-lpd" */;
+                       buildPhases = (
+                               274FF64B133339C400317ECB /* Sources */,
+                               274FF64C133339C400317ECB /* Frameworks */,
+                               274FF64D133339C400317ECB /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               274FF65A133339D900317ECB /* PBXTargetDependency */,
+                       );
+                       name = "cups-lpd";
+                       productName = "cups-lpd";
+                       productReference = 274FF64F133339C400317ECB /* cups-lpd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               274FF67713333B2F00317ECB /* cupsfilter */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 274FF67E13333B2F00317ECB /* Build configuration list for PBXNativeTarget "cupsfilter" */;
+                       buildPhases = (
+                               274FF67413333B2F00317ECB /* Sources */,
+                               274FF67513333B2F00317ECB /* Frameworks */,
+                               274FF67613333B2F00317ECB /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               274FF68213333B3C00317ECB /* PBXTargetDependency */,
+                               274FF68413333B3C00317ECB /* PBXTargetDependency */,
+                       );
+                       name = cupsfilter;
+                       productName = cupsfilter;
+                       productReference = 274FF67813333B2F00317ECB /* cupsfilter */;
+                       productType = "com.apple.product-type.tool";
+               };
+               274FF6891333B1C400317ECB /* libcups_static */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 274FF6DD1333B1C400317ECB /* Build configuration list for PBXNativeTarget "libcups_static" */;
+                       buildPhases = (
+                               274FF68A1333B1C400317ECB /* Sources */,
+                               274FF6B91333B1C400317ECB /* Frameworks */,
+                               274FF6C11333B1C400317ECB /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = libcups_static;
+                       productName = libcups;
+                       productReference = 72A4332F155844CF002E172D /* libcups_static.a */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               2766835B1337A9B6000D33D0 /* cupsctl */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 276683621337A9B6000D33D0 /* Build configuration list for PBXNativeTarget "cupsctl" */;
+                       buildPhases = (
+                               276683581337A9B6000D33D0 /* Sources */,
+                               276683591337A9B6000D33D0 /* Frameworks */,
+                               2766835A1337A9B6000D33D0 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               276683661337A9D6000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = cupsctl;
+                       productName = cupsctl;
+                       productReference = 2766835C1337A9B6000D33D0 /* cupsctl */;
+                       productType = "com.apple.product-type.tool";
+               };
+               2766836F1337AC79000D33D0 /* ppdc */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 276683761337AC79000D33D0 /* Build configuration list for PBXNativeTarget "ppdc" */;
+                       buildPhases = (
+                               2766836C1337AC79000D33D0 /* Sources */,
+                               2766836D1337AC79000D33D0 /* Frameworks */,
+                               2766836E1337AC79000D33D0 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               276683AE1337ACF9000D33D0 /* PBXTargetDependency */,
+                               276683B01337ACF9000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = ppdc;
+                       productName = ppdc;
+                       productReference = 276683701337AC79000D33D0 /* ppdc */;
+                       productType = "com.apple.product-type.tool";
+               };
+               2766837C1337AC8C000D33D0 /* ppdhtml */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 276683831337AC8C000D33D0 /* Build configuration list for PBXNativeTarget "ppdhtml" */;
+                       buildPhases = (
+                               276683791337AC8C000D33D0 /* Sources */,
+                               2766837A1337AC8C000D33D0 /* Frameworks */,
+                               2766837B1337AC8C000D33D0 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               276683B41337AD18000D33D0 /* PBXTargetDependency */,
+                               276683B61337AD18000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = ppdhtml;
+                       productName = ppdhtml;
+                       productReference = 2766837D1337AC8C000D33D0 /* ppdhtml */;
+                       productType = "com.apple.product-type.tool";
+               };
+               276683891337AC97000D33D0 /* ppdi */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 276683901337AC97000D33D0 /* Build configuration list for PBXNativeTarget "ppdi" */;
+                       buildPhases = (
+                               276683861337AC97000D33D0 /* Sources */,
+                               276683871337AC97000D33D0 /* Frameworks */,
+                               276683881337AC97000D33D0 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               276683BC1337AE49000D33D0 /* PBXTargetDependency */,
+                               276683BE1337AE49000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = ppdi;
+                       productName = ppdi;
+                       productReference = 2766838A1337AC97000D33D0 /* ppdi */;
+                       productType = "com.apple.product-type.tool";
+               };
+               276683961337ACA2000D33D0 /* ppdmerge */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2766839D1337ACA2000D33D0 /* Build configuration list for PBXNativeTarget "ppdmerge" */;
+                       buildPhases = (
+                               276683931337ACA2000D33D0 /* Sources */,
+                               276683941337ACA2000D33D0 /* Frameworks */,
+                               276683951337ACA2000D33D0 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               276683C01337B1AD000D33D0 /* PBXTargetDependency */,
+                               276683C21337B1AD000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = ppdmerge;
+                       productName = ppdmerge;
+                       productReference = 276683971337ACA2000D33D0 /* ppdmerge */;
+                       productType = "com.apple.product-type.tool";
+               };
+               276683A31337ACAB000D33D0 /* ppdpo */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 276683AA1337ACAB000D33D0 /* Build configuration list for PBXNativeTarget "ppdpo" */;
+                       buildPhases = (
+                               276683A01337ACAB000D33D0 /* Sources */,
+                               276683A11337ACAB000D33D0 /* Frameworks */,
+                               276683A21337ACAB000D33D0 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               276683C61337B1BC000D33D0 /* PBXTargetDependency */,
+                               276683C81337B1BC000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = ppdpo;
+                       productName = ppdpo;
+                       productReference = 276683A41337ACAB000D33D0 /* ppdpo */;
+                       productType = "com.apple.product-type.tool";
+               };
+               276683EF1337F78E000D33D0 /* ipptool */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 276683F61337F78F000D33D0 /* Build configuration list for PBXNativeTarget "ipptool" */;
+                       buildPhases = (
+                               276683EC1337F78E000D33D0 /* Sources */,
+                               276683ED1337F78E000D33D0 /* Frameworks */,
+                               276683EE1337F78E000D33D0 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               276683FC1337F7B3000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = ipptool;
+                       productName = ipptool;
+                       productReference = 276683F01337F78E000D33D0 /* ipptool */;
+                       productType = "com.apple.product-type.tool";
+               };
+               276684031337FA1D000D33D0 /* cupsaddsmb */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2766840A1337FA1E000D33D0 /* Build configuration list for PBXNativeTarget "cupsaddsmb" */;
+                       buildPhases = (
+                               276684001337FA1D000D33D0 /* Sources */,
+                               276684011337FA1D000D33D0 /* Frameworks */,
+                               276684021337FA1D000D33D0 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               2766840E1337FA31000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = cupsaddsmb;
+                       productName = cupsaddsmb;
+                       productReference = 276684041337FA1D000D33D0 /* cupsaddsmb */;
+                       productType = "com.apple.product-type.tool";
+               };
+               2767FC4619266A0D000F61D3 /* testdest */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2767FC4D19266A0D000F61D3 /* Build configuration list for PBXNativeTarget "testdest" */;
+                       buildPhases = (
+                               2767FC4919266A0D000F61D3 /* Sources */,
+                               2767FC4B19266A0D000F61D3 /* Frameworks */,
+                               2767FC4C19266A0D000F61D3 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               2767FC4719266A0D000F61D3 /* PBXTargetDependency */,
+                       );
+                       name = testdest;
+                       productName = testcups;
+                       productReference = 2767FC5019266A0D000F61D3 /* testdest */;
+                       productType = "com.apple.product-type.tool";
+               };
+               278C58CA136B640300836530 /* testhttp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 278C58D3136B640300836530 /* Build configuration list for PBXNativeTarget "testhttp" */;
+                       buildPhases = (
+                               278C58C7136B640300836530 /* Sources */,
+                               278C58C8136B640300836530 /* Frameworks */,
+                               278C58C9136B640300836530 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               278C58D8136B642F00836530 /* PBXTargetDependency */,
+                       );
+                       name = testhttp;
+                       productName = testhttp;
+                       productReference = 278C58CB136B640300836530 /* testhttp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               27A0347A1A8BDB1200650675 /* lpadmin */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 27A034811A8BDB1300650675 /* Build configuration list for PBXNativeTarget "lpadmin" */;
+                       buildPhases = (
+                               27A034771A8BDB1200650675 /* Sources */,
+                               27A034781A8BDB1200650675 /* Frameworks */,
+                               27A034791A8BDB1200650675 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               27A034841A8BDC4A00650675 /* PBXTargetDependency */,
+                       );
+                       name = lpadmin;
+                       productName = lpadmin;
+                       productReference = 27A0347B1A8BDB1300650675 /* lpadmin */;
+                       productType = "com.apple.product-type.tool";
+               };
+               720DD6C11358FD5F0064AA82 /* snmp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 720DD6CB1358FD600064AA82 /* Build configuration list for PBXNativeTarget "snmp" */;
+                       buildPhases = (
+                               720DD6BE1358FD5F0064AA82 /* Sources */,
+                               720DD6BF1358FD5F0064AA82 /* Frameworks */,
+                               720DD6C01358FD5F0064AA82 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               720DD6CF1358FD790064AA82 /* PBXTargetDependency */,
+                       );
+                       name = snmp;
+                       productName = snmp;
+                       productReference = 720DD6C21358FD5F0064AA82 /* snmp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               72220EAD1333047D00FCA411 /* libcups */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 72220EB21333047D00FCA411 /* Build configuration list for PBXNativeTarget "libcups" */;
+                       buildPhases = (
+                               72220EAA1333047D00FCA411 /* Sources */,
+                               72220EAB1333047D00FCA411 /* Frameworks */,
+                               72220EAC1333047D00FCA411 /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = libcups;
+                       productName = libcups;
+                       productReference = 72220EAE1333047D00FCA411 /* libcups.dylib */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               72220F5A13330A5A00FCA411 /* cupsd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 72220F6113330A5A00FCA411 /* Build configuration list for PBXNativeTarget "cupsd" */;
+                       buildPhases = (
+                               72220F5713330A5A00FCA411 /* Sources */,
+                               72220F5813330A5A00FCA411 /* Frameworks */,
+                               72220F5913330A5A00FCA411 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               72220FBE13330C0B00FCA411 /* PBXTargetDependency */,
+                               72220F6513330A6500FCA411 /* PBXTargetDependency */,
+                       );
+                       name = cupsd;
+                       productName = cupsd;
+                       productReference = 72220F5B13330A5A00FCA411 /* cupsd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               72220FAB13330B2200FCA411 /* libcupsmime */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 72220FAD13330B2300FCA411 /* Build configuration list for PBXNativeTarget "libcupsmime" */;
+                       buildPhases = (
+                               72220FA813330B2200FCA411 /* Sources */,
+                               72220FA913330B2200FCA411 /* Frameworks */,
+                               72220FAA13330B2200FCA411 /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               72220FBC13330C0500FCA411 /* PBXTargetDependency */,
+                       );
+                       name = libcupsmime;
+                       productName = libcupsmime;
+                       productReference = 72220FAC13330B2200FCA411 /* libcupsmime.dylib */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               724378FC1333E43E009631B9 /* ipp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724379031333E43E009631B9 /* Build configuration list for PBXNativeTarget "ipp" */;
+                       buildPhases = (
+                               724378F91333E43E009631B9 /* Sources */,
+                               724378FA1333E43E009631B9 /* Frameworks */,
+                               724378FB1333E43E009631B9 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724379071333E49B009631B9 /* PBXTargetDependency */,
+                       );
+                       name = ipp;
+                       productName = ipp;
+                       productReference = 724378FD1333E43E009631B9 /* ipp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724379171333E532009631B9 /* lpd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 7243791E1333E532009631B9 /* Build configuration list for PBXNativeTarget "lpd" */;
+                       buildPhases = (
+                               724379141333E532009631B9 /* Sources */,
+                               724379151333E532009631B9 /* Frameworks */,
+                               724379161333E532009631B9 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724379261333E932009631B9 /* PBXTargetDependency */,
+                       );
+                       name = lpd;
+                       productName = lpd;
+                       productReference = 724379181333E532009631B9 /* lpd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               7243792F1333FB85009631B9 /* socket */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724379361333FB85009631B9 /* Build configuration list for PBXNativeTarget "socket" */;
+                       buildPhases = (
+                               7243792C1333FB85009631B9 /* Sources */,
+                               7243792D1333FB85009631B9 /* Frameworks */,
+                               7243792E1333FB85009631B9 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               7243793A1333FB95009631B9 /* PBXTargetDependency */,
+                       );
+                       name = socket;
+                       productName = socket;
+                       productReference = 724379301333FB85009631B9 /* socket */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724379461333FEA9009631B9 /* dnssd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 7243794D1333FEA9009631B9 /* Build configuration list for PBXNativeTarget "dnssd" */;
+                       buildPhases = (
+                               724379431333FEA9009631B9 /* Sources */,
+                               724379441333FEA9009631B9 /* Frameworks */,
+                               724379451333FEA9009631B9 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724379551333FEFE009631B9 /* PBXTargetDependency */,
+                       );
+                       name = dnssd;
+                       productName = dnssd;
+                       productReference = 724379471333FEA9009631B9 /* dnssd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               7243795A1333FF1D009631B9 /* usb */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724379611333FF1D009631B9 /* Build configuration list for PBXNativeTarget "usb" */;
+                       buildPhases = (
+                               724379571333FF1D009631B9 /* Sources */,
+                               724379581333FF1D009631B9 /* Frameworks */,
+                               724379591333FF1D009631B9 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724379651333FF2E009631B9 /* PBXTargetDependency */,
+                       );
+                       name = usb;
+                       productName = usb;
+                       productReference = 7243795B1333FF1D009631B9 /* usb */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5241CC0370C0092477B /* testadmin */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5321CC0370C0092477B /* Build configuration list for PBXNativeTarget "testadmin" */;
+                       buildPhases = (
+                               724FA5271CC0370C0092477B /* Sources */,
+                               724FA5291CC0370C0092477B /* Frameworks */,
+                               724FA5311CC0370C0092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5251CC0370C0092477B /* PBXTargetDependency */,
+                       );
+                       name = testadmin;
+                       productName = testcups;
+                       productReference = 724FA5351CC0370C0092477B /* testadmin */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5371CC037370092477B /* testarray */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5451CC037370092477B /* Build configuration list for PBXNativeTarget "testarray" */;
+                       buildPhases = (
+                               724FA53A1CC037370092477B /* Sources */,
+                               724FA53C1CC037370092477B /* Frameworks */,
+                               724FA5441CC037370092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5381CC037370092477B /* PBXTargetDependency */,
+                       );
+                       name = testarray;
+                       productName = testcups;
+                       productReference = 724FA5481CC037370092477B /* testarray */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA54A1CC037500092477B /* testcache */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5581CC037500092477B /* Build configuration list for PBXNativeTarget "testcache" */;
+                       buildPhases = (
+                               724FA54D1CC037500092477B /* Sources */,
+                               724FA54F1CC037500092477B /* Frameworks */,
+                               724FA5571CC037500092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA54B1CC037500092477B /* PBXTargetDependency */,
+                       );
+                       name = testcache;
+                       productName = testcups;
+                       productReference = 724FA55B1CC037500092477B /* testcache */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA55D1CC037670092477B /* testconflicts */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA56B1CC037670092477B /* Build configuration list for PBXNativeTarget "testconflicts" */;
+                       buildPhases = (
+                               724FA5601CC037670092477B /* Sources */,
+                               724FA5621CC037670092477B /* Frameworks */,
+                               724FA56A1CC037670092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA55E1CC037670092477B /* PBXTargetDependency */,
+                       );
+                       name = testconflicts;
+                       productName = testcups;
+                       productReference = 724FA56E1CC037670092477B /* testconflicts */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5701CC037810092477B /* testfile */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA57E1CC037810092477B /* Build configuration list for PBXNativeTarget "testfile" */;
+                       buildPhases = (
+                               724FA5731CC037810092477B /* Sources */,
+                               724FA5751CC037810092477B /* Frameworks */,
+                               724FA57D1CC037810092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5711CC037810092477B /* PBXTargetDependency */,
+                       );
+                       name = testfile;
+                       productName = testcups;
+                       productReference = 724FA5811CC037810092477B /* testfile */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5831CC037980092477B /* testi18n */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5911CC037980092477B /* Build configuration list for PBXNativeTarget "testi18n" */;
+                       buildPhases = (
+                               724FA5861CC037980092477B /* Sources */,
+                               724FA5881CC037980092477B /* Frameworks */,
+                               724FA5901CC037980092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5841CC037980092477B /* PBXTargetDependency */,
+                       );
+                       name = testi18n;
+                       productName = testhttp;
+                       productReference = 724FA5941CC037980092477B /* testi18n */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5961CC037AA0092477B /* testipp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5A41CC037AA0092477B /* Build configuration list for PBXNativeTarget "testipp" */;
+                       buildPhases = (
+                               724FA5991CC037AA0092477B /* Sources */,
+                               724FA59B1CC037AA0092477B /* Frameworks */,
+                               724FA5A31CC037AA0092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5971CC037AA0092477B /* PBXTargetDependency */,
+                       );
+                       name = testipp;
+                       productName = testhttp;
+                       productReference = 724FA5A71CC037AA0092477B /* testipp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5A91CC037C60092477B /* testlang */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5B71CC037C60092477B /* Build configuration list for PBXNativeTarget "testlang" */;
+                       buildPhases = (
+                               724FA5AC1CC037C60092477B /* Sources */,
+                               724FA5AE1CC037C60092477B /* Frameworks */,
+                               724FA5B61CC037C60092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5AA1CC037C60092477B /* PBXTargetDependency */,
+                       );
+                       name = testlang;
+                       productName = testhttp;
+                       productReference = 724FA5BA1CC037C60092477B /* testlang */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5BC1CC037D90092477B /* testlpd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5CA1CC037D90092477B /* Build configuration list for PBXNativeTarget "testlpd" */;
+                       buildPhases = (
+                               724FA5BF1CC037D90092477B /* Sources */,
+                               724FA5C11CC037D90092477B /* Frameworks */,
+                               724FA5C91CC037D90092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5BD1CC037D90092477B /* PBXTargetDependency */,
+                       );
+                       name = testlpd;
+                       productName = testhttp;
+                       productReference = 724FA5CD1CC037D90092477B /* testlpd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5CF1CC037F00092477B /* testoptions */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5DE1CC037F00092477B /* Build configuration list for PBXNativeTarget "testoptions" */;
+                       buildPhases = (
+                               724FA5D41CC037F00092477B /* Sources */,
+                               724FA5D61CC037F00092477B /* Frameworks */,
+                               724FA5DD1CC037F00092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5D01CC037F00092477B /* PBXTargetDependency */,
+                       );
+                       name = testoptions;
+                       productName = testmime;
+                       productReference = 724FA5E11CC037F00092477B /* testoptions */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5E31CC038040092477B /* testppd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA5F21CC038040092477B /* Build configuration list for PBXNativeTarget "testppd" */;
+                       buildPhases = (
+                               724FA5E81CC038040092477B /* Sources */,
+                               724FA5EA1CC038040092477B /* Frameworks */,
+                               724FA5F11CC038040092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5E41CC038040092477B /* PBXTargetDependency */,
+                       );
+                       name = testppd;
+                       productName = testmime;
+                       productReference = 724FA5F51CC038040092477B /* testppd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA5F71CC038190092477B /* testpwg */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6061CC038190092477B /* Build configuration list for PBXNativeTarget "testpwg" */;
+                       buildPhases = (
+                               724FA5FC1CC038190092477B /* Sources */,
+                               724FA5FE1CC038190092477B /* Frameworks */,
+                               724FA6051CC038190092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA5F81CC038190092477B /* PBXTargetDependency */,
+                       );
+                       name = testpwg;
+                       productName = testmime;
+                       productReference = 724FA6091CC038190092477B /* testpwg */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA60B1CC0382B0092477B /* testraster */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA61A1CC0382B0092477B /* Build configuration list for PBXNativeTarget "testraster" */;
+                       buildPhases = (
+                               724FA6101CC0382B0092477B /* Sources */,
+                               724FA6121CC0382B0092477B /* Frameworks */,
+                               724FA6191CC0382B0092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284D11CC122F900E517C7 /* PBXTargetDependency */,
+                               724FA60C1CC0382B0092477B /* PBXTargetDependency */,
+                       );
+                       name = testraster;
+                       productName = testmime;
+                       productReference = 724FA61D1CC0382B0092477B /* testraster */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA61F1CC038410092477B /* testsnmp */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA62E1CC038410092477B /* Build configuration list for PBXNativeTarget "testsnmp" */;
+                       buildPhases = (
+                               724FA6241CC038410092477B /* Sources */,
+                               724FA6261CC038410092477B /* Frameworks */,
+                               724FA62D1CC038410092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA6201CC038410092477B /* PBXTargetDependency */,
+                       );
+                       name = testsnmp;
+                       productName = testmime;
+                       productReference = 724FA6311CC038410092477B /* testsnmp */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6331CC038560092477B /* testspeed */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6421CC038560092477B /* Build configuration list for PBXNativeTarget "testspeed" */;
+                       buildPhases = (
+                               724FA6381CC038560092477B /* Sources */,
+                               724FA63A1CC038560092477B /* Frameworks */,
+                               724FA6411CC038560092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA6341CC038560092477B /* PBXTargetDependency */,
+                       );
+                       name = testspeed;
+                       productName = testmime;
+                       productReference = 724FA6451CC038560092477B /* testspeed */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6471CC0386E0092477B /* testsub */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6561CC0386E0092477B /* Build configuration list for PBXNativeTarget "testsub" */;
+                       buildPhases = (
+                               724FA64C1CC0386E0092477B /* Sources */,
+                               724FA64E1CC0386E0092477B /* Frameworks */,
+                               724FA6551CC0386E0092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA6481CC0386E0092477B /* PBXTargetDependency */,
+                       );
+                       name = testsub;
+                       productName = testmime;
+                       productReference = 724FA6591CC0386E0092477B /* testsub */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA65E1CC038A50092477B /* test1284 */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA66D1CC038A50092477B /* Build configuration list for PBXNativeTarget "test1284" */;
+                       buildPhases = (
+                               724FA6631CC038A50092477B /* Sources */,
+                               724FA6651CC038A50092477B /* Frameworks */,
+                               724FA66C1CC038A50092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA65F1CC038A50092477B /* PBXTargetDependency */,
+                       );
+                       name = test1284;
+                       productName = testmime;
+                       productReference = 724FA6701CC038A50092477B /* test1284 */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6721CC038BD0092477B /* testbackend */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6801CC038BD0092477B /* Build configuration list for PBXNativeTarget "testbackend" */;
+                       buildPhases = (
+                               724FA6751CC038BD0092477B /* Sources */,
+                               724FA6771CC038BD0092477B /* Frameworks */,
+                               724FA67F1CC038BD0092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA6731CC038BD0092477B /* PBXTargetDependency */,
+                       );
+                       name = testbackend;
+                       productName = testcups;
+                       productReference = 724FA6831CC038BD0092477B /* testbackend */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6851CC038D90092477B /* testsupplies */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6941CC038D90092477B /* Build configuration list for PBXNativeTarget "testsupplies" */;
+                       buildPhases = (
+                               724FA68A1CC038D90092477B /* Sources */,
+                               724FA68C1CC038D90092477B /* Frameworks */,
+                               724FA6931CC038D90092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA6861CC038D90092477B /* PBXTargetDependency */,
+                       );
+                       name = testsupplies;
+                       productName = testmime;
+                       productReference = 724FA6971CC038D90092477B /* testsupplies */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6991CC039200092477B /* testcgi */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6A71CC039200092477B /* Build configuration list for PBXNativeTarget "testcgi" */;
+                       buildPhases = (
+                               724FA69C1CC039200092477B /* Sources */,
+                               724FA69E1CC039200092477B /* Frameworks */,
+                               724FA6A61CC039200092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284CB1CC122D000E517C7 /* PBXTargetDependency */,
+                               724FA69A1CC039200092477B /* PBXTargetDependency */,
+                       );
+                       name = testcgi;
+                       productName = testcups;
+                       productReference = 724FA6AA1CC039200092477B /* testcgi */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6AC1CC0393E0092477B /* testhi */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6BA1CC0393E0092477B /* Build configuration list for PBXNativeTarget "testhi" */;
+                       buildPhases = (
+                               724FA6AF1CC0393E0092477B /* Sources */,
+                               724FA6B11CC0393E0092477B /* Frameworks */,
+                               724FA6B91CC0393E0092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284CF1CC122ED00E517C7 /* PBXTargetDependency */,
+                               724FA6AD1CC0393E0092477B /* PBXTargetDependency */,
+                       );
+                       name = testhi;
+                       productName = testhttp;
+                       productReference = 724FA6BD1CC0393E0092477B /* testhi */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6BF1CC0395A0092477B /* testtemplate */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6CE1CC0395A0092477B /* Build configuration list for PBXNativeTarget "testtemplate" */;
+                       buildPhases = (
+                               724FA6C41CC0395A0092477B /* Sources */,
+                               724FA6C61CC0395A0092477B /* Frameworks */,
+                               724FA6CD1CC0395A0092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284D41CC1232500E517C7 /* PBXTargetDependency */,
+                               724FA6C01CC0395A0092477B /* PBXTargetDependency */,
+                       );
+                       name = testtemplate;
+                       productName = testmime;
+                       productReference = 724FA6D11CC0395A0092477B /* testtemplate */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6D81CC039DE0092477B /* testnotify */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6E71CC039DE0092477B /* Build configuration list for PBXNativeTarget "testnotify" */;
+                       buildPhases = (
+                               724FA6DD1CC039DE0092477B /* Sources */,
+                               724FA6DF1CC039DE0092477B /* Frameworks */,
+                               724FA6E61CC039DE0092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA6D91CC039DE0092477B /* PBXTargetDependency */,
+                       );
+                       name = testnotify;
+                       productName = testmime;
+                       productReference = 724FA6EA1CC039DE0092477B /* testnotify */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA6ED1CC03A210092477B /* testcatalog */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA6FC1CC03A210092477B /* Build configuration list for PBXNativeTarget "testcatalog" */;
+                       buildPhases = (
+                               724FA6F21CC03A210092477B /* Sources */,
+                               724FA6F41CC03A210092477B /* Frameworks */,
+                               724FA6FB1CC03A210092477B /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               271284CD1CC122E400E517C7 /* PBXTargetDependency */,
+                               724FA6EE1CC03A210092477B /* PBXTargetDependency */,
+                       );
+                       name = testcatalog;
+                       productName = testmime;
+                       productReference = 724FA6FF1CC03A210092477B /* testcatalog */;
+                       productType = "com.apple.product-type.tool";
+               };
+               724FA7011CC03A490092477B /* libcupsimage_static */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA70C1CC03A490092477B /* Build configuration list for PBXNativeTarget "libcupsimage_static" */;
+                       buildPhases = (
+                               724FA7041CC03A490092477B /* Sources */,
+                               724FA7081CC03A490092477B /* Frameworks */,
+                               724FA70A1CC03A490092477B /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = libcupsimage_static;
+                       productName = libcupsimage;
+                       productReference = 724FA70F1CC03A490092477B /* libcupsimage_static.a */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               724FA7101CC03A990092477B /* libcupsmime_static */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA71C1CC03A990092477B /* Build configuration list for PBXNativeTarget "libcupsmime_static" */;
+                       buildPhases = (
+                               724FA7131CC03A990092477B /* Sources */,
+                               724FA7171CC03A990092477B /* Frameworks */,
+                               724FA7191CC03A990092477B /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = libcupsmime_static;
+                       productName = libcupsmime;
+                       productReference = 724FA71F1CC03A990092477B /* libcupsmime_static.a */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               724FA7201CC03AAF0092477B /* libcupsppdc_static */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA73D1CC03AAF0092477B /* Build configuration list for PBXNativeTarget "libcupsppdc_static" */;
+                       buildPhases = (
+                               724FA7231CC03AAF0092477B /* Sources */,
+                               724FA7371CC03AAF0092477B /* Frameworks */,
+                               724FA73A1CC03AAF0092477B /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = libcupsppdc_static;
+                       productName = libcupsppdc;
+                       productReference = 724FA7401CC03AAF0092477B /* libcupsppdc_static.a */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               724FA7411CC03ACC0092477B /* libcupscgi */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA74C1CC03ACC0092477B /* Build configuration list for PBXNativeTarget "libcupscgi" */;
+                       buildPhases = (
+                               724FA7441CC03ACC0092477B /* Sources */,
+                               724FA7481CC03ACC0092477B /* Frameworks */,
+                               724FA74A1CC03ACC0092477B /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               724FA7421CC03ACC0092477B /* PBXTargetDependency */,
+                       );
+                       name = libcupscgi;
+                       productName = libcupsimage;
+                       productReference = 724FA74F1CC03ACC0092477B /* libcupscgi.dylib */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               724FA7581CC03AF60092477B /* libcupscgi_static */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 724FA7681CC03AF60092477B /* Build configuration list for PBXNativeTarget "libcupscgi_static" */;
+                       buildPhases = (
+                               724FA75B1CC03AF60092477B /* Sources */,
+                               724FA7641CC03AF60092477B /* Frameworks */,
+                               724FA7661CC03AF60092477B /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = libcupscgi_static;
+                       productName = libcupsimage;
+                       productReference = 724FA76B1CC03AF60092477B /* libcupscgi_static.a */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+               7258EAE1134594C4009286F1 /* rastertopwg */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 7258EAE9134594C4009286F1 /* Build configuration list for PBXNativeTarget "rastertopwg" */;
+                       buildPhases = (
+                               7258EADE134594C4009286F1 /* Sources */,
+                               7258EADF134594C4009286F1 /* Frameworks */,
+                               7258EAE0134594C4009286F1 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               7258EAF113459B67009286F1 /* PBXTargetDependency */,
+                               7258EAF313459B67009286F1 /* PBXTargetDependency */,
+                       );
+                       name = rastertopwg;
+                       productName = rastertopwg;
+                       productReference = 7258EAE2134594C4009286F1 /* rastertopwg */;
+                       productType = "com.apple.product-type.tool";
+               };
+               726AD6F6135E88F0002C930D /* ippserver */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 726AD6FE135E88F1002C930D /* Build configuration list for PBXNativeTarget "ippserver" */;
+                       buildPhases = (
+                               726AD6F3135E88F0002C930D /* Sources */,
+                               726AD6F4135E88F0002C930D /* Frameworks */,
+                               726AD6F5135E88F0002C930D /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               726AD706135E8AC5002C930D /* PBXTargetDependency */,
+                       );
+                       name = ippserver;
+                       productName = ippserver;
+                       productReference = 726AD6F7135E88F0002C930D /* ippserver */;
+                       productType = "com.apple.product-type.tool";
+               };
+               72CF95E618A19134000FCAE4 /* ippfind */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 72CF95EE18A19134000FCAE4 /* Build configuration list for PBXNativeTarget "ippfind" */;
+                       buildPhases = (
+                               72CF95E918A19134000FCAE4 /* Sources */,
+                               72CF95EB18A19134000FCAE4 /* Frameworks */,
+                               72CF95ED18A19134000FCAE4 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               72CF95E718A19134000FCAE4 /* PBXTargetDependency */,
+                       );
+                       name = ippfind;
+                       productName = ipptool;
+                       productReference = 72CF95F118A19134000FCAE4 /* ipptool copy */;
+                       productType = "com.apple.product-type.tool";
+               };
+               72F75A511336F950004BB496 /* cupstestppd */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 72F75A581336F951004BB496 /* Build configuration list for PBXNativeTarget "cupstestppd" */;
+                       buildPhases = (
+                               72F75A4E1336F950004BB496 /* Sources */,
+                               72F75A4F1336F950004BB496 /* Frameworks */,
+                               72F75A501336F950004BB496 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               276683E41337B2BA000D33D0 /* PBXTargetDependency */,
+                               276683E11337B299000D33D0 /* PBXTargetDependency */,
+                       );
+                       name = cupstestppd;
+                       productName = cupstestppd;
+                       productReference = 72F75A521336F950004BB496 /* cupstestppd */;
+                       productType = "com.apple.product-type.tool";
+               };
+               72F75A601336F9A3004BB496 /* libcupsimage */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 72F75A621336F9A3004BB496 /* Build configuration list for PBXNativeTarget "libcupsimage" */;
+                       buildPhases = (
+                               72F75A5D1336F9A3004BB496 /* Sources */,
+                               72F75A5E1336F9A3004BB496 /* Frameworks */,
+                               72F75A5F1336F9A3004BB496 /* Headers */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               72F75A661336FA30004BB496 /* PBXTargetDependency */,
+                       );
+                       name = libcupsimage;
+                       productName = libcupsimage;
+                       productReference = 72F75A611336F9A3004BB496 /* libcupsimage.dylib */;
+                       productType = "com.apple.product-type.library.dynamic";
+               };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+               72BF96371333042100B1EAD7 /* Project object */ = {
+                       isa = PBXProject;
+                       attributes = {
+                               LastUpgradeCheck = 0800;
+                               ORGANIZATIONNAME = "Apple Inc.";
+                               TargetAttributes = {
+                                       270695FD1CADF3E200FFE5FB = {
+                                               DevelopmentTeam = RU58A2256H;
+                                       };
+                                       27A0347A1A8BDB1200650675 = {
+                                               CreatedOnToolsVersion = 6.1.1;
+                                       };
+                               };
+                       };
+                       buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for PBXProject "CUPS" */;
+                       compatibilityVersion = "Xcode 3.2";
+                       developmentRegion = English;
+                       hasScannedForEncodings = 0;
+                       knownRegions = (
+                               en,
+                       );
+                       mainGroup = 72BF96351333042100B1EAD7;
+                       productRefGroup = 72220EAF1333047D00FCA411 /* Products */;
+                       projectDirPath = "";
+                       projectRoot = "";
+                       targets = (
+                               274FF5DE13332D3000317ECB /* All */,
+                               273BF6D91333B6260022CAAB /* Tests */,
+                               72220EAD1333047D00FCA411 /* libcups */,
+                               270695FD1CADF3E200FFE5FB /* libcups_ios */,
+                               274FF6891333B1C400317ECB /* libcups_static */,
+                               724FA7411CC03ACC0092477B /* libcupscgi */,
+                               724FA7581CC03AF60092477B /* libcupscgi_static */,
+                               72F75A601336F9A3004BB496 /* libcupsimage */,
+                               724FA7011CC03A490092477B /* libcupsimage_static */,
+                               72220FAB13330B2200FCA411 /* libcupsmime */,
+                               724FA7101CC03A990092477B /* libcupsmime_static */,
+                               274FF5ED133330C800317ECB /* libcupsppdc */,
+                               724FA7201CC03AAF0092477B /* libcupsppdc_static */,
+                               271285951CC12D1300E517C7 /* admin.cgi */,
+                               271286BA1CC13E2100E517C7 /* bcp */,
+                               271284E11CC1261900E517C7 /* cancel */,
+                               271286871CC13DC000E517C7 /* checkpo */,
+                               271285A31CC12D3A00E517C7 /* classes.cgi */,
+                               271285CD1CC12DBF00E517C7 /* commandtops */,
+                               276684031337FA1D000D33D0 /* cupsaddsmb */,
+                               271284EE1CC1264B00E517C7 /* cupsaccept */,
+                               2766835B1337A9B6000D33D0 /* cupsctl */,
+                               72220F5A13330A5A00FCA411 /* cupsd */,
+                               274FF5CB13332B1F00317ECB /* cups-driverd */,
+                               274FF6281333333600317ECB /* cups-deviced */,
+                               274FF63D1333358B00317ECB /* cups-exec */,
+                               274FF64E133339C400317ECB /* cups-lpd */,
+                               274FF67713333B2F00317ECB /* cupsfilter */,
+                               271284FB1CC1265D00E517C7 /* cupstestdsc */,
+                               72F75A511336F950004BB496 /* cupstestppd */,
+                               724379461333FEA9009631B9 /* dnssd */,
+                               2712871E1CC140BE00E517C7 /* genstrings */,
+                               271285DA1CC12DDF00E517C7 /* gziptoany */,
+                               724378FC1333E43E009631B9 /* ipp */,
+                               72CF95E618A19134000FCAE4 /* ippfind */,
+                               726AD6F6135E88F0002C930D /* ippserver */,
+                               276683EF1337F78E000D33D0 /* ipptool */,
+                               271285B11CC12D4E00E517C7 /* jobs.cgi */,
+                               271285081CC1267A00E517C7 /* lp */,
+                               27A0347A1A8BDB1200650675 /* lpadmin */,
+                               271285151CC1269700E517C7 /* lpc */,
+                               724379171333E532009631B9 /* lpd */,
+                               271285221CC126AA00E517C7 /* lpinfo */,
+                               2712852F1CC1270B00E517C7 /* lpmove */,
+                               2712853C1CC1271E00E517C7 /* lpoptions */,
+                               271285491CC1272D00E517C7 /* lpq */,
+                               271285561CC1274300E517C7 /* lpr */,
+                               271285631CC1275200E517C7 /* lprm */,
+                               271285701CC1276400E517C7 /* lpstat */,
+                               271286E51CC13F2000E517C7 /* mailto */,
+                               271287091CC13FAB00E517C7 /* mantohtml */,
+                               271286981CC13DF100E517C7 /* po2strings */,
+                               2766836F1337AC79000D33D0 /* ppdc */,
+                               2766837C1337AC8C000D33D0 /* ppdhtml */,
+                               276683891337AC97000D33D0 /* ppdi */,
+                               276683961337ACA2000D33D0 /* ppdmerge */,
+                               276683A31337ACAB000D33D0 /* ppdpo */,
+                               271285BF1CC12D5E00E517C7 /* printers.cgi */,
+                               271285E71CC12E2D00E517C7 /* pstops */,
+                               2712866B1CC1310E00E517C7 /* rasterbench */,
+                               271285F51CC12EEB00E517C7 /* rastertoepson */,
+                               271286051CC12F0B00E517C7 /* rastertohp */,
+                               271286151CC12F1A00E517C7 /* rastertolabel */,
+                               7258EAE1134594C4009286F1 /* rastertopwg */,
+                               271286F51CC13F3F00E517C7 /* rss */,
+                               720DD6C11358FD5F0064AA82 /* snmp */,
+                               7243792F1333FB85009631B9 /* socket */,
+                               271286A91CC13DFF00E517C7 /* strings2po */,
+                               271286CB1CC13E5B00E517C7 /* tbcp */,
+                               724FA65E1CC038A50092477B /* test1284 */,
+                               724FA5241CC0370C0092477B /* testadmin */,
+                               724FA5371CC037370092477B /* testarray */,
+                               724FA6721CC038BD0092477B /* testbackend */,
+                               724FA54A1CC037500092477B /* testcache */,
+                               724FA6ED1CC03A210092477B /* testcatalog */,
+                               724FA6991CC039200092477B /* testcgi */,
+                               724FA55D1CC037670092477B /* testconflicts */,
+                               270D02131D707E0200EA9403 /* testcreds */,
+                               273BF6BC1333B5000022CAAB /* testcups */,
+                               2767FC4619266A0D000F61D3 /* testdest */,
+                               724FA5701CC037810092477B /* testfile */,
+                               724FA6AC1CC0393E0092477B /* testhi */,
+                               278C58CA136B640300836530 /* testhttp */,
+                               724FA5831CC037980092477B /* testi18n */,
+                               724FA5961CC037AA0092477B /* testipp */,
+                               724FA5A91CC037C60092477B /* testlang */,
+                               724FA5BC1CC037D90092477B /* testlpd */,
+                               270CCDA6135E3C9E00007BE2 /* testmime */,
+                               724FA6D81CC039DE0092477B /* testnotify */,
+                               724FA5CF1CC037F00092477B /* testoptions */,
+                               724FA5E31CC038040092477B /* testppd */,
+                               724FA5F71CC038190092477B /* testpwg */,
+                               724FA60B1CC0382B0092477B /* testraster */,
+                               724FA61F1CC038410092477B /* testsnmp */,
+                               724FA6331CC038560092477B /* testspeed */,
+                               724FA6471CC0386E0092477B /* testsub */,
+                               724FA6851CC038D90092477B /* testsupplies */,
+                               724FA6BF1CC0395A0092477B /* testtemplate */,
+                               271286571CC1309000E517C7 /* tlscheck */,
+                               7243795A1333FF1D009631B9 /* usb */,
+                       );
+               };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+               270695FE1CADF3E200FFE5FB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               270696001CADF3E200FFE5FB /* array.c in Sources */,
+                               270696021CADF3E200FFE5FB /* auth.c in Sources */,
+                               270696071CADF3E200FFE5FB /* debug.c in Sources */,
+                               270696081CADF3E200FFE5FB /* dest.c in Sources */,
+                               270696091CADF3E200FFE5FB /* dir.c in Sources */,
+                               2706960B1CADF3E200FFE5FB /* encode.c in Sources */,
+                               2706960C1CADF3E200FFE5FB /* file.c in Sources */,
+                               2706960F1CADF3E200FFE5FB /* getputfile.c in Sources */,
+                               270696101CADF3E200FFE5FB /* globals.c in Sources */,
+                               270696111CADF3E200FFE5FB /* http-addr.c in Sources */,
+                               270696121CADF3E200FFE5FB /* http-addrlist.c in Sources */,
+                               270696131CADF3E200FFE5FB /* http-support.c in Sources */,
+                               270696141CADF3E200FFE5FB /* http.c in Sources */,
+                               270696161CADF3E200FFE5FB /* dest-options.c in Sources */,
+                               270696171CADF3E200FFE5FB /* ipp-support.c in Sources */,
+                               270696181CADF3E200FFE5FB /* ipp.c in Sources */,
+                               270696191CADF3E200FFE5FB /* langprintf.c in Sources */,
+                               2706961A1CADF3E200FFE5FB /* language.c in Sources */,
+                               2706961D1CADF3E200FFE5FB /* md5.c in Sources */,
+                               2706961E1CADF3E200FFE5FB /* md5passwd.c in Sources */,
+                               2706961F1CADF3E200FFE5FB /* hash.c in Sources */,
+                               270696201CADF3E200FFE5FB /* notify.c in Sources */,
+                               270696211CADF3E200FFE5FB /* options.c in Sources */,
+                               270696221CADF3E200FFE5FB /* tls.c in Sources */,
+                               270696251CADF3E200FFE5FB /* dest-job.c in Sources */,
+                               270696271CADF3E200FFE5FB /* pwg-media.c in Sources */,
+                               270696281CADF3E200FFE5FB /* dest-localization.c in Sources */,
+                               270696291CADF3E200FFE5FB /* request.c in Sources */,
+                               2706962C1CADF3E200FFE5FB /* snprintf.c in Sources */,
+                               2706962D1CADF3E200FFE5FB /* string.c in Sources */,
+                               2706965B1CAE1A9A00FFE5FB /* util.c in Sources */,
+                               2706962E1CADF3E200FFE5FB /* tempfile.c in Sources */,
+                               2706962F1CADF3E200FFE5FB /* thread.c in Sources */,
+                               270696301CADF3E200FFE5FB /* transcode.c in Sources */,
+                               270696311CADF3E200FFE5FB /* usersys.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               270CCDA3135E3C9E00007BE2 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               270CCDBC135E3D3E00007BE2 /* testmime.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               270D02161D707E0200EA9403 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               270D02261D707E3700EA9403 /* testcreds.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271284E41CC1261900E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284ED1CC1262C00E517C7 /* cancel.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271284F11CC1264B00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271284FA1CC1265800E517C7 /* cupsaccept.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271284FE1CC1265D00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285071CC1267400E517C7 /* cupstestdsc.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712850B1CC1267A00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285141CC1269400E517C7 /* lp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285181CC1269700E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285211CC126A700E517C7 /* lpc.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285251CC126AA00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712852E1CC126BC00E517C7 /* lpinfo.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285321CC1270B00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712853B1CC1271B00E517C7 /* lpmove.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712853F1CC1271E00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285481CC1272900E517C7 /* lpoptions.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712854C1CC1272D00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285551CC1273C00E517C7 /* lpq.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285591CC1274300E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285621CC1274F00E517C7 /* lpr.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285661CC1275200E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712856F1CC1276000E517C7 /* lprm.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285731CC1276400E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712857C1CC1277000E517C7 /* lpstat.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285981CC12D1300E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285A11CC12D2100E517C7 /* admin.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285A61CC12D3A00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285B01CC12D4A00E517C7 /* classes.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285B41CC12D4E00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285BE1CC12D5C00E517C7 /* jobs.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285C21CC12D5E00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285CC1CC12D6D00E517C7 /* printers.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285D01CC12DBF00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285D91CC12DD000E517C7 /* commandtops.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285DD1CC12DDF00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285E61CC12DEF00E517C7 /* gziptoany.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285EA1CC12E2D00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271285F41CC12E4200E517C7 /* common.c in Sources */,
+                               271285F31CC12E3C00E517C7 /* pstops.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271285F81CC12EEB00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286011CC12EFA00E517C7 /* rastertoepson.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712860A1CC12F0B00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286141CC12F1800E517C7 /* rastertohp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712861A1CC12F1A00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286241CC12F2600E517C7 /* rastertolabel.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712865A1CC1309000E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286691CC130C700E517C7 /* tlscheck.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286701CC1310E00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712867E1CC1311D00E517C7 /* rasterbench.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712868A1CC13DC000E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286971CC13DEA00E517C7 /* checkpo.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712869B1CC13DF100E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286A81CC13DFD00E517C7 /* po2strings.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286AC1CC13DFF00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286B91CC13E1000E517C7 /* strings2po.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286BD1CC13E2100E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286CA1CC13E2E00E517C7 /* bcp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286CE1CC13E5B00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286DA1CC13E6A00E517C7 /* tbcp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286E81CC13F2000E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271286F41CC13F2F00E517C7 /* mailto.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271286F81CC13F3F00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               271287041CC13F4C00E517C7 /* rss.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2712870C1CC13FAB00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712871A1CC13FE800E517C7 /* mantohtml.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               271287231CC140BE00E517C7 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2712872D1CC140D200E517C7 /* genstrings.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               273BF6B91333B5000022CAAB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               273BF6C71333B5370022CAAB /* testcups.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF5C813332B1F00317ECB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF5D913332CC700317ECB /* cups-driverd.cxx in Sources */,
+                               274FF5DA13332CC700317ECB /* util.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF5EA133330C800317ECB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF60A1333315100317ECB /* ppdc-array.cxx in Sources */,
+                               274FF60B1333315100317ECB /* ppdc-attr.cxx in Sources */,
+                               274FF60C1333315100317ECB /* ppdc-catalog.cxx in Sources */,
+                               274FF60D1333315100317ECB /* ppdc-choice.cxx in Sources */,
+                               274FF60E1333315100317ECB /* ppdc-constraint.cxx in Sources */,
+                               274FF60F1333315100317ECB /* ppdc-driver.cxx in Sources */,
+                               274FF6101333315100317ECB /* ppdc-file.cxx in Sources */,
+                               274FF6111333315100317ECB /* ppdc-filter.cxx in Sources */,
+                               274FF6121333315100317ECB /* ppdc-font.cxx in Sources */,
+                               274FF6131333315100317ECB /* ppdc-group.cxx in Sources */,
+                               274FF6141333315100317ECB /* ppdc-import.cxx in Sources */,
+                               274FF6151333315100317ECB /* ppdc-mediasize.cxx in Sources */,
+                               274FF6161333315100317ECB /* ppdc-message.cxx in Sources */,
+                               274FF6171333315100317ECB /* ppdc-option.cxx in Sources */,
+                               274FF6191333315100317ECB /* ppdc-profile.cxx in Sources */,
+                               274FF61A1333315100317ECB /* ppdc-shared.cxx in Sources */,
+                               274FF61B1333315100317ECB /* ppdc-source.cxx in Sources */,
+                               274FF61C1333315100317ECB /* ppdc-string.cxx in Sources */,
+                               274FF61D1333315100317ECB /* ppdc-variable.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF6251333333600317ECB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF6361333344400317ECB /* cups-deviced.c in Sources */,
+                               274FF6371333345900317ECB /* util.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF63A1333358B00317ECB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF64A1333398D00317ECB /* cups-exec.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF64B133339C400317ECB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF65C133339FC00317ECB /* cups-lpd.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF67413333B2F00317ECB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF68813333B6E00317ECB /* cupsfilter.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               274FF68A1333B1C400317ECB /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               274FF68B1333B1C400317ECB /* adminutil.c in Sources */,
+                               274FF68C1333B1C400317ECB /* array.c in Sources */,
+                               274FF68D1333B1C400317ECB /* ppd-attr.c in Sources */,
+                               274FF68E1333B1C400317ECB /* auth.c in Sources */,
+                               274FF68F1333B1C400317ECB /* backchannel.c in Sources */,
+                               274FF6901333B1C400317ECB /* backend.c in Sources */,
+                               274FF6911333B1C400317ECB /* ppd-conflicts.c in Sources */,
+                               274FF6921333B1C400317ECB /* ppd-custom.c in Sources */,
+                               274FF6931333B1C400317ECB /* debug.c in Sources */,
+                               274FF6941333B1C400317ECB /* dest.c in Sources */,
+                               274FF6951333B1C400317ECB /* dir.c in Sources */,
+                               274FF6961333B1C400317ECB /* ppd-emit.c in Sources */,
+                               274FF6971333B1C400317ECB /* encode.c in Sources */,
+                               274FF6981333B1C400317ECB /* file.c in Sources */,
+                               274FF6991333B1C400317ECB /* getdevices.c in Sources */,
+                               274FF69A1333B1C400317ECB /* getifaddrs.c in Sources */,
+                               274FF69B1333B1C400317ECB /* getputfile.c in Sources */,
+                               274FF69C1333B1C400317ECB /* globals.c in Sources */,
+                               274FF69D1333B1C400317ECB /* http-addr.c in Sources */,
+                               274FF69E1333B1C400317ECB /* http-addrlist.c in Sources */,
+                               274FF69F1333B1C400317ECB /* http-support.c in Sources */,
+                               274FF6A01333B1C400317ECB /* http.c in Sources */,
+                               72A8B3D81C188CB900A1A547 /* ppd-util.c in Sources */,
+                               2767FC7419268F0C000F61D3 /* dest-options.c in Sources */,
+                               274FF6A11333B1C400317ECB /* ipp-support.c in Sources */,
+                               274FF6A21333B1C400317ECB /* ipp.c in Sources */,
+                               274FF6A31333B1C400317ECB /* langprintf.c in Sources */,
+                               274FF6A41333B1C400317ECB /* language.c in Sources */,
+                               274FF6A51333B1C400317ECB /* ppd-localize.c in Sources */,
+                               274FF6A61333B1C400317ECB /* ppd-mark.c in Sources */,
+                               274FF6A71333B1C400317ECB /* md5.c in Sources */,
+                               274FF6A81333B1C400317ECB /* md5passwd.c in Sources */,
+                               7284F9F11BFCCDB20026F886 /* hash.c in Sources */,
+                               274FF6A91333B1C400317ECB /* notify.c in Sources */,
+                               274FF6AA1333B1C400317ECB /* options.c in Sources */,
+                               727AD5B819100A58009F6862 /* tls.c in Sources */,
+                               274FF6AB1333B1C400317ECB /* ppd-page.c in Sources */,
+                               274FF6AC1333B1C400317ECB /* ppd-cache.c in Sources */,
+                               2767FC7219268F06000F61D3 /* dest-job.c in Sources */,
+                               274FF6AD1333B1C400317ECB /* ppd.c in Sources */,
+                               274FF6AE1333B1C400317ECB /* pwg-media.c in Sources */,
+                               2767FC7319268F09000F61D3 /* dest-localization.c in Sources */,
+                               274FF6AF1333B1C400317ECB /* request.c in Sources */,
+                               274FF6B01333B1C400317ECB /* sidechannel.c in Sources */,
+                               274FF6B11333B1C400317ECB /* snmp.c in Sources */,
+                               274FF6B21333B1C400317ECB /* snprintf.c in Sources */,
+                               274FF6B31333B1C400317ECB /* string.c in Sources */,
+                               274FF6B41333B1C400317ECB /* tempfile.c in Sources */,
+                               274FF6B51333B1C400317ECB /* thread.c in Sources */,
+                               274FF6B61333B1C400317ECB /* transcode.c in Sources */,
+                               274FF6B71333B1C400317ECB /* usersys.c in Sources */,
+                               274FF6B81333B1C400317ECB /* util.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683581337A9B6000D33D0 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683691337AA00000D33D0 /* cupsctl.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2766836C1337AC79000D33D0 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683CD1337B201000D33D0 /* ppdc.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683791337AC8C000D33D0 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683CF1337B20D000D33D0 /* ppdhtml.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683861337AC97000D33D0 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683D11337B21A000D33D0 /* ppdi.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683931337ACA2000D33D0 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683D31337B228000D33D0 /* ppdmerge.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683A01337ACAB000D33D0 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683D51337B237000D33D0 /* ppdpo.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276683EC1337F78E000D33D0 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276683FA1337F7A9000D33D0 /* ipptool.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               276684001337FA1D000D33D0 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               276684111337FA7C000D33D0 /* cupsaddsmb.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               2767FC4919266A0D000F61D3 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               2767FC5219266A36000F61D3 /* testdest.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               278C58C7136B640300836530 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               278C58E3136B647200836530 /* testhttp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               27A034771A8BDB1200650675 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               27A034821A8BDC3A00650675 /* lpadmin.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               720DD6BE1358FD5F0064AA82 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               720DD6D413590AB90064AA82 /* ieee1284.c in Sources */,
+                               720DD6D31358FDDE0064AA82 /* snmp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72220EAA1333047D00FCA411 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72220EB61333052D00FCA411 /* adminutil.c in Sources */,
+                               72220EC51333056300FCA411 /* array.c in Sources */,
+                               72220EC71333056300FCA411 /* ppd-attr.c in Sources */,
+                               727AD5B719100A58009F6862 /* tls.c in Sources */,
+                               72220EC81333056300FCA411 /* auth.c in Sources */,
+                               72220EC91333056300FCA411 /* backchannel.c in Sources */,
+                               72220ECA1333056300FCA411 /* backend.c in Sources */,
+                               72220ECC1333056300FCA411 /* ppd-conflicts.c in Sources */,
+                               72220ECF1333056300FCA411 /* ppd-custom.c in Sources */,
+                               72220F0B133305BB00FCA411 /* debug.c in Sources */,
+                               72220F0C133305BB00FCA411 /* dest.c in Sources */,
+                               72220F0D133305BB00FCA411 /* dir.c in Sources */,
+                               72220F0F133305BB00FCA411 /* ppd-emit.c in Sources */,
+                               72220F10133305BB00FCA411 /* encode.c in Sources */,
+                               72220F12133305BB00FCA411 /* file.c in Sources */,
+                               72220F14133305BB00FCA411 /* getdevices.c in Sources */,
+                               72220F15133305BB00FCA411 /* getifaddrs.c in Sources */,
+                               72220F16133305BB00FCA411 /* getputfile.c in Sources */,
+                               72220F17133305BB00FCA411 /* globals.c in Sources */,
+                               72220F18133305BB00FCA411 /* http-addr.c in Sources */,
+                               72220F19133305BB00FCA411 /* http-addrlist.c in Sources */,
+                               72220F1B133305BB00FCA411 /* http-support.c in Sources */,
+                               72A8B3D71C188CB800A1A547 /* ppd-util.c in Sources */,
+                               72220F1C133305BB00FCA411 /* http.c in Sources */,
+                               72CF95E518A13543000FCAE4 /* dest-options.c in Sources */,
+                               72220F1F133305BB00FCA411 /* ipp-support.c in Sources */,
+                               72220F20133305BB00FCA411 /* ipp.c in Sources */,
+                               72220F22133305BB00FCA411 /* langprintf.c in Sources */,
+                               72220F24133305BB00FCA411 /* language.c in Sources */,
+                               72220F26133305BB00FCA411 /* ppd-localize.c in Sources */,
+                               72220F27133305BB00FCA411 /* ppd-mark.c in Sources */,
+                               72220F29133305BB00FCA411 /* md5.c in Sources */,
+                               7284F9F01BFCCDB10026F886 /* hash.c in Sources */,
+                               72220F2A133305BB00FCA411 /* md5passwd.c in Sources */,
+                               72220F2B133305BB00FCA411 /* notify.c in Sources */,
+                               72220F2C133305BB00FCA411 /* options.c in Sources */,
+                               72220F2D133305BB00FCA411 /* ppd-page.c in Sources */,
+                               72220F2E133305BB00FCA411 /* ppd-cache.c in Sources */,
+                               72220F30133305BB00FCA411 /* ppd.c in Sources */,
+                               72220F32133305BB00FCA411 /* pwg-media.c in Sources */,
+                               72220F35133305BB00FCA411 /* request.c in Sources */,
+                               72220F36133305BB00FCA411 /* sidechannel.c in Sources */,
+                               72220F39133305BB00FCA411 /* snmp.c in Sources */,
+                               72220F3A133305BB00FCA411 /* snprintf.c in Sources */,
+                               72220F3C133305BB00FCA411 /* string.c in Sources */,
+                               72220F3D133305BB00FCA411 /* tempfile.c in Sources */,
+                               72CF95E418A13543000FCAE4 /* dest-localization.c in Sources */,
+                               72220F3F133305BB00FCA411 /* thread.c in Sources */,
+                               72220F40133305BB00FCA411 /* transcode.c in Sources */,
+                               72220F42133305BB00FCA411 /* usersys.c in Sources */,
+                               72220F43133305BB00FCA411 /* util.c in Sources */,
+                               72CF95E318A13543000FCAE4 /* dest-job.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72220F5713330A5A00FCA411 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72220F9013330B0C00FCA411 /* auth.c in Sources */,
+                               72220F9113330B0C00FCA411 /* banners.c in Sources */,
+                               72220F9213330B0C00FCA411 /* cert.c in Sources */,
+                               72220F9313330B0C00FCA411 /* classes.c in Sources */,
+                               72220F9413330B0C00FCA411 /* client.c in Sources */,
+                               72220F9513330B0C00FCA411 /* conf.c in Sources */,
+                               72220F9613330B0C00FCA411 /* dirsvc.c in Sources */,
+                               72220F9713330B0C00FCA411 /* env.c in Sources */,
+                               72220F9813330B0C00FCA411 /* ipp.c in Sources */,
+                               72220F9913330B0C00FCA411 /* job.c in Sources */,
+                               72220F9A13330B0C00FCA411 /* listen.c in Sources */,
+                               72220F9B13330B0C00FCA411 /* log.c in Sources */,
+                               72220F9C13330B0C00FCA411 /* main.c in Sources */,
+                               72220F9D13330B0C00FCA411 /* network.c in Sources */,
+                               72220F9E13330B0C00FCA411 /* policy.c in Sources */,
+                               72220F9F13330B0C00FCA411 /* printers.c in Sources */,
+                               72220FA013330B0C00FCA411 /* process.c in Sources */,
+                               72220FA113330B0C00FCA411 /* quotas.c in Sources */,
+                               72220FA313330B0C00FCA411 /* select.c in Sources */,
+                               72220FA413330B0C00FCA411 /* server.c in Sources */,
+                               72220FA513330B0C00FCA411 /* statbuf.c in Sources */,
+                               72220FA613330B0C00FCA411 /* subscriptions.c in Sources */,
+                               72220FA713330B0C00FCA411 /* sysman.c in Sources */,
+                               72C16CB9137B195D007E4BF4 /* file.c in Sources */,
+                               72D53A3815B4929D003F877F /* colorman.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72220FA813330B2200FCA411 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72220FB613330BCE00FCA411 /* filter.c in Sources */,
+                               72220FB713330BCE00FCA411 /* mime.c in Sources */,
+                               72220FB913330BCE00FCA411 /* type.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724378F91333E43E009631B9 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               7243790D1333E4E3009631B9 /* ipp.c in Sources */,
+                               7243790E1333E4E3009631B9 /* network.c in Sources */,
+                               7243790F1333E4E3009631B9 /* snmp-supplies.c in Sources */,
+                               724379131333E516009631B9 /* runloop.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724379141333E532009631B9 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724379221333E928009631B9 /* network.c in Sources */,
+                               724379231333E928009631B9 /* runloop.c in Sources */,
+                               724379241333E928009631B9 /* snmp-supplies.c in Sources */,
+                               724379291333E952009631B9 /* lpd.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               7243792C1333FB85009631B9 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724379401333FD4B009631B9 /* network.c in Sources */,
+                               724379411333FD4B009631B9 /* runloop.c in Sources */,
+                               724379421333FD4B009631B9 /* snmp-supplies.c in Sources */,
+                               7243793D1333FD19009631B9 /* socket.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724379431333FEA9009631B9 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724379511333FEBB009631B9 /* dnssd.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724379571333FF1D009631B9 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724379C71333FFC7009631B9 /* usb.c in Sources */,
+                               724379CB1334000E009631B9 /* ieee1284.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5271CC0370C0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5361CC0372F0092477B /* testadmin.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA53A1CC037370092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5491CC037460092477B /* testarray.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA54D1CC037500092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA55C1CC0375F0092477B /* testcache.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5601CC037670092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA56F1CC037760092477B /* testconflicts.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5731CC037810092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5821CC0378E0092477B /* testfile.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5861CC037980092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5951CC037A50092477B /* testi18n.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5991CC037AA0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5A81CC037B70092477B /* testipp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5AC1CC037C60092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5BB1CC037D30092477B /* testlang.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5BF1CC037D90092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5CE1CC037E50092477B /* testlpd.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5D41CC037F00092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5E21CC037FD0092477B /* testoptions.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5E81CC038040092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA5F61CC0380F0092477B /* testppd.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA5FC1CC038190092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA60A1CC038250092477B /* testpwg.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6101CC0382B0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA61E1CC0383B0092477B /* testraster.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6241CC038410092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6321CC038510092477B /* testsnmp.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6381CC038560092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6461CC038650092477B /* testspeed.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA64C1CC0386E0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA65A1CC038790092477B /* testsub.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6631CC038A50092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6711CC038B30092477B /* test1284.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6751CC038BD0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6841CC038CA0092477B /* testbackend.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA68A1CC038D90092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
-                               2767FC57192674C4000F61D3 /* libcups_static.a in Frameworks */,
-                               278C58E9136B64B000836530 /* CoreFoundation.framework in Frameworks */,
-                               278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */,
-                               278C58EB136B64B000836530 /* Security.framework in Frameworks */,
-                               278C58EC136B64B000836530 /* SystemConfiguration.framework in Frameworks */,
-                               270CCDBA135E3D0900007BE2 /* libcupsmime.dylib in Frameworks */,
+                               271284D21CC1231300E517C7 /* snmp-supplies.c in Sources */,
+                               724FA6981CC038E70092477B /* testsupplies.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA69C1CC039200092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6AB1CC0392E0092477B /* testcgi.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6AF1CC0393E0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6BE1CC0394C0092477B /* testhi.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6C41CC0395A0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6D21CC039680092477B /* testtemplate.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6DD1CC039DE0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA6EB1CC039EB0092477B /* testnotify.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA6F21CC03A210092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA7001CC03A2F0092477B /* testcatalog.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7041CC03A490092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA7051CC03A490092477B /* error.c in Sources */,
+                               724FA7061CC03A490092477B /* interpret.c in Sources */,
+                               724FA7071CC03A490092477B /* raster.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7131CC03A990092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA7141CC03A990092477B /* filter.c in Sources */,
+                               724FA7151CC03A990092477B /* mime.c in Sources */,
+                               724FA7161CC03A990092477B /* type.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7231CC03AAF0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA7241CC03AAF0092477B /* ppdc-array.cxx in Sources */,
+                               724FA7251CC03AAF0092477B /* ppdc-attr.cxx in Sources */,
+                               724FA7261CC03AAF0092477B /* ppdc-catalog.cxx in Sources */,
+                               724FA7271CC03AAF0092477B /* ppdc-choice.cxx in Sources */,
+                               724FA7281CC03AAF0092477B /* ppdc-constraint.cxx in Sources */,
+                               724FA7291CC03AAF0092477B /* ppdc-driver.cxx in Sources */,
+                               724FA72A1CC03AAF0092477B /* ppdc-file.cxx in Sources */,
+                               724FA72B1CC03AAF0092477B /* ppdc-filter.cxx in Sources */,
+                               724FA72C1CC03AAF0092477B /* ppdc-font.cxx in Sources */,
+                               724FA72D1CC03AAF0092477B /* ppdc-group.cxx in Sources */,
+                               724FA72E1CC03AAF0092477B /* ppdc-import.cxx in Sources */,
+                               724FA72F1CC03AAF0092477B /* ppdc-mediasize.cxx in Sources */,
+                               724FA7301CC03AAF0092477B /* ppdc-message.cxx in Sources */,
+                               724FA7311CC03AAF0092477B /* ppdc-option.cxx in Sources */,
+                               724FA7321CC03AAF0092477B /* ppdc-profile.cxx in Sources */,
+                               724FA7331CC03AAF0092477B /* ppdc-shared.cxx in Sources */,
+                               724FA7341CC03AAF0092477B /* ppdc-source.cxx in Sources */,
+                               724FA7351CC03AAF0092477B /* ppdc-string.cxx in Sources */,
+                               724FA7361CC03AAF0092477B /* ppdc-variable.cxx in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA7441CC03ACC0092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA7511CC03AF20092477B /* help-index.c in Sources */,
+                               724FA7521CC03AF20092477B /* help.c in Sources */,
+                               724FA7531CC03AF20092477B /* html.c in Sources */,
+                               724FA7541CC03AF20092477B /* ipp-var.c in Sources */,
+                               724FA7551CC03AF20092477B /* search.c in Sources */,
+                               724FA7561CC03AF20092477B /* template.c in Sources */,
+                               724FA7571CC03AF20092477B /* var.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               724FA75B1CC03AF60092477B /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               724FA75D1CC03AF60092477B /* help-index.c in Sources */,
+                               724FA75E1CC03AF60092477B /* help.c in Sources */,
+                               724FA75F1CC03AF60092477B /* html.c in Sources */,
+                               724FA7601CC03AF60092477B /* ipp-var.c in Sources */,
+                               724FA7611CC03AF60092477B /* search.c in Sources */,
+                               724FA7621CC03AF60092477B /* template.c in Sources */,
+                               724FA7631CC03AF60092477B /* var.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               7258EADE134594C4009286F1 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               7258EAED134594EB009286F1 /* rastertopwg.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               726AD6F3135E88F0002C930D /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               726AD702135E8A90002C930D /* ippserver.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72CF95E918A19134000FCAE4 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72CF95F318A19165000FCAE4 /* ippfind.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72F75A4E1336F950004BB496 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72F75A5C1336F988004BB496 /* cupstestppd.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+               72F75A5D1336F9A3004BB496 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               72F75A6C1336FA8A004BB496 /* error.c in Sources */,
+                               72F75A6D1336FA8A004BB496 /* interpret.c in Sources */,
+                               72F75A6E1336FA8A004BB496 /* raster.c in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
-               273BF6BA1333B5000022CAAB /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               2767FC5F1926750C000F61D3 /* CoreFoundation.framework in Frameworks */,
-                               2767FC601926750C000F61D3 /* libiconv.dylib in Frameworks */,
-                               2767FC611926750C000F61D3 /* libresolv.dylib in Frameworks */,
-                               2767FC621926750C000F61D3 /* libz.dylib in Frameworks */,
-                               2767FC631926750C000F61D3 /* Security.framework in Frameworks */,
-                               2767FC641926750C000F61D3 /* SystemConfiguration.framework in Frameworks */,
-                               2767FC58192674E0000F61D3 /* libcups_static.a in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXTargetDependency section */
+               270CCDB2135E3CDE00007BE2 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 270CCDA6135E3C9E00007BE2 /* testmime */;
+                       targetProxy = 270CCDB1135E3CDE00007BE2 /* PBXContainerItemProxy */;
+               };
+               270CCDB8135E3CFD00007BE2 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 270CCDB7135E3CFD00007BE2 /* PBXContainerItemProxy */;
+               };
+               270D02141D707E0200EA9403 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 270D02151D707E0200EA9403 /* PBXContainerItemProxy */;
+               };
+               270D02281D707E5100EA9403 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 270D02131D707E0200EA9403 /* testcreds */;
+                       targetProxy = 270D02271D707E5100EA9403 /* PBXContainerItemProxy */;
+               };
+               271284911CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 271284901CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284931CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7581CC03AF60092477B /* libcupscgi_static */;
+                       targetProxy = 271284921CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284951CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7011CC03A490092477B /* libcupsimage_static */;
+                       targetProxy = 271284941CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284971CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7101CC03A990092477B /* libcupsmime_static */;
+                       targetProxy = 271284961CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284991CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7201CC03AAF0092477B /* libcupsppdc_static */;
+                       targetProxy = 271284981CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               2712849B1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA65E1CC038A50092477B /* test1284 */;
+                       targetProxy = 2712849A1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               2712849D1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5241CC0370C0092477B /* testadmin */;
+                       targetProxy = 2712849C1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               2712849F1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5371CC037370092477B /* testarray */;
+                       targetProxy = 2712849E1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284A11CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6721CC038BD0092477B /* testbackend */;
+                       targetProxy = 271284A01CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284A31CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA54A1CC037500092477B /* testcache */;
+                       targetProxy = 271284A21CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284A51CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6ED1CC03A210092477B /* testcatalog */;
+                       targetProxy = 271284A41CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284A71CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6991CC039200092477B /* testcgi */;
+                       targetProxy = 271284A61CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284A91CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA55D1CC037670092477B /* testconflicts */;
+                       targetProxy = 271284A81CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284AB1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5701CC037810092477B /* testfile */;
+                       targetProxy = 271284AA1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284AD1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6AC1CC0393E0092477B /* testhi */;
+                       targetProxy = 271284AC1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284AF1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5831CC037980092477B /* testi18n */;
+                       targetProxy = 271284AE1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284B11CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5961CC037AA0092477B /* testipp */;
+                       targetProxy = 271284B01CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284B31CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5A91CC037C60092477B /* testlang */;
+                       targetProxy = 271284B21CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284B51CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5BC1CC037D90092477B /* testlpd */;
+                       targetProxy = 271284B41CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284B71CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6D81CC039DE0092477B /* testnotify */;
+                       targetProxy = 271284B61CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284B91CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5CF1CC037F00092477B /* testoptions */;
+                       targetProxy = 271284B81CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284BB1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5E31CC038040092477B /* testppd */;
+                       targetProxy = 271284BA1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284BD1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA5F71CC038190092477B /* testpwg */;
+                       targetProxy = 271284BC1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284BF1CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA60B1CC0382B0092477B /* testraster */;
+                       targetProxy = 271284BE1CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284C11CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA61F1CC038410092477B /* testsnmp */;
+                       targetProxy = 271284C01CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284C31CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6331CC038560092477B /* testspeed */;
+                       targetProxy = 271284C21CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284C51CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6471CC0386E0092477B /* testsub */;
+                       targetProxy = 271284C41CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284C71CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6851CC038D90092477B /* testsupplies */;
+                       targetProxy = 271284C61CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284C91CC11FA500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA6BF1CC0395A0092477B /* testtemplate */;
+                       targetProxy = 271284C81CC11FA500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284CB1CC122D000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7581CC03AF60092477B /* libcupscgi_static */;
+                       targetProxy = 271284CA1CC122D000E517C7 /* PBXContainerItemProxy */;
+               };
+               271284CD1CC122E400E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7201CC03AAF0092477B /* libcupsppdc_static */;
+                       targetProxy = 271284CC1CC122E400E517C7 /* PBXContainerItemProxy */;
+               };
+               271284CF1CC122ED00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7581CC03AF60092477B /* libcupscgi_static */;
+                       targetProxy = 271284CE1CC122ED00E517C7 /* PBXContainerItemProxy */;
+               };
+               271284D11CC122F900E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7011CC03A490092477B /* libcupsimage_static */;
+                       targetProxy = 271284D01CC122F900E517C7 /* PBXContainerItemProxy */;
+               };
+               271284D41CC1232500E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7581CC03AF60092477B /* libcupscgi_static */;
+                       targetProxy = 271284D31CC1232500E517C7 /* PBXContainerItemProxy */;
+               };
+               271284D61CC1234D00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7101CC03A990092477B /* libcupsmime_static */;
+                       targetProxy = 271284D51CC1234D00E517C7 /* PBXContainerItemProxy */;
+               };
+               271284E21CC1261900E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271284E31CC1261900E517C7 /* PBXContainerItemProxy */;
+               };
+               271284EF1CC1264B00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271284F01CC1264B00E517C7 /* PBXContainerItemProxy */;
+               };
+               271284FC1CC1265D00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271284FD1CC1265D00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285091CC1267A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 2712850A1CC1267A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285161CC1269700E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285171CC1269700E517C7 /* PBXContainerItemProxy */;
+               };
+               271285231CC126AA00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285241CC126AA00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285301CC1270B00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285311CC1270B00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712853D1CC1271E00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 2712853E1CC1271E00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712854A1CC1272D00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 2712854B1CC1272D00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285571CC1274300E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285581CC1274300E517C7 /* PBXContainerItemProxy */;
+               };
+               271285641CC1275200E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285651CC1275200E517C7 /* PBXContainerItemProxy */;
+               };
+               271285711CC1276400E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285721CC1276400E517C7 /* PBXContainerItemProxy */;
+               };
+               2712857E1CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271284E11CC1261900E517C7 /* cancel */;
+                       targetProxy = 2712857D1CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285801CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271284EE1CC1264B00E517C7 /* cupsaccept */;
+                       targetProxy = 2712857F1CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285821CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271284FB1CC1265D00E517C7 /* cupstestdsc */;
+                       targetProxy = 271285811CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285841CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285081CC1267A00E517C7 /* lp */;
+                       targetProxy = 271285831CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285861CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285151CC1269700E517C7 /* lpc */;
+                       targetProxy = 271285851CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285881CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285221CC126AA00E517C7 /* lpinfo */;
+                       targetProxy = 271285871CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712858A1CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2712852F1CC1270B00E517C7 /* lpmove */;
+                       targetProxy = 271285891CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712858C1CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2712853C1CC1271E00E517C7 /* lpoptions */;
+                       targetProxy = 2712858B1CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712858E1CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285491CC1272D00E517C7 /* lpq */;
+                       targetProxy = 2712858D1CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285901CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285561CC1274300E517C7 /* lpr */;
+                       targetProxy = 2712858F1CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285921CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285631CC1275200E517C7 /* lprm */;
+                       targetProxy = 271285911CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285941CC1295A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285701CC1276400E517C7 /* lpstat */;
+                       targetProxy = 271285931CC1295A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271285961CC12D1300E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285971CC12D1300E517C7 /* PBXContainerItemProxy */;
                };
-               274EE2601A03EDCA003213D1 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274EE2611A03EDCA003213D1 /* libcups_static.a in Frameworks */,
-                               274EE2621A03EDCA003213D1 /* CoreFoundation.framework in Frameworks */,
-                               274EE2631A03EDCA003213D1 /* libresolv.dylib in Frameworks */,
-                               274EE2641A03EDCA003213D1 /* libz.dylib in Frameworks */,
-                               274EE2651A03EDCA003213D1 /* Security.framework in Frameworks */,
-                               274EE2661A03EDCA003213D1 /* SystemConfiguration.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285A41CC12D3A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285A51CC12D3A00E517C7 /* PBXContainerItemProxy */;
                };
-               274EE2711A03EDCB003213D1 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274EE2721A03EDCB003213D1 /* libcups_static.a in Frameworks */,
-                               274EE2731A03EDCB003213D1 /* CoreFoundation.framework in Frameworks */,
-                               274EE2741A03EDCB003213D1 /* libresolv.dylib in Frameworks */,
-                               274EE2751A03EDCB003213D1 /* libz.dylib in Frameworks */,
-                               274EE2761A03EDCB003213D1 /* Security.framework in Frameworks */,
-                               274EE2771A03EDCB003213D1 /* SystemConfiguration.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285B21CC12D4E00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285B31CC12D4E00E517C7 /* PBXContainerItemProxy */;
                };
-               274FF5C913332B1F00317ECB /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF5DD13332D0600317ECB /* libcups.dylib in Frameworks */,
-                               274FF6241333323B00317ECB /* libcupsppdc.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285C01CC12D5E00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285C11CC12D5E00E517C7 /* PBXContainerItemProxy */;
                };
-               274FF5EB133330C800317ECB /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               7200511218F492F200E7B81B /* CoreFoundation.framework in Frameworks */,
-                               274FF6231333321400317ECB /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285CE1CC12DBF00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285CF1CC12DBF00E517C7 /* PBXContainerItemProxy */;
                };
-               274FF6261333333600317ECB /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF6321333334A00317ECB /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285DB1CC12DDF00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285DC1CC12DDF00E517C7 /* PBXContainerItemProxy */;
                };
-               274FF63B1333358B00317ECB /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72CEF95618A966E000FA9B81 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285E81CC12E2D00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285E91CC12E2D00E517C7 /* PBXContainerItemProxy */;
                };
-               274FF64C133339C400317ECB /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF658133339D300317ECB /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285F61CC12EEB00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271285F71CC12EEB00E517C7 /* PBXContainerItemProxy */;
                };
-               274FF67513333B2F00317ECB /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF68513333B4300317ECB /* libcups.dylib in Frameworks */,
-                               274FF68613333B4300317ECB /* libcupsmime.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271286031CC12F0100E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
+                       targetProxy = 271286021CC12F0100E517C7 /* PBXContainerItemProxy */;
                };
-               274FF6B91333B1C400317ECB /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72BFD609191AF14C0005DA37 /* SystemConfiguration.framework in Frameworks */,
-                               72BFD602191AF1270005DA37 /* CoreFoundation.framework in Frameworks */,
-                               72BFD603191AF1270005DA37 /* GSS.framework in Frameworks */,
-                               72BFD604191AF1270005DA37 /* Kerberos.framework in Frameworks */,
-                               72BFD605191AF1270005DA37 /* libiconv.dylib in Frameworks */,
-                               72BFD606191AF1270005DA37 /* libresolv.dylib in Frameworks */,
-                               72BFD607191AF1270005DA37 /* libz.dylib in Frameworks */,
-                               72BFD608191AF1270005DA37 /* Security.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271286061CC12F0B00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
+                       targetProxy = 271286071CC12F0B00E517C7 /* PBXContainerItemProxy */;
                };
-               276683591337A9B6000D33D0 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683671337A9E0000D33D0 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271286081CC12F0B00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271286091CC12F0B00E517C7 /* PBXContainerItemProxy */;
                };
-               2766836D1337AC79000D33D0 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683B11337AD06000D33D0 /* libcups.dylib in Frameworks */,
-                               276683B21337AD06000D33D0 /* libcupsppdc.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271286161CC12F1A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
+                       targetProxy = 271286171CC12F1A00E517C7 /* PBXContainerItemProxy */;
                };
-               2766837A1337AC8C000D33D0 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683B71337AD23000D33D0 /* libcups.dylib in Frameworks */,
-                               276683B81337AD23000D33D0 /* libcupsppdc.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271286181CC12F1A00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271286191CC12F1A00E517C7 /* PBXContainerItemProxy */;
+               };
+               271286351CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285951CC12D1300E517C7 /* admin.cgi */;
+                       targetProxy = 271286341CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286371CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285A31CC12D3A00E517C7 /* classes.cgi */;
+                       targetProxy = 271286361CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286391CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285CD1CC12DBF00E517C7 /* commandtops */;
+                       targetProxy = 271286381CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               2712863B1CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285DA1CC12DDF00E517C7 /* gziptoany */;
+                       targetProxy = 2712863A1CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               2712863D1CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285B11CC12D4E00E517C7 /* jobs.cgi */;
+                       targetProxy = 2712863C1CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               2712863F1CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285BF1CC12D5E00E517C7 /* printers.cgi */;
+                       targetProxy = 2712863E1CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286411CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285E71CC12E2D00E517C7 /* pstops */;
+                       targetProxy = 271286401CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286431CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271285F51CC12EEB00E517C7 /* rastertoepson */;
+                       targetProxy = 271286421CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286451CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286051CC12F0B00E517C7 /* rastertohp */;
+                       targetProxy = 271286441CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286471CC12F9000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286151CC12F1A00E517C7 /* rastertolabel */;
+                       targetProxy = 271286461CC12F9000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286581CC1309000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 271286591CC1309000E517C7 /* PBXContainerItemProxy */;
+               };
+               2712866C1CC1310E00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7011CC03A490092477B /* libcupsimage_static */;
+                       targetProxy = 2712866D1CC1310E00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712866E1CC1310E00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 2712866F1CC1310E00E517C7 /* PBXContainerItemProxy */;
+               };
+               271286881CC13DC000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 271286891CC13DC000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286991CC13DF100E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 2712869A1CC13DF100E517C7 /* PBXContainerItemProxy */;
+               };
+               271286AA1CC13DFF00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 271286AB1CC13DFF00E517C7 /* PBXContainerItemProxy */;
+               };
+               271286BB1CC13E2100E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271286BC1CC13E2100E517C7 /* PBXContainerItemProxy */;
+               };
+               271286CC1CC13E5B00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271286CD1CC13E5B00E517C7 /* PBXContainerItemProxy */;
+               };
+               271286DC1CC13EF400E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286981CC13DF100E517C7 /* po2strings */;
+                       targetProxy = 271286DB1CC13EF400E517C7 /* PBXContainerItemProxy */;
+               };
+               271286DE1CC13EF400E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286A91CC13DFF00E517C7 /* strings2po */;
+                       targetProxy = 271286DD1CC13EF400E517C7 /* PBXContainerItemProxy */;
+               };
+               271286E01CC13EF400E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286571CC1309000E517C7 /* tlscheck */;
+                       targetProxy = 271286DF1CC13EF400E517C7 /* PBXContainerItemProxy */;
+               };
+               271286E21CC13F0100E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286BA1CC13E2100E517C7 /* bcp */;
+                       targetProxy = 271286E11CC13F0100E517C7 /* PBXContainerItemProxy */;
+               };
+               271286E41CC13F0100E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286CB1CC13E5B00E517C7 /* tbcp */;
+                       targetProxy = 271286E31CC13F0100E517C7 /* PBXContainerItemProxy */;
+               };
+               271286E61CC13F2000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271286E71CC13F2000E517C7 /* PBXContainerItemProxy */;
+               };
+               271286F61CC13F3F00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 271286F71CC13F3F00E517C7 /* PBXContainerItemProxy */;
+               };
+               271287061CC13F8F00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286E51CC13F2000E517C7 /* mailto */;
+                       targetProxy = 271287051CC13F8F00E517C7 /* PBXContainerItemProxy */;
+               };
+               271287081CC13F8F00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271286F51CC13F3F00E517C7 /* rss */;
+                       targetProxy = 271287071CC13F8F00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712870A1CC13FAB00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 2712870B1CC13FAB00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712871C1CC13FFA00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 271287091CC13FAB00E517C7 /* mantohtml */;
+                       targetProxy = 2712871B1CC13FFA00E517C7 /* PBXContainerItemProxy */;
+               };
+               2712872F1CC140DF00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 2712872E1CC140DF00E517C7 /* PBXContainerItemProxy */;
+               };
+               271287311CC140DF00E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724FA7201CC03AAF0092477B /* libcupsppdc_static */;
+                       targetProxy = 271287301CC140DF00E517C7 /* PBXContainerItemProxy */;
+               };
+               271287361CC1411000E517C7 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2712871E1CC140BE00E517C7 /* genstrings */;
+                       targetProxy = 271287351CC1411000E517C7 /* PBXContainerItemProxy */;
+               };
+               273BF6C91333B5410022CAAB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 273BF6C81333B5410022CAAB /* PBXContainerItemProxy */;
+               };
+               273BF6DE1333B6370022CAAB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 273BF6BC1333B5000022CAAB /* testcups */;
+                       targetProxy = 273BF6DD1333B6370022CAAB /* PBXContainerItemProxy */;
+               };
+               274FF5DC13332CF900317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 274FF5DB13332CF900317ECB /* PBXContainerItemProxy */;
+               };
+               274FF5E313332D4300317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 274FF5E213332D4300317ECB /* PBXContainerItemProxy */;
+               };
+               274FF5E513332D4300317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220FAB13330B2200FCA411 /* libcupsmime */;
+                       targetProxy = 274FF5E413332D4300317ECB /* PBXContainerItemProxy */;
+               };
+               274FF5E713332D4300317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220F5A13330A5A00FCA411 /* cupsd */;
+                       targetProxy = 274FF5E613332D4300317ECB /* PBXContainerItemProxy */;
+               };
+               274FF5E913332D4300317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF5CB13332B1F00317ECB /* cups-driverd */;
+                       targetProxy = 274FF5E813332D4300317ECB /* PBXContainerItemProxy */;
+               };
+               274FF5F3133330FD00317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 274FF5F2133330FD00317ECB /* PBXContainerItemProxy */;
+               };
+               274FF6201333316200317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
+                       targetProxy = 274FF61F1333316200317ECB /* PBXContainerItemProxy */;
+               };
+               274FF622133331D300317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
+                       targetProxy = 274FF621133331D300317ECB /* PBXContainerItemProxy */;
                };
-               276683871337AC97000D33D0 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683B91337AD31000D33D0 /* libcups.dylib in Frameworks */,
-                               276683BA1337AD31000D33D0 /* libcupsppdc.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               274FF6341333335200317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 274FF6331333335200317ECB /* PBXContainerItemProxy */;
                };
-               276683941337ACA2000D33D0 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683C31337B1B3000D33D0 /* libcups.dylib in Frameworks */,
-                               276683C41337B1B3000D33D0 /* libcupsppdc.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               274FF6391333348400317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6281333333600317ECB /* cups-deviced */;
+                       targetProxy = 274FF6381333348400317ECB /* PBXContainerItemProxy */;
                };
-               276683A11337ACAB000D33D0 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683C91337B1C1000D33D0 /* libcups.dylib in Frameworks */,
-                               276683CA1337B1C1000D33D0 /* libcupsppdc.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               274FF648133335A300317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF63D1333358B00317ECB /* cups-exec */;
+                       targetProxy = 274FF647133335A300317ECB /* PBXContainerItemProxy */;
                };
-               276683ED1337F78E000D33D0 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683FD1337F7B8000D33D0 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               274FF65A133339D900317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 274FF659133339D900317ECB /* PBXContainerItemProxy */;
                };
-               276684011337FA1D000D33D0 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               2766840F1337FA38000D33D0 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               274FF65E13333A3400317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF64E133339C400317ECB /* cups-lpd */;
+                       targetProxy = 274FF65D13333A3400317ECB /* PBXContainerItemProxy */;
                };
-               2767FC4B19266A0D000F61D3 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               2767FC6B192685E6000F61D3 /* libcups_static.a in Frameworks */,
-                               2767FC6C192685E6000F61D3 /* CoreFoundation.framework in Frameworks */,
-                               2767FC6D192685E6000F61D3 /* libiconv.dylib in Frameworks */,
-                               2767FC6E192685E6000F61D3 /* libresolv.dylib in Frameworks */,
-                               2767FC6F192685E6000F61D3 /* libz.dylib in Frameworks */,
-                               2767FC70192685E6000F61D3 /* Security.framework in Frameworks */,
-                               2767FC71192685E6000F61D3 /* SystemConfiguration.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               274FF68213333B3C00317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 274FF68113333B3C00317ECB /* PBXContainerItemProxy */;
                };
-               278C58C8136B640300836530 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72BFD5FB191AF0A30005DA37 /* libcups_static.a in Frameworks */,
-                               72BFD5FC191AF0A30005DA37 /* CoreFoundation.framework in Frameworks */,
-                               72BFD5FD191AF0A30005DA37 /* Kerberos.framework in Frameworks */,
-                               72BFD5FE191AF0A30005DA37 /* libiconv.dylib in Frameworks */,
-                               72BFD5FF191AF0A30005DA37 /* libresolv.dylib in Frameworks */,
-                               72BFD600191AF0A30005DA37 /* libz.dylib in Frameworks */,
-                               72BFD601191AF0A30005DA37 /* Security.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               274FF68413333B3C00317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220FAB13330B2200FCA411 /* libcupsmime */;
+                       targetProxy = 274FF68313333B3C00317ECB /* PBXContainerItemProxy */;
                };
-               27A034781A8BDB1200650675 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               27A034851A8BDC5C00650675 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               274FF6E21333B33F00317ECB /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF67713333B2F00317ECB /* cupsfilter */;
+                       targetProxy = 274FF6E11333B33F00317ECB /* PBXContainerItemProxy */;
                };
-               720DD6BF1358FD5F0064AA82 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               720DD6CD1358FD720064AA82 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683661337A9D6000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 276683651337A9D6000D33D0 /* PBXContainerItemProxy */;
                };
-               72220EAB1333047D00FCA411 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               728FB7F11536167A005426E1 /* libiconv.dylib in Frameworks */,
-                               728FB7F21536167A005426E1 /* libresolv.dylib in Frameworks */,
-                               728FB7ED1536161C005426E1 /* libz.dylib in Frameworks */,
-                               728FB7E91536161C005426E1 /* CoreFoundation.framework in Frameworks */,
-                               72D53A2A15B49110003F877F /* GSS.framework in Frameworks */,
-                               728FB7EA1536161C005426E1 /* Kerberos.framework in Frameworks */,
-                               728FB7EB1536161C005426E1 /* Security.framework in Frameworks */,
-                               728FB7EE15361642005426E1 /* SystemConfiguration.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2766836B1337AA25000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2766835B1337A9B6000D33D0 /* cupsctl */;
+                       targetProxy = 2766836A1337AA25000D33D0 /* PBXContainerItemProxy */;
                };
-               72220F5813330A5A00FCA411 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72D53A3A15B492FA003F877F /* libpam.dylib in Frameworks */,
-                               72220F6613330A7000FCA411 /* libcups.dylib in Frameworks */,
-                               72220FBF13330C1000FCA411 /* libcupsmime.dylib in Frameworks */,
-                               72D53A3415B4925B003F877F /* ApplicationServices.framework in Frameworks */,
-                               72D53A3015B4923F003F877F /* CoreFoundation.framework in Frameworks */,
-                               72D53A3B15B4930A003F877F /* GSS.framework in Frameworks */,
-                               72D53A3515B49270003F877F /* IOKit.framework in Frameworks */,
-                               72D53A3C15B4930A003F877F /* Kerberos.framework in Frameworks */,
-                               72D53A3115B4923F003F877F /* Security.framework in Frameworks */,
-                               72D53A3215B4923F003F877F /* SystemConfiguration.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683AE1337ACF9000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 276683AD1337ACF9000D33D0 /* PBXContainerItemProxy */;
                };
-               72220FA913330B2200FCA411 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72220FBA13330BEE00FCA411 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683B01337ACF9000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
+                       targetProxy = 276683AF1337ACF9000D33D0 /* PBXContainerItemProxy */;
                };
-               724378FA1333E43E009631B9 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               724379081333E4A5009631B9 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683B41337AD18000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 276683B31337AD18000D33D0 /* PBXContainerItemProxy */;
                };
-               724379151333E532009631B9 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               724379271333E93D009631B9 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683B61337AD18000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
+                       targetProxy = 276683B51337AD18000D33D0 /* PBXContainerItemProxy */;
                };
-               7243792D1333FB85009631B9 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               7243793B1333FB9D009631B9 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683BC1337AE49000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 276683BB1337AE49000D33D0 /* PBXContainerItemProxy */;
                };
-               724379441333FEA9009631B9 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               724379561333FF04009631B9 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683BE1337AE49000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
+                       targetProxy = 276683BD1337AE49000D33D0 /* PBXContainerItemProxy */;
                };
-               724379581333FF1D009631B9 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               724379661333FF3B009631B9 /* libcups.dylib in Frameworks */,
-                               72D53A2F15B49174003F877F /* CoreFoundation.framework in Frameworks */,
-                               72D53A2D15B4913D003F877F /* IOKit.framework in Frameworks */,
-                               72D53A2E15B4915B003F877F /* SystemConfiguration.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683C01337B1AD000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 276683BF1337B1AD000D33D0 /* PBXContainerItemProxy */;
                };
-               7258EADF134594C4009286F1 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               7258EAF413459B6D009286F1 /* libcups.dylib in Frameworks */,
-                               7258EAF513459B6D009286F1 /* libcupsimage.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683C21337B1AD000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
+                       targetProxy = 276683C11337B1AD000D33D0 /* PBXContainerItemProxy */;
                };
-               726AD6F4135E88F0002C930D /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               2767FC6519267538000F61D3 /* libcups_static.a in Frameworks */,
-                               2767FC6619267538000F61D3 /* CoreFoundation.framework in Frameworks */,
-                               2767FC6719267538000F61D3 /* libresolv.dylib in Frameworks */,
-                               2767FC6819267538000F61D3 /* libz.dylib in Frameworks */,
-                               2767FC6919267538000F61D3 /* Security.framework in Frameworks */,
-                               2767FC6A19267538000F61D3 /* SystemConfiguration.framework in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683C61337B1BC000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 276683C51337B1BC000D33D0 /* PBXContainerItemProxy */;
                };
-               72CF95EB18A19134000FCAE4 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72CF95EC18A19134000FCAE4 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683C81337B1BC000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
+                       targetProxy = 276683C71337B1BC000D33D0 /* PBXContainerItemProxy */;
                };
-               72F75A4F1336F950004BB496 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683E51337B2BE000D33D0 /* libcupsimage.dylib in Frameworks */,
-                               276683E21337B29C000D33D0 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683D71337B24A000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2766836F1337AC79000D33D0 /* ppdc */;
+                       targetProxy = 276683D61337B24A000D33D0 /* PBXContainerItemProxy */;
                };
-               72F75A5E1336F9A3004BB496 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72F75A671336FA38004BB496 /* libcups.dylib in Frameworks */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               276683D91337B24A000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2766837C1337AC8C000D33D0 /* ppdhtml */;
+                       targetProxy = 276683D81337B24A000D33D0 /* PBXContainerItemProxy */;
                };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-               273BF6B81333B4A90022CAAB /* tests */ = {
-                       isa = PBXGroup;
-                       children = (
-                               727EF041192E3544001EF690 /* testadmin.c */,
-                               727EF042192E3544001EF690 /* testarray.c */,
-                               727EF043192E3544001EF690 /* testcache.c */,
-                               727EF044192E3544001EF690 /* testconflicts.c */,
-                               273BF6C61333B5370022CAAB /* testcups.c */,
-                               2767FC5119266A36000F61D3 /* testdest.c */,
-                               727EF045192E3544001EF690 /* testfile.c */,
-                               278C58E2136B647200836530 /* testhttp.c */,
-                               727EF046192E3544001EF690 /* testi18n.c */,
-                               727EF047192E3544001EF690 /* testipp.c */,
-                               727EF048192E3544001EF690 /* testlang.c */,
-                               727EF04D192E3602001EF690 /* testlpd.c */,
-                               270CCDBB135E3D3E00007BE2 /* testmime.c */,
-                               727EF049192E3544001EF690 /* testoptions.c */,
-                               727EF04A192E3544001EF690 /* testppd.c */,
-                               727EF04B192E3544001EF690 /* testpwg.c */,
-                               27F89DA21B3AC43B00E5A4B7 /* testraster.c */,
-                               727EF04C192E3544001EF690 /* testsnmp.c */,
-                               727EF04E192E3602001EF690 /* testspeed.c */,
-                               727EF04F192E3602001EF690 /* testsub.c */,
-                       );
-                       name = tests;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               276683DB1337B24A000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 276683891337AC97000D33D0 /* ppdi */;
+                       targetProxy = 276683DA1337B24A000D33D0 /* PBXContainerItemProxy */;
                };
-               274FF5D513332C2C00317ECB /* daemon */ = {
-                       isa = PBXGroup;
-                       children = (
-                               274FF6351333344400317ECB /* cups-deviced.c */,
-                               274FF5D613332CC700317ECB /* cups-driverd.cxx */,
-                               274FF6491333398D00317ECB /* cups-exec.c */,
-                               274FF65B133339FC00317ECB /* cups-lpd.c */,
-                               274FF5D713332CC700317ECB /* util.c */,
-                               274FF5D813332CC700317ECB /* util.h */,
-                       );
-                       name = daemon;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               276683DD1337B24A000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 276683961337ACA2000D33D0 /* ppdmerge */;
+                       targetProxy = 276683DC1337B24A000D33D0 /* PBXContainerItemProxy */;
                };
-               274FF5F41333310400317ECB /* libcupsppdc */ = {
-                       isa = PBXGroup;
-                       children = (
-                               274FF5F51333315100317ECB /* ppdc-array.cxx */,
-                               274FF5F61333315100317ECB /* ppdc-attr.cxx */,
-                               274FF5F71333315100317ECB /* ppdc-catalog.cxx */,
-                               274FF5F81333315100317ECB /* ppdc-choice.cxx */,
-                               274FF5F91333315100317ECB /* ppdc-constraint.cxx */,
-                               274FF5FA1333315100317ECB /* ppdc-driver.cxx */,
-                               274FF5FB1333315100317ECB /* ppdc-file.cxx */,
-                               274FF5FC1333315100317ECB /* ppdc-filter.cxx */,
-                               274FF5FD1333315100317ECB /* ppdc-font.cxx */,
-                               274FF5FE1333315100317ECB /* ppdc-group.cxx */,
-                               274FF5FF1333315100317ECB /* ppdc-import.cxx */,
-                               274FF6001333315100317ECB /* ppdc-mediasize.cxx */,
-                               274FF6011333315100317ECB /* ppdc-message.cxx */,
-                               274FF6021333315100317ECB /* ppdc-option.cxx */,
-                               274FF6031333315100317ECB /* ppdc-private.h */,
-                               274FF6041333315100317ECB /* ppdc-profile.cxx */,
-                               274FF6051333315100317ECB /* ppdc-shared.cxx */,
-                               274FF6061333315100317ECB /* ppdc-source.cxx */,
-                               274FF6071333315100317ECB /* ppdc-string.cxx */,
-                               274FF6081333315100317ECB /* ppdc-variable.cxx */,
-                       );
-                       name = libcupsppdc;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               276683DF1337B24A000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 276683A31337ACAB000D33D0 /* ppdpo */;
+                       targetProxy = 276683DE1337B24A000D33D0 /* PBXContainerItemProxy */;
                };
-               274FF67313333B0A00317ECB /* commands */ = {
-                       isa = PBXGroup;
-                       children = (
-                               2732E089137A3F5200FAFEF6 /* cancel.c */,
-                               2732E08A137A3F5200FAFEF6 /* cupsaccept.c */,
-                               276684101337FA7C000D33D0 /* cupsaddsmb.c */,
-                               276683681337AA00000D33D0 /* cupsctl.c */,
-                               274FF68713333B6E00317ECB /* cupsfilter.c */,
-                               2732E08B137A3F5200FAFEF6 /* cupstestdsc.c */,
-                               72F75A5B1336F988004BB496 /* cupstestppd.c */,
-                               72CF95F218A19165000FCAE4 /* ippfind.c */,
-                               274EE27D1A03EE0B003213D1 /* ippinfra.c */,
-                               274EE27F1A03EE41003213D1 /* ippproxy.c */,
-                               726AD701135E8A90002C930D /* ippserver.c */,
-                               276683F91337F7A9000D33D0 /* ipptool.c */,
-                               2732E08C137A3F5200FAFEF6 /* lp.c */,
-                               2732E08D137A3F5200FAFEF6 /* lpadmin.c */,
-                               2732E08E137A3F5200FAFEF6 /* lpinfo.c */,
-                               2732E08F137A3F5200FAFEF6 /* lpmove.c */,
-                               2732E090137A3F5200FAFEF6 /* lpoptions.c */,
-                               2732E092137A3F5200FAFEF6 /* lpstat.c */,
-                       );
-                       name = commands;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               276683E11337B299000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 276683E01337B299000D33D0 /* PBXContainerItemProxy */;
                };
-               276683CB1337B1CC000D33D0 /* ppdc tools */ = {
-                       isa = PBXGroup;
-                       children = (
-                               276683CC1337B201000D33D0 /* ppdc.cxx */,
-                               276683CE1337B20D000D33D0 /* ppdhtml.cxx */,
-                               276683D01337B21A000D33D0 /* ppdi.cxx */,
-                               276683D21337B228000D33D0 /* ppdmerge.cxx */,
-                               276683D41337B237000D33D0 /* ppdpo.cxx */,
-                       );
-                       name = "ppdc tools";
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               276683E41337B2BA000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
+                       targetProxy = 276683E31337B2BA000D33D0 /* PBXContainerItemProxy */;
                };
-               72220EAF1333047D00FCA411 /* Products */ = {
-                       isa = PBXGroup;
-                       children = (
-                               72220F5B13330A5A00FCA411 /* cupsd */,
-                               274FF5CC13332B1F00317ECB /* cups-driverd */,
-                               274FF6291333333600317ECB /* cups-deviced */,
-                               274FF63E1333358B00317ECB /* cups-exec */,
-                               274FF64F133339C400317ECB /* cups-lpd */,
-                               274FF67813333B2F00317ECB /* cupsfilter */,
-                               273BF6BD1333B5000022CAAB /* testcups */,
-                               724378FD1333E43E009631B9 /* ipp */,
-                               724379181333E532009631B9 /* lpd */,
-                               724379301333FB85009631B9 /* socket */,
-                               724379471333FEA9009631B9 /* dnssd */,
-                               7243795B1333FF1D009631B9 /* usb */,
-                               72F75A521336F950004BB496 /* cupstestppd */,
-                               2766835C1337A9B6000D33D0 /* cupsctl */,
-                               276683701337AC79000D33D0 /* ppdc */,
-                               2766837D1337AC8C000D33D0 /* ppdhtml */,
-                               2766838A1337AC97000D33D0 /* ppdi */,
-                               276683971337ACA2000D33D0 /* ppdmerge */,
-                               276683A41337ACAB000D33D0 /* ppdpo */,
-                               276683F01337F78E000D33D0 /* ipptool */,
-                               276684041337FA1D000D33D0 /* cupsaddsmb */,
-                               7258EAE2134594C4009286F1 /* rastertopwg */,
-                               720DD6C21358FD5F0064AA82 /* snmp */,
-                               270CCDA7135E3C9E00007BE2 /* testmime */,
-                               726AD6F7135E88F0002C930D /* ippserver */,
-                               278C58CB136B640300836530 /* testhttp */,
-                               72A4332F155844CF002E172D /* libcups_static.a */,
-                               72CF95F118A19134000FCAE4 /* ipptool copy */,
-                               2767FC5019266A0D000F61D3 /* testdest */,
-                               274EE26B1A03EDCA003213D1 /* ippserver copy */,
-                               274EE27C1A03EDCB003213D1 /* ippserver copy copy */,
-                               27A0347B1A8BDB1300650675 /* lpadmin */,
-                       );
-                       name = Products;
-                       sourceTree = "<group>";
+               276683FC1337F7B3000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 276683FB1337F7B3000D33D0 /* PBXContainerItemProxy */;
                };
-               72220EB41333050100FCA411 /* libcups */ = {
-                       isa = PBXGroup;
-                       children = (
-                               276683561337A8C5000D33D0 /* cups.strings */,
-                               27D3037D134148CB00F022B1 /* libcups2.def */,
-                               72220EB51333052D00FCA411 /* adminutil.c */,
-                               72220EB81333056300FCA411 /* array.c */,
-                               72220EBA1333056300FCA411 /* attr.c */,
-                               72220EBB1333056300FCA411 /* auth.c */,
-                               72220EBC1333056300FCA411 /* backchannel.c */,
-                               72220EBD1333056300FCA411 /* backend.c */,
-                               72220EBF1333056300FCA411 /* conflicts.c */,
-                               72220EC21333056300FCA411 /* custom.c */,
-                               72220ED1133305BB00FCA411 /* debug.c */,
-                               72220ED2133305BB00FCA411 /* dest.c */,
-                               72CF95E018A13543000FCAE4 /* dest-job.c */,
-                               72CF95E118A13543000FCAE4 /* dest-localization.c */,
-                               72CF95E218A13543000FCAE4 /* dest-options.c */,
-                               72220ED3133305BB00FCA411 /* dir.c */,
-                               72220ED4133305BB00FCA411 /* dir.h */,
-                               72220ED5133305BB00FCA411 /* emit.c */,
-                               72220ED6133305BB00FCA411 /* encode.c */,
-                               72220ED8133305BB00FCA411 /* file.c */,
-                               72220EDA133305BB00FCA411 /* getdevices.c */,
-                               72220EDB133305BB00FCA411 /* getifaddrs.c */,
-                               72220EDC133305BB00FCA411 /* getputfile.c */,
-                               72220EDD133305BB00FCA411 /* globals.c */,
-                               72220EE2133305BB00FCA411 /* http.c */,
-                               72220EDE133305BB00FCA411 /* http-addr.c */,
-                               72220EDF133305BB00FCA411 /* http-addrlist.c */,
-                               72220EE1133305BB00FCA411 /* http-support.c */,
-                               72220EE6133305BB00FCA411 /* ipp.c */,
-                               72220EE5133305BB00FCA411 /* ipp-support.c */,
-                               72220EE8133305BB00FCA411 /* langprintf.c */,
-                               72220EEA133305BB00FCA411 /* language.c */,
-                               72220EEC133305BB00FCA411 /* localize.c */,
-                               72220EED133305BB00FCA411 /* mark.c */,
-                               72220EEF133305BB00FCA411 /* md5.c */,
-                               72220EF0133305BB00FCA411 /* md5passwd.c */,
-                               72220EF1133305BB00FCA411 /* notify.c */,
-                               72220EF2133305BB00FCA411 /* options.c */,
-                               72220EF3133305BB00FCA411 /* page.c */,
-                               72220EF4133305BB00FCA411 /* ppd-cache.c */,
-                               72220EF6133305BB00FCA411 /* ppd.c */,
-                               72220EF8133305BB00FCA411 /* pwg-media.c */,
-                               72220EFB133305BB00FCA411 /* request.c */,
-                               72220EFC133305BB00FCA411 /* sidechannel.c */,
-                               72220EFF133305BB00FCA411 /* snmp.c */,
-                               72220F00133305BB00FCA411 /* snprintf.c */,
-                               72220F02133305BB00FCA411 /* string.c */,
-                               72220F03133305BB00FCA411 /* tempfile.c */,
-                               72220F05133305BB00FCA411 /* thread.c */,
-                               727AD5B619100A58009F6862 /* tls.c */,
-                               270B267D17F5C06700C8A3A9 /* tls-darwin.c */,
-                               270B267E17F5C06700C8A3A9 /* tls-gnutls.c */,
-                               270B268117F5C5D600C8A3A9 /* tls-sspi.c */,
-                               72220F06133305BB00FCA411 /* transcode.c */,
-                               72220F08133305BB00FCA411 /* usersys.c */,
-                               72220F09133305BB00FCA411 /* util.c */,
-                       );
-                       name = libcups;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               276683FF1337F7C5000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 276683EF1337F78E000D33D0 /* ipptool */;
+                       targetProxy = 276683FE1337F7C5000D33D0 /* PBXContainerItemProxy */;
+               };
+               2766840E1337FA31000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 2766840D1337FA31000D33D0 /* PBXContainerItemProxy */;
                };
-               72220F45133305D000FCA411 /* Public Headers */ = {
-                       isa = PBXGroup;
-                       children = (
-                               72220EB71333056300FCA411 /* adminutil.h */,
-                               72220EB91333056300FCA411 /* array.h */,
-                               72220EBE1333056300FCA411 /* backend.h */,
-                               72220EC11333056300FCA411 /* cups.h */,
-                               72220ED9133305BB00FCA411 /* file.h */,
-                               72220EE3133305BB00FCA411 /* http.h */,
-                               72220EE7133305BB00FCA411 /* ipp.h */,
-                               72220EEB133305BB00FCA411 /* language.h */,
-                               72220FB413330BCE00FCA411 /* mime.h */,
-                               72220EF7133305BB00FCA411 /* ppd.h */,
-                               274FF6091333315100317ECB /* ppdc.h */,
-                               2767FC7519269687000F61D3 /* pwg.h */,
-                               72220EFA133305BB00FCA411 /* raster.h */,
-                               72220EFD133305BB00FCA411 /* sidechannel.h */,
-                               72220F07133305BB00FCA411 /* transcode.h */,
-                               72220F0A133305BB00FCA411 /* versioning.h */,
-                       );
-                       name = "Public Headers";
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               276684131337FA8D000D33D0 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 276684031337FA1D000D33D0 /* cupsaddsmb */;
+                       targetProxy = 276684121337FA8D000D33D0 /* PBXContainerItemProxy */;
                };
-               72220F461333060C00FCA411 /* Private Headers */ = {
-                       isa = PBXGroup;
-                       children = (
-                               72220F471333063D00FCA411 /* config.h */,
-                               7234F41F1378A16F00D3E9C9 /* array-private.h */,
-                               72220EC01333056300FCA411 /* cups-private.h */,
-                               72220EC31333056300FCA411 /* debug-private.h */,
-                               72220ED7133305BB00FCA411 /* file-private.h */,
-                               72220EE0133305BB00FCA411 /* http-private.h */,
-                               72220EE4133305BB00FCA411 /* ipp-private.h */,
-                               72220EE9133305BB00FCA411 /* language-private.h */,
-                               72220EEE133305BB00FCA411 /* md5-private.h */,
-                               7271883C1374AB14001A2036 /* mime-private.h */,
-                               72220EF5133305BB00FCA411 /* ppd-private.h */,
-                               72220EF9133305BB00FCA411 /* pwg-private.h */,
-                               2767FC76192696A0000F61D3 /* raster-private.h */,
-                               72220EFE133305BB00FCA411 /* snmp-private.h */,
-                               72220F01133305BB00FCA411 /* string-private.h */,
-                               72220F04133305BB00FCA411 /* thread-private.h */,
-                       );
-                       name = "Private Headers";
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               2767FC4719266A0D000F61D3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 2767FC4819266A0D000F61D3 /* PBXContainerItemProxy */;
                };
-               72220F5D13330A5A00FCA411 /* cupsd */ = {
-                       isa = PBXGroup;
-                       children = (
-                               72E65BDC18DC852700097E89 /* Makefile */,
-                               7226369B18AE6D19004ED309 /* org.cups.cups-lpd.plist */,
-                               72E65BD518DC818400097E89 /* org.cups.cups-lpd.plist.in */,
-                               72496E171A13A03B0051899C /* org.cups.cups-lpdAT.service.in */,
-                               72496E161A13A03B0051899C /* org.cups.cups-lpd.socket */,
-                               72E65BD618DC818400097E89 /* org.cups.cupsd.path.in */,
-                               7226369C18AE6D19004ED309 /* org.cups.cupsd.plist */,
-                               72E65BD718DC818400097E89 /* org.cups.cupsd.service.in */,
-                               72E65BD818DC818400097E89 /* org.cups.cupsd.socket.in */,
-                               72220F6913330B0C00FCA411 /* auth.c */,
-                               72220F6A13330B0C00FCA411 /* auth.h */,
-                               72220F6B13330B0C00FCA411 /* banners.c */,
-                               72220F6C13330B0C00FCA411 /* banners.h */,
-                               72220F6D13330B0C00FCA411 /* cert.c */,
-                               72220F6E13330B0C00FCA411 /* cert.h */,
-                               72220F6F13330B0C00FCA411 /* classes.c */,
-                               72220F7013330B0C00FCA411 /* classes.h */,
-                               72220F7113330B0C00FCA411 /* client.c */,
-                               72220F7213330B0C00FCA411 /* client.h */,
-                               72D53A3615B4929D003F877F /* colorman.c */,
-                               72D53A3715B4929D003F877F /* colorman.h */,
-                               72220F7313330B0C00FCA411 /* conf.c */,
-                               72220F7413330B0C00FCA411 /* conf.h */,
-                               72220F7513330B0C00FCA411 /* cupsd.h */,
-                               72220F7613330B0C00FCA411 /* dirsvc.c */,
-                               72220F7713330B0C00FCA411 /* dirsvc.h */,
-                               72220F7813330B0C00FCA411 /* env.c */,
-                               72C16CB8137B195D007E4BF4 /* file.c */,
-                               72220F7913330B0C00FCA411 /* ipp.c */,
-                               72220F7A13330B0C00FCA411 /* job.c */,
-                               72220F7B13330B0C00FCA411 /* job.h */,
-                               72220F7C13330B0C00FCA411 /* listen.c */,
-                               72220F7D13330B0C00FCA411 /* log.c */,
-                               72220F7E13330B0C00FCA411 /* main.c */,
-                               72220F7F13330B0C00FCA411 /* network.c */,
-                               72220F8013330B0C00FCA411 /* network.h */,
-                               72220F8113330B0C00FCA411 /* policy.c */,
-                               72220F8213330B0C00FCA411 /* policy.h */,
-                               72220F8313330B0C00FCA411 /* printers.c */,
-                               72220F8413330B0C00FCA411 /* printers.h */,
-                               72220F8513330B0C00FCA411 /* process.c */,
-                               72220F8613330B0C00FCA411 /* quotas.c */,
-                               72220F8813330B0C00FCA411 /* select.c */,
-                               72220F8913330B0C00FCA411 /* server.c */,
-                               72220F8A13330B0C00FCA411 /* statbuf.c */,
-                               72220F8B13330B0C00FCA411 /* statbuf.h */,
-                               72220F8C13330B0C00FCA411 /* subscriptions.c */,
-                               72220F8D13330B0C00FCA411 /* subscriptions.h */,
-                               72220F8E13330B0C00FCA411 /* sysman.c */,
-                               72220F8F13330B0C00FCA411 /* sysman.h */,
-                       );
-                       name = cupsd;
-                       path = .;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               2767FC5419267469000F61D3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 276683EF1337F78E000D33D0 /* ipptool */;
+                       targetProxy = 2767FC5319267469000F61D3 /* PBXContainerItemProxy */;
                };
-               72220FB013330B3400FCA411 /* libcupsmime */ = {
-                       isa = PBXGroup;
-                       children = (
-                               72220FB213330BCE00FCA411 /* filter.c */,
-                               72220FB313330BCE00FCA411 /* mime.c */,
-                               72220FB513330BCE00FCA411 /* type.c */,
-                       );
-                       name = libcupsmime;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               2767FC5619267469000F61D3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 2767FC4619266A0D000F61D3 /* testdest */;
+                       targetProxy = 2767FC5519267469000F61D3 /* PBXContainerItemProxy */;
                };
-               72220FB113330B4A00FCA411 /* Frameworks */ = {
-                       isa = PBXGroup;
-                       children = (
-                               2767FC591926750C000F61D3 /* CoreFoundation.framework */,
-                               2767FC5A1926750C000F61D3 /* libiconv.dylib */,
-                               2767FC5B1926750C000F61D3 /* libresolv.dylib */,
-                               2767FC5C1926750C000F61D3 /* libz.dylib */,
-                               2767FC5D1926750C000F61D3 /* Security.framework */,
-                               2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */,
-                               72D53A3915B492FA003F877F /* libpam.dylib */,
-                               72D53A3315B4925B003F877F /* ApplicationServices.framework */,
-                               72D53A2C15B4913D003F877F /* IOKit.framework */,
-                               72D53A2915B49110003F877F /* GSS.framework */,
-                               728FB7EF1536167A005426E1 /* libiconv.dylib */,
-                               728FB7F01536167A005426E1 /* libresolv.dylib */,
-                               728FB7EC1536161C005426E1 /* libz.dylib */,
-                               278C58E5136B64AF00836530 /* CoreFoundation.framework */,
-                               278C58E6136B64B000836530 /* Kerberos.framework */,
-                               278C58E7136B64B000836530 /* Security.framework */,
-                               278C58E8136B64B000836530 /* SystemConfiguration.framework */,
-                               72220EAE1333047D00FCA411 /* libcups.dylib */,
-                               72F75A611336F9A3004BB496 /* libcupsimage.dylib */,
-                               72220FAC13330B2200FCA411 /* libcupsmime.dylib */,
-                               274FF5EE133330C800317ECB /* libcupsppdc.dylib */,
-                       );
-                       name = Frameworks;
-                       sourceTree = "<group>";
+               278C58D6136B641D00836530 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 278C58CA136B640300836530 /* testhttp */;
+                       targetProxy = 278C58D5136B641D00836530 /* PBXContainerItemProxy */;
                };
-               724378F71333E3CE009631B9 /* backends */ = {
-                       isa = PBXGroup;
-                       children = (
-                               724379091333E4E3009631B9 /* backend-private.h */,
-                               724379501333FEBB009631B9 /* dnssd.c */,
-                               724379CA1334000E009631B9 /* ieee1284.c */,
-                               7243790A1333E4E3009631B9 /* ipp.c */,
-                               724379281333E952009631B9 /* lpd.c */,
-                               7243790B1333E4E3009631B9 /* network.c */,
-                               724379121333E516009631B9 /* runloop.c */,
-                               7243790C1333E4E3009631B9 /* snmp-supplies.c */,
-                               720DD6D21358FDDE0064AA82 /* snmp.c */,
-                               7243793C1333FD19009631B9 /* socket.c */,
-                               724379C51333FFC7009631B9 /* usb.c */,
-                               724379C41333FFC7009631B9 /* usb-darwin.c */,
-                               72FC29CF1A37A1CA00BDF935 /* usb-libusb.c */,
-                               72FC29D01A37A1CA00BDF935 /* usb-unix.c */,
-                               72F7F1D719D1C0CC00870B09 /* org.cups.usb-quirks */,
-                       );
-                       name = backends;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               278C58D8136B642F00836530 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 278C58D7136B642F00836530 /* PBXContainerItemProxy */;
                };
-               7258EADC134594A8009286F1 /* filters */ = {
-                       isa = PBXGroup;
-                       children = (
-                               7271881713746EA8001A2036 /* commandtops.c */,
-                               7271881813746EA8001A2036 /* common.c */,
-                               7271881913746EA8001A2036 /* common.h */,
-                               7271881A13746EA8001A2036 /* gziptoany.c */,
-                               7271882013746EA8001A2036 /* pstops.c */,
-                               7271882113746EA8001A2036 /* rastertoepson.c */,
-                               7271882213746EA8001A2036 /* rastertohp.c */,
-                               7271882313746EA8001A2036 /* rastertolabel.c */,
-                               7258EAEC134594EB009286F1 /* rastertopwg.c */,
-                       );
-                       name = filters;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               27A034841A8BDC4A00650675 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 27A034831A8BDC4A00650675 /* PBXContainerItemProxy */;
                };
-               727EF02E192E3461001EF690 /* cgi-bin */ = {
-                       isa = PBXGroup;
-                       children = (
-                               727EF02F192E3498001EF690 /* admin.c */,
-                               727EF030192E3498001EF690 /* cgi-private.h */,
-                               727EF031192E3498001EF690 /* cgi.h */,
-                               727EF032192E3498001EF690 /* classes.c */,
-                               727EF033192E3498001EF690 /* help-index.c */,
-                               727EF034192E3498001EF690 /* help-index.h */,
-                               727EF035192E3498001EF690 /* help.c */,
-                               727EF036192E3498001EF690 /* html.c */,
-                               727EF037192E3498001EF690 /* ipp-var.c */,
-                               727EF038192E3498001EF690 /* jobs.c */,
-                               727EF039192E3498001EF690 /* makedocset.c */,
-                               727EF03A192E3498001EF690 /* printers.c */,
-                               727EF03B192E3498001EF690 /* search.c */,
-                               727EF03C192E3498001EF690 /* template.c */,
-                               727EF03D192E3498001EF690 /* testcgi.c */,
-                               727EF03E192E3498001EF690 /* testhi.c */,
-                               727EF03F192E3498001EF690 /* testtemplate.c */,
-                               727EF040192E3498001EF690 /* var.c */,
-                       );
-                       name = "cgi-bin";
-                       sourceTree = "<group>";
+               27A034871A8BDC6900650675 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 27A0347A1A8BDB1200650675 /* lpadmin */;
+                       targetProxy = 27A034861A8BDC6900650675 /* PBXContainerItemProxy */;
+               };
+               720DD6CF1358FD790064AA82 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 720DD6CE1358FD790064AA82 /* PBXContainerItemProxy */;
+               };
+               720DD6D11358FDBE0064AA82 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 720DD6C11358FD5F0064AA82 /* snmp */;
+                       targetProxy = 720DD6D01358FDBE0064AA82 /* PBXContainerItemProxy */;
+               };
+               72220F6513330A6500FCA411 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 72220F6413330A6500FCA411 /* PBXContainerItemProxy */;
+               };
+               72220FBC13330C0500FCA411 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 72220FBB13330C0500FCA411 /* PBXContainerItemProxy */;
                };
-               72BF96351333042100B1EAD7 = {
-                       isa = PBXGroup;
-                       children = (
-                               72E65BA218DC796500097E89 /* Autoconf Files */,
-                               72E65BB818DC79F800097E89 /* Documentation */,
-                               72220F45133305D000FCA411 /* Public Headers */,
-                               72220F461333060C00FCA411 /* Private Headers */,
-                               72220EB41333050100FCA411 /* libcups */,
-                               72F75A681336FA42004BB496 /* libcupsimage */,
-                               72220FB013330B3400FCA411 /* libcupsmime */,
-                               274FF5F41333310400317ECB /* libcupsppdc */,
-                               724378F71333E3CE009631B9 /* backends */,
-                               727EF02E192E3461001EF690 /* cgi-bin */,
-                               274FF67313333B0A00317ECB /* commands */,
-                               72220F5D13330A5A00FCA411 /* cupsd */,
-                               274FF5D513332C2C00317ECB /* daemon */,
-                               7258EADC134594A8009286F1 /* filters */,
-                               276683CB1337B1CC000D33D0 /* ppdc tools */,
-                               273BF6B81333B4A90022CAAB /* tests */,
-                               72220FB113330B4A00FCA411 /* Frameworks */,
-                               72220EAF1333047D00FCA411 /* Products */,
-                       );
-                       indentWidth = 2;
-                       sourceTree = "<group>";
-                       tabWidth = 8;
-                       wrapsLines = 1;
+               72220FBE13330C0B00FCA411 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220FAB13330B2200FCA411 /* libcupsmime */;
+                       targetProxy = 72220FBD13330C0B00FCA411 /* PBXContainerItemProxy */;
                };
-               72E65BA218DC796500097E89 /* Autoconf Files */ = {
-                       isa = PBXGroup;
-                       children = (
-                               72E65BD918DC850A00097E89 /* Makefile */,
-                               72E65BB718DC79CC00097E89 /* Makedefs.in */,
-                               72E65BA318DC797E00097E89 /* configure.ac */,
-                               7226369D18AE73BB004ED309 /* config.h.in */,
-                               72E65BB618DC79CC00097E89 /* cups-config.in */,
-                               72E65BA418DC799B00097E89 /* cups-common.m4 */,
-                               72E65BA518DC799B00097E89 /* cups-compiler.m4 */,
-                               72E65BA618DC799B00097E89 /* cups-defaults.m4 */,
-                               72E65BA718DC799B00097E89 /* cups-directories.m4 */,
-                               72E65BA818DC799B00097E89 /* cups-dnssd.m4 */,
-                               72E65BA918DC799B00097E89 /* cups-gssapi.m4 */,
-                               72E65BAA18DC799B00097E89 /* cups-largefile.m4 */,
-                               72E65BAB18DC799B00097E89 /* cups-startup.m4 */,
-                               72E65BAC18DC799B00097E89 /* cups-libtool.m4 */,
-                               72E65BAD18DC799B00097E89 /* cups-manpages.m4 */,
-                               72E65BAE18DC799B00097E89 /* cups-network.m4 */,
-                               72E65BAF18DC799B00097E89 /* cups-opsys.m4 */,
-                               72E65BB018DC799B00097E89 /* cups-pam.m4 */,
-                               72E65BB118DC799B00097E89 /* cups-poll.m4 */,
-                               72E65BB218DC799B00097E89 /* cups-scripting.m4 */,
-                               72E65BB318DC799B00097E89 /* cups-sharedlibs.m4 */,
-                               72E65BB418DC799B00097E89 /* cups-ssl.m4 */,
-                               72E65BB518DC799B00097E89 /* cups-threads.m4 */,
-                       );
-                       name = "Autoconf Files";
-                       sourceTree = "<group>";
+               724379071333E49B009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 724379061333E49B009631B9 /* PBXContainerItemProxy */;
                };
-               72E65BB818DC79F800097E89 /* Documentation */ = {
-                       isa = PBXGroup;
-                       children = (
-                               72E65BBB18DC7A6B00097E89 /* api-array.header */,
-                               72E65BBC18DC7A6B00097E89 /* api-array.shtml */,
-                               72E65BBD18DC7A6B00097E89 /* api-cups.header */,
-                               72E65BBE18DC7A6B00097E89 /* api-cups.shtml */,
-                               72E65BBF18DC7A6B00097E89 /* api-filedir.header */,
-                               72E65BC018DC7A6B00097E89 /* api-filedir.shtml */,
-                               72E65BC118DC7A6B00097E89 /* api-filter.header */,
-                               72E65BC218DC7A6B00097E89 /* api-filter.shtml */,
-                               72E65BC318DC7A6B00097E89 /* api-httpipp.header */,
-                               72E65BC418DC7A6B00097E89 /* api-httpipp.shtml */,
-                               72E65BDA18DC852700097E89 /* api-mime.header */,
-                               72E65BDB18DC852700097E89 /* api-mime.shtml */,
-                               72E65BC518DC7A6B00097E89 /* api-overview.header */,
-                               72E65BC618DC7A6B00097E89 /* api-overview.shtml */,
-                               72E65BC718DC7A6B00097E89 /* api-ppd.header */,
-                               72E65BC818DC7A6B00097E89 /* api-ppd.shtml */,
-                               72E65BC918DC7A7E00097E89 /* api-ppdc.header */,
-                               72E65BCA18DC7A7E00097E89 /* api-ppdc.shtml */,
-                               72E65BCB18DC7A9800097E89 /* api-raster.header */,
-                               72E65BCC18DC7A9800097E89 /* api-raster.shtml */,
-                               72E65BDD18DCA35700097E89 /* CHANGES-1.7.txt */,
-                               729D4B561A2CB48700692B21 /* CHANGES-2.0.txt */,
-                               729D4B571A2CB48700692B21 /* CHANGES-IPPTOOL.txt */,
-                               72E65BDE18DCA35700097E89 /* CHANGES.txt */,
-                               72E65BDF18DCA35700097E89 /* CREDITS.txt */,
-                               72E65BB918DC7A3600097E89 /* doc */,
-                               72E65BE018DCA35700097E89 /* INSTALL.txt */,
-                               72E65BE118DCA35700097E89 /* IPPTOOL.txt */,
-                               72E65BE218DCA35700097E89 /* LICENSE.txt */,
-                               72E65BBA18DC7A3600097E89 /* man */,
-                               72E65BCD18DC7A9800097E89 /* postscript-driver.header */,
-                               72E65BCE18DC7A9800097E89 /* postscript-driver.shtml */,
-                               72E65BCF18DC7A9800097E89 /* ppd-compiler.header */,
-                               72E65BD018DC7A9800097E89 /* ppd-compiler.shtml */,
-                               72E65BD118DC7A9800097E89 /* raster-driver.header */,
-                               72E65BD218DC7A9800097E89 /* raster-driver.shtml */,
-                               72E65BE318DCA35700097E89 /* README.txt */,
-                               72E65BD318DC7A9800097E89 /* spec-ppd.header */,
-                               72E65BD418DC7A9800097E89 /* spec-ppd.shtml */,
-                       );
-                       name = Documentation;
-                       sourceTree = "<group>";
+               724379111333E4EA009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724378FC1333E43E009631B9 /* ipp */;
+                       targetProxy = 724379101333E4EA009631B9 /* PBXContainerItemProxy */;
                };
-               72F75A681336FA42004BB496 /* libcupsimage */ = {
-                       isa = PBXGroup;
-                       children = (
-                               72F75A691336FA8A004BB496 /* error.c */,
-                               72F75A6A1336FA8A004BB496 /* interpret.c */,
-                               72F75A6B1336FA8A004BB496 /* raster.c */,
-                       );
-                       name = libcupsimage;
-                       sourceTree = "<group>";
-                       wrapsLines = 1;
+               724379261333E932009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 724379251333E932009631B9 /* PBXContainerItemProxy */;
                };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
-               274FF5EC133330C800317ECB /* Headers */ = {
-                       isa = PBXHeadersBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF61E1333315100317ECB /* ppdc.h in Headers */,
-                               274FF6181333315100317ECB /* ppdc-private.h in Headers */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               7243792B1333E962009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724379171333E532009631B9 /* lpd */;
+                       targetProxy = 7243792A1333E962009631B9 /* PBXContainerItemProxy */;
                };
-               274FF6C11333B1C400317ECB /* Headers */ = {
-                       isa = PBXHeadersBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF6C21333B1C400317ECB /* adminutil.h in Headers */,
-                               274FF6C31333B1C400317ECB /* array.h in Headers */,
-                               274FF6C41333B1C400317ECB /* backend.h in Headers */,
-                               274FF6D01333B1C400317ECB /* cups-private.h in Headers */,
-                               274FF6D11333B1C400317ECB /* debug-private.h in Headers */,
-                               274FF6D21333B1C400317ECB /* file-private.h in Headers */,
-                               274FF6D31333B1C400317ECB /* http-private.h in Headers */,
-                               274FF6D41333B1C400317ECB /* ipp-private.h in Headers */,
-                               274FF6D51333B1C400317ECB /* language-private.h in Headers */,
-                               274FF6D61333B1C400317ECB /* md5-private.h in Headers */,
-                               274FF6D71333B1C400317ECB /* ppd-private.h in Headers */,
-                               274FF6D81333B1C400317ECB /* pwg-private.h in Headers */,
-                               274FF6D91333B1C400317ECB /* snmp-private.h in Headers */,
-                               274FF6DA1333B1C400317ECB /* string-private.h in Headers */,
-                               274FF6DB1333B1C400317ECB /* thread-private.h in Headers */,
-                               274FF6DC1333B1C400317ECB /* config.h in Headers */,
-                               274FF6C51333B1C400317ECB /* cups.h in Headers */,
-                               274FF6C61333B1C400317ECB /* dir.h in Headers */,
-                               274FF6C71333B1C400317ECB /* file.h in Headers */,
-                               274FF6C81333B1C400317ECB /* http.h in Headers */,
-                               274FF6C91333B1C400317ECB /* ipp.h in Headers */,
-                               274FF6CA1333B1C400317ECB /* language.h in Headers */,
-                               274FF6CB1333B1C400317ECB /* ppd.h in Headers */,
-                               274FF6CD1333B1C400317ECB /* sidechannel.h in Headers */,
-                               274FF6CE1333B1C400317ECB /* transcode.h in Headers */,
-                               274FF6CF1333B1C400317ECB /* versioning.h in Headers */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               7243793A1333FB95009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 724379391333FB95009631B9 /* PBXContainerItemProxy */;
                };
-               72220EAC1333047D00FCA411 /* Headers */ = {
-                       isa = PBXHeadersBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72220EC41333056300FCA411 /* adminutil.h in Headers */,
-                               72220EC61333056300FCA411 /* array.h in Headers */,
-                               72220ECB1333056300FCA411 /* backend.h in Headers */,
-                               72220ECE1333056300FCA411 /* cups.h in Headers */,
-                               72220F0E133305BB00FCA411 /* dir.h in Headers */,
-                               72220F13133305BB00FCA411 /* file.h in Headers */,
-                               72220F1D133305BB00FCA411 /* http.h in Headers */,
-                               72220F21133305BB00FCA411 /* ipp.h in Headers */,
-                               72220F25133305BB00FCA411 /* language.h in Headers */,
-                               72220F31133305BB00FCA411 /* ppd.h in Headers */,
-                               72220F37133305BB00FCA411 /* sidechannel.h in Headers */,
-                               72220F41133305BB00FCA411 /* transcode.h in Headers */,
-                               72220F44133305BB00FCA411 /* versioning.h in Headers */,
-                               72220ECD1333056300FCA411 /* cups-private.h in Headers */,
-                               72220ED01333056300FCA411 /* debug-private.h in Headers */,
-                               72220F11133305BB00FCA411 /* file-private.h in Headers */,
-                               72220F1A133305BB00FCA411 /* http-private.h in Headers */,
-                               72220F1E133305BB00FCA411 /* ipp-private.h in Headers */,
-                               72220F23133305BB00FCA411 /* language-private.h in Headers */,
-                               72220F28133305BB00FCA411 /* md5-private.h in Headers */,
-                               72220F2F133305BB00FCA411 /* ppd-private.h in Headers */,
-                               72220F33133305BB00FCA411 /* pwg-private.h in Headers */,
-                               72220F38133305BB00FCA411 /* snmp-private.h in Headers */,
-                               72220F3B133305BB00FCA411 /* string-private.h in Headers */,
-                               72220F3E133305BB00FCA411 /* thread-private.h in Headers */,
-                               72220F481333063D00FCA411 /* config.h in Headers */,
-                               7234F4201378A16F00D3E9C9 /* array-private.h in Headers */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               7243793F1333FD23009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 7243792F1333FB85009631B9 /* socket */;
+                       targetProxy = 7243793E1333FD23009631B9 /* PBXContainerItemProxy */;
                };
-               72220FAA13330B2200FCA411 /* Headers */ = {
-                       isa = PBXHeadersBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72220FB813330BCE00FCA411 /* mime.h in Headers */,
-                               7271883D1374AB14001A2036 /* mime-private.h in Headers */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               724379531333FECE009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 724379461333FEA9009631B9 /* dnssd */;
+                       targetProxy = 724379521333FECE009631B9 /* PBXContainerItemProxy */;
                };
-               72F75A5F1336F9A3004BB496 /* Headers */ = {
-                       isa = PBXHeadersBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72F75A6F1336FAB6004BB496 /* raster.h in Headers */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               724379551333FEFE009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 724379541333FEFE009631B9 /* PBXContainerItemProxy */;
                };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXNativeTarget section */
-               270CCDA6135E3C9E00007BE2 /* testmime */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 270CCDAF135E3C9E00007BE2 /* Build configuration list for PBXNativeTarget "testmime" */;
-                       buildPhases = (
-                               270CCDA3135E3C9E00007BE2 /* Sources */,
-                               270CCDA4135E3C9E00007BE2 /* Frameworks */,
-                               270CCDA5135E3C9E00007BE2 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               270CCDB8135E3CFD00007BE2 /* PBXTargetDependency */,
-                               270CCDB6135E3CF700007BE2 /* PBXTargetDependency */,
-                       );
-                       name = testmime;
-                       productName = testmime;
-                       productReference = 270CCDA7135E3C9E00007BE2 /* testmime */;
-                       productType = "com.apple.product-type.tool";
+               724379651333FF2E009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 724379641333FF2E009631B9 /* PBXContainerItemProxy */;
+               };
+               724379C31333FF7D009631B9 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 7243795A1333FF1D009631B9 /* usb */;
+                       targetProxy = 724379C21333FF7D009631B9 /* PBXContainerItemProxy */;
                };
-               273BF6BC1333B5000022CAAB /* testcups */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 273BF6C31333B5000022CAAB /* Build configuration list for PBXNativeTarget "testcups" */;
-                       buildPhases = (
-                               273BF6B91333B5000022CAAB /* Sources */,
-                               273BF6BA1333B5000022CAAB /* Frameworks */,
-                               273BF6BB1333B5000022CAAB /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               273BF6C91333B5410022CAAB /* PBXTargetDependency */,
-                       );
-                       name = testcups;
-                       productName = testcups;
-                       productReference = 273BF6BD1333B5000022CAAB /* testcups */;
-                       productType = "com.apple.product-type.tool";
+               724FA5251CC0370C0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5261CC0370C0092477B /* PBXContainerItemProxy */;
                };
-               274EE25B1A03EDCA003213D1 /* ippinfra */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274EE2681A03EDCA003213D1 /* Build configuration list for PBXNativeTarget "ippinfra" */;
-                       buildPhases = (
-                               274EE25E1A03EDCA003213D1 /* Sources */,
-                               274EE2601A03EDCA003213D1 /* Frameworks */,
-                               274EE2671A03EDCA003213D1 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               274EE25C1A03EDCA003213D1 /* PBXTargetDependency */,
-                       );
-                       name = ippinfra;
-                       productName = ippserver;
-                       productReference = 274EE26B1A03EDCA003213D1 /* ippserver copy */;
-                       productType = "com.apple.product-type.tool";
+               724FA5381CC037370092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5391CC037370092477B /* PBXContainerItemProxy */;
                };
-               274EE26C1A03EDCB003213D1 /* ippproxy */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274EE2791A03EDCB003213D1 /* Build configuration list for PBXNativeTarget "ippproxy" */;
-                       buildPhases = (
-                               274EE26F1A03EDCB003213D1 /* Sources */,
-                               274EE2711A03EDCB003213D1 /* Frameworks */,
-                               274EE2781A03EDCB003213D1 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               274EE26D1A03EDCB003213D1 /* PBXTargetDependency */,
-                       );
-                       name = ippproxy;
-                       productName = ippserver;
-                       productReference = 274EE27C1A03EDCB003213D1 /* ippserver copy copy */;
-                       productType = "com.apple.product-type.tool";
+               724FA54B1CC037500092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA54C1CC037500092477B /* PBXContainerItemProxy */;
                };
-               274FF5CB13332B1F00317ECB /* cups-driverd */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274FF5D213332B1F00317ECB /* Build configuration list for PBXNativeTarget "cups-driverd" */;
-                       buildPhases = (
-                               274FF5C813332B1F00317ECB /* Sources */,
-                               274FF5C913332B1F00317ECB /* Frameworks */,
-                               274FF5CA13332B1F00317ECB /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               274FF5DC13332CF900317ECB /* PBXTargetDependency */,
-                               274FF6201333316200317ECB /* PBXTargetDependency */,
-                       );
-                       name = "cups-driverd";
-                       productName = "cups-driverd";
-                       productReference = 274FF5CC13332B1F00317ECB /* cups-driverd */;
-                       productType = "com.apple.product-type.tool";
+               724FA55E1CC037670092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA55F1CC037670092477B /* PBXContainerItemProxy */;
                };
-               274FF5ED133330C800317ECB /* libcupsppdc */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274FF5EF133330C800317ECB /* Build configuration list for PBXNativeTarget "libcupsppdc" */;
-                       buildPhases = (
-                               274FF5EA133330C800317ECB /* Sources */,
-                               274FF5EB133330C800317ECB /* Frameworks */,
-                               274FF5EC133330C800317ECB /* Headers */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               274FF5F3133330FD00317ECB /* PBXTargetDependency */,
-                       );
-                       name = libcupsppdc;
-                       productName = libcupsppdc;
-                       productReference = 274FF5EE133330C800317ECB /* libcupsppdc.dylib */;
-                       productType = "com.apple.product-type.library.dynamic";
+               724FA5711CC037810092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5721CC037810092477B /* PBXContainerItemProxy */;
                };
-               274FF6281333333600317ECB /* cups-deviced */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274FF62F1333333600317ECB /* Build configuration list for PBXNativeTarget "cups-deviced" */;
-                       buildPhases = (
-                               274FF6251333333600317ECB /* Sources */,
-                               274FF6261333333600317ECB /* Frameworks */,
-                               274FF6271333333600317ECB /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               274FF6341333335200317ECB /* PBXTargetDependency */,
-                       );
-                       name = "cups-deviced";
-                       productName = "cups-deviced";
-                       productReference = 274FF6291333333600317ECB /* cups-deviced */;
-                       productType = "com.apple.product-type.tool";
+               724FA5841CC037980092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5851CC037980092477B /* PBXContainerItemProxy */;
                };
-               274FF63D1333358B00317ECB /* cups-exec */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274FF6441333358C00317ECB /* Build configuration list for PBXNativeTarget "cups-exec" */;
-                       buildPhases = (
-                               274FF63A1333358B00317ECB /* Sources */,
-                               274FF63B1333358B00317ECB /* Frameworks */,
-                               274FF63C1333358B00317ECB /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = "cups-exec";
-                       productName = "cups-exec";
-                       productReference = 274FF63E1333358B00317ECB /* cups-exec */;
-                       productType = "com.apple.product-type.tool";
+               724FA5971CC037AA0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5981CC037AA0092477B /* PBXContainerItemProxy */;
                };
-               274FF64E133339C400317ECB /* cups-lpd */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274FF655133339C400317ECB /* Build configuration list for PBXNativeTarget "cups-lpd" */;
-                       buildPhases = (
-                               274FF64B133339C400317ECB /* Sources */,
-                               274FF64C133339C400317ECB /* Frameworks */,
-                               274FF64D133339C400317ECB /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               274FF65A133339D900317ECB /* PBXTargetDependency */,
-                       );
-                       name = "cups-lpd";
-                       productName = "cups-lpd";
-                       productReference = 274FF64F133339C400317ECB /* cups-lpd */;
-                       productType = "com.apple.product-type.tool";
+               724FA5AA1CC037C60092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5AB1CC037C60092477B /* PBXContainerItemProxy */;
                };
-               274FF67713333B2F00317ECB /* cupsfilter */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274FF67E13333B2F00317ECB /* Build configuration list for PBXNativeTarget "cupsfilter" */;
-                       buildPhases = (
-                               274FF67413333B2F00317ECB /* Sources */,
-                               274FF67513333B2F00317ECB /* Frameworks */,
-                               274FF67613333B2F00317ECB /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               274FF68213333B3C00317ECB /* PBXTargetDependency */,
-                               274FF68413333B3C00317ECB /* PBXTargetDependency */,
-                       );
-                       name = cupsfilter;
-                       productName = cupsfilter;
-                       productReference = 274FF67813333B2F00317ECB /* cupsfilter */;
-                       productType = "com.apple.product-type.tool";
+               724FA5BD1CC037D90092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5BE1CC037D90092477B /* PBXContainerItemProxy */;
                };
-               274FF6891333B1C400317ECB /* libcups_static */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 274FF6DD1333B1C400317ECB /* Build configuration list for PBXNativeTarget "libcups_static" */;
-                       buildPhases = (
-                               274FF68A1333B1C400317ECB /* Sources */,
-                               274FF6B91333B1C400317ECB /* Frameworks */,
-                               274FF6C11333B1C400317ECB /* Headers */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = libcups_static;
-                       productName = libcups;
-                       productReference = 72A4332F155844CF002E172D /* libcups_static.a */;
-                       productType = "com.apple.product-type.library.dynamic";
+               724FA5D01CC037F00092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5D11CC037F00092477B /* PBXContainerItemProxy */;
                };
-               2766835B1337A9B6000D33D0 /* cupsctl */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 276683621337A9B6000D33D0 /* Build configuration list for PBXNativeTarget "cupsctl" */;
-                       buildPhases = (
-                               276683581337A9B6000D33D0 /* Sources */,
-                               276683591337A9B6000D33D0 /* Frameworks */,
-                               2766835A1337A9B6000D33D0 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               276683661337A9D6000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = cupsctl;
-                       productName = cupsctl;
-                       productReference = 2766835C1337A9B6000D33D0 /* cupsctl */;
-                       productType = "com.apple.product-type.tool";
+               724FA5E41CC038040092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5E51CC038040092477B /* PBXContainerItemProxy */;
                };
-               2766836F1337AC79000D33D0 /* ppdc */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 276683761337AC79000D33D0 /* Build configuration list for PBXNativeTarget "ppdc" */;
-                       buildPhases = (
-                               2766836C1337AC79000D33D0 /* Sources */,
-                               2766836D1337AC79000D33D0 /* Frameworks */,
-                               2766836E1337AC79000D33D0 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               276683AE1337ACF9000D33D0 /* PBXTargetDependency */,
-                               276683B01337ACF9000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = ppdc;
-                       productName = ppdc;
-                       productReference = 276683701337AC79000D33D0 /* ppdc */;
-                       productType = "com.apple.product-type.tool";
+               724FA5F81CC038190092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA5F91CC038190092477B /* PBXContainerItemProxy */;
                };
-               2766837C1337AC8C000D33D0 /* ppdhtml */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 276683831337AC8C000D33D0 /* Build configuration list for PBXNativeTarget "ppdhtml" */;
-                       buildPhases = (
-                               276683791337AC8C000D33D0 /* Sources */,
-                               2766837A1337AC8C000D33D0 /* Frameworks */,
-                               2766837B1337AC8C000D33D0 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               276683B41337AD18000D33D0 /* PBXTargetDependency */,
-                               276683B61337AD18000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = ppdhtml;
-                       productName = ppdhtml;
-                       productReference = 2766837D1337AC8C000D33D0 /* ppdhtml */;
-                       productType = "com.apple.product-type.tool";
+               724FA60C1CC0382B0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA60D1CC0382B0092477B /* PBXContainerItemProxy */;
                };
-               276683891337AC97000D33D0 /* ppdi */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 276683901337AC97000D33D0 /* Build configuration list for PBXNativeTarget "ppdi" */;
-                       buildPhases = (
-                               276683861337AC97000D33D0 /* Sources */,
-                               276683871337AC97000D33D0 /* Frameworks */,
-                               276683881337AC97000D33D0 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               276683BC1337AE49000D33D0 /* PBXTargetDependency */,
-                               276683BE1337AE49000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = ppdi;
-                       productName = ppdi;
-                       productReference = 2766838A1337AC97000D33D0 /* ppdi */;
-                       productType = "com.apple.product-type.tool";
+               724FA6201CC038410092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6211CC038410092477B /* PBXContainerItemProxy */;
                };
-               276683961337ACA2000D33D0 /* ppdmerge */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 2766839D1337ACA2000D33D0 /* Build configuration list for PBXNativeTarget "ppdmerge" */;
-                       buildPhases = (
-                               276683931337ACA2000D33D0 /* Sources */,
-                               276683941337ACA2000D33D0 /* Frameworks */,
-                               276683951337ACA2000D33D0 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               276683C01337B1AD000D33D0 /* PBXTargetDependency */,
-                               276683C21337B1AD000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = ppdmerge;
-                       productName = ppdmerge;
-                       productReference = 276683971337ACA2000D33D0 /* ppdmerge */;
-                       productType = "com.apple.product-type.tool";
+               724FA6341CC038560092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6351CC038560092477B /* PBXContainerItemProxy */;
                };
-               276683A31337ACAB000D33D0 /* ppdpo */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 276683AA1337ACAB000D33D0 /* Build configuration list for PBXNativeTarget "ppdpo" */;
-                       buildPhases = (
-                               276683A01337ACAB000D33D0 /* Sources */,
-                               276683A11337ACAB000D33D0 /* Frameworks */,
-                               276683A21337ACAB000D33D0 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               276683C61337B1BC000D33D0 /* PBXTargetDependency */,
-                               276683C81337B1BC000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = ppdpo;
-                       productName = ppdpo;
-                       productReference = 276683A41337ACAB000D33D0 /* ppdpo */;
-                       productType = "com.apple.product-type.tool";
+               724FA6481CC0386E0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6491CC0386E0092477B /* PBXContainerItemProxy */;
                };
-               276683EF1337F78E000D33D0 /* ipptool */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 276683F61337F78F000D33D0 /* Build configuration list for PBXNativeTarget "ipptool" */;
-                       buildPhases = (
-                               276683EC1337F78E000D33D0 /* Sources */,
-                               276683ED1337F78E000D33D0 /* Frameworks */,
-                               276683EE1337F78E000D33D0 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               276683FC1337F7B3000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = ipptool;
-                       productName = ipptool;
-                       productReference = 276683F01337F78E000D33D0 /* ipptool */;
-                       productType = "com.apple.product-type.tool";
+               724FA65F1CC038A50092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6601CC038A50092477B /* PBXContainerItemProxy */;
                };
-               276684031337FA1D000D33D0 /* cupsaddsmb */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 2766840A1337FA1E000D33D0 /* Build configuration list for PBXNativeTarget "cupsaddsmb" */;
-                       buildPhases = (
-                               276684001337FA1D000D33D0 /* Sources */,
-                               276684011337FA1D000D33D0 /* Frameworks */,
-                               276684021337FA1D000D33D0 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               2766840E1337FA31000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = cupsaddsmb;
-                       productName = cupsaddsmb;
-                       productReference = 276684041337FA1D000D33D0 /* cupsaddsmb */;
-                       productType = "com.apple.product-type.tool";
+               724FA6731CC038BD0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6741CC038BD0092477B /* PBXContainerItemProxy */;
                };
-               2767FC4619266A0D000F61D3 /* testdest */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 2767FC4D19266A0D000F61D3 /* Build configuration list for PBXNativeTarget "testdest" */;
-                       buildPhases = (
-                               2767FC4919266A0D000F61D3 /* Sources */,
-                               2767FC4B19266A0D000F61D3 /* Frameworks */,
-                               2767FC4C19266A0D000F61D3 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               2767FC4719266A0D000F61D3 /* PBXTargetDependency */,
-                       );
-                       name = testdest;
-                       productName = testcups;
-                       productReference = 2767FC5019266A0D000F61D3 /* testdest */;
-                       productType = "com.apple.product-type.tool";
+               724FA6861CC038D90092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6871CC038D90092477B /* PBXContainerItemProxy */;
                };
-               278C58CA136B640300836530 /* testhttp */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 278C58D3136B640300836530 /* Build configuration list for PBXNativeTarget "testhttp" */;
-                       buildPhases = (
-                               278C58C7136B640300836530 /* Sources */,
-                               278C58C8136B640300836530 /* Frameworks */,
-                               278C58C9136B640300836530 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               278C58D8136B642F00836530 /* PBXTargetDependency */,
-                       );
-                       name = testhttp;
-                       productName = testhttp;
-                       productReference = 278C58CB136B640300836530 /* testhttp */;
-                       productType = "com.apple.product-type.tool";
+               724FA69A1CC039200092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA69B1CC039200092477B /* PBXContainerItemProxy */;
                };
-               27A0347A1A8BDB1200650675 /* lpadmin */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 27A034811A8BDB1300650675 /* Build configuration list for PBXNativeTarget "lpadmin" */;
-                       buildPhases = (
-                               27A034771A8BDB1200650675 /* Sources */,
-                               27A034781A8BDB1200650675 /* Frameworks */,
-                               27A034791A8BDB1200650675 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               27A034841A8BDC4A00650675 /* PBXTargetDependency */,
-                       );
-                       name = lpadmin;
-                       productName = lpadmin;
-                       productReference = 27A0347B1A8BDB1300650675 /* lpadmin */;
-                       productType = "com.apple.product-type.tool";
+               724FA6AD1CC0393E0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6AE1CC0393E0092477B /* PBXContainerItemProxy */;
                };
-               720DD6C11358FD5F0064AA82 /* snmp */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 720DD6CB1358FD600064AA82 /* Build configuration list for PBXNativeTarget "snmp" */;
-                       buildPhases = (
-                               720DD6BE1358FD5F0064AA82 /* Sources */,
-                               720DD6BF1358FD5F0064AA82 /* Frameworks */,
-                               720DD6C01358FD5F0064AA82 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               720DD6CF1358FD790064AA82 /* PBXTargetDependency */,
-                       );
-                       name = snmp;
-                       productName = snmp;
-                       productReference = 720DD6C21358FD5F0064AA82 /* snmp */;
-                       productType = "com.apple.product-type.tool";
+               724FA6C01CC0395A0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6C11CC0395A0092477B /* PBXContainerItemProxy */;
                };
-               72220EAD1333047D00FCA411 /* libcups */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 72220EB21333047D00FCA411 /* Build configuration list for PBXNativeTarget "libcups" */;
-                       buildPhases = (
-                               72220EAA1333047D00FCA411 /* Sources */,
-                               72220EAB1333047D00FCA411 /* Frameworks */,
-                               72220EAC1333047D00FCA411 /* Headers */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = libcups;
-                       productName = libcups;
-                       productReference = 72220EAE1333047D00FCA411 /* libcups.dylib */;
-                       productType = "com.apple.product-type.library.dynamic";
+               724FA6D91CC039DE0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6DA1CC039DE0092477B /* PBXContainerItemProxy */;
                };
-               72220F5A13330A5A00FCA411 /* cupsd */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 72220F6113330A5A00FCA411 /* Build configuration list for PBXNativeTarget "cupsd" */;
-                       buildPhases = (
-                               72220F5713330A5A00FCA411 /* Sources */,
-                               72220F5813330A5A00FCA411 /* Frameworks */,
-                               72220F5913330A5A00FCA411 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               72220FBE13330C0B00FCA411 /* PBXTargetDependency */,
-                               72220F6513330A6500FCA411 /* PBXTargetDependency */,
-                       );
-                       name = cupsd;
-                       productName = cupsd;
-                       productReference = 72220F5B13330A5A00FCA411 /* cupsd */;
-                       productType = "com.apple.product-type.tool";
+               724FA6EE1CC03A210092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 724FA6EF1CC03A210092477B /* PBXContainerItemProxy */;
                };
-               72220FAB13330B2200FCA411 /* libcupsmime */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 72220FAD13330B2300FCA411 /* Build configuration list for PBXNativeTarget "libcupsmime" */;
-                       buildPhases = (
-                               72220FA813330B2200FCA411 /* Sources */,
-                               72220FA913330B2200FCA411 /* Frameworks */,
-                               72220FAA13330B2200FCA411 /* Headers */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               72220FBC13330C0500FCA411 /* PBXTargetDependency */,
-                       );
-                       name = libcupsmime;
-                       productName = libcupsmime;
-                       productReference = 72220FAC13330B2200FCA411 /* libcupsmime.dylib */;
-                       productType = "com.apple.product-type.library.dynamic";
+               724FA7421CC03ACC0092477B /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 724FA7431CC03ACC0092477B /* PBXContainerItemProxy */;
                };
-               724378FC1333E43E009631B9 /* ipp */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 724379031333E43E009631B9 /* Build configuration list for PBXNativeTarget "ipp" */;
-                       buildPhases = (
-                               724378F91333E43E009631B9 /* Sources */,
-                               724378FA1333E43E009631B9 /* Frameworks */,
-                               724378FB1333E43E009631B9 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               724379071333E49B009631B9 /* PBXTargetDependency */,
-                       );
-                       name = ipp;
-                       productName = ipp;
-                       productReference = 724378FD1333E43E009631B9 /* ipp */;
-                       productType = "com.apple.product-type.tool";
+               7258EAEF13459ADA009286F1 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 7258EAE1134594C4009286F1 /* rastertopwg */;
+                       targetProxy = 7258EAEE13459ADA009286F1 /* PBXContainerItemProxy */;
                };
-               724379171333E532009631B9 /* lpd */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 7243791E1333E532009631B9 /* Build configuration list for PBXNativeTarget "lpd" */;
-                       buildPhases = (
-                               724379141333E532009631B9 /* Sources */,
-                               724379151333E532009631B9 /* Frameworks */,
-                               724379161333E532009631B9 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               724379261333E932009631B9 /* PBXTargetDependency */,
-                       );
-                       name = lpd;
-                       productName = lpd;
-                       productReference = 724379181333E532009631B9 /* lpd */;
-                       productType = "com.apple.product-type.tool";
+               7258EAF113459B67009286F1 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 7258EAF013459B67009286F1 /* PBXContainerItemProxy */;
+               };
+               7258EAF313459B67009286F1 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
+                       targetProxy = 7258EAF213459B67009286F1 /* PBXContainerItemProxy */;
                };
-               7243792F1333FB85009631B9 /* socket */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 724379361333FB85009631B9 /* Build configuration list for PBXNativeTarget "socket" */;
-                       buildPhases = (
-                               7243792C1333FB85009631B9 /* Sources */,
-                               7243792D1333FB85009631B9 /* Frameworks */,
-                               7243792E1333FB85009631B9 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               7243793A1333FB95009631B9 /* PBXTargetDependency */,
-                       );
-                       name = socket;
-                       productName = socket;
-                       productReference = 724379301333FB85009631B9 /* socket */;
-                       productType = "com.apple.product-type.tool";
+               726AD704135E8AA1002C930D /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 726AD6F6135E88F0002C930D /* ippserver */;
+                       targetProxy = 726AD703135E8AA1002C930D /* PBXContainerItemProxy */;
                };
-               724379461333FEA9009631B9 /* dnssd */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 7243794D1333FEA9009631B9 /* Build configuration list for PBXNativeTarget "dnssd" */;
-                       buildPhases = (
-                               724379431333FEA9009631B9 /* Sources */,
-                               724379441333FEA9009631B9 /* Frameworks */,
-                               724379451333FEA9009631B9 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               724379551333FEFE009631B9 /* PBXTargetDependency */,
-                       );
-                       name = dnssd;
-                       productName = dnssd;
-                       productReference = 724379471333FEA9009631B9 /* dnssd */;
-                       productType = "com.apple.product-type.tool";
+               726AD706135E8AC5002C930D /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 726AD705135E8AC5002C930D /* PBXContainerItemProxy */;
                };
-               7243795A1333FF1D009631B9 /* usb */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 724379611333FF1D009631B9 /* Build configuration list for PBXNativeTarget "usb" */;
-                       buildPhases = (
-                               724379571333FF1D009631B9 /* Sources */,
-                               724379581333FF1D009631B9 /* Frameworks */,
-                               724379591333FF1D009631B9 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               724379651333FF2E009631B9 /* PBXTargetDependency */,
-                       );
-                       name = usb;
-                       productName = usb;
-                       productReference = 7243795B1333FF1D009631B9 /* usb */;
-                       productType = "com.apple.product-type.tool";
+               72BEA8D419AFA89C0085F0F3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 726AD6F6135E88F0002C930D /* ippserver */;
+                       targetProxy = 72BEA8D319AFA89C0085F0F3 /* PBXContainerItemProxy */;
                };
-               7258EAE1134594C4009286F1 /* rastertopwg */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 7258EAE9134594C4009286F1 /* Build configuration list for PBXNativeTarget "rastertopwg" */;
-                       buildPhases = (
-                               7258EADE134594C4009286F1 /* Sources */,
-                               7258EADF134594C4009286F1 /* Frameworks */,
-                               7258EAE0134594C4009286F1 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               7258EAF113459B67009286F1 /* PBXTargetDependency */,
-                               7258EAF313459B67009286F1 /* PBXTargetDependency */,
-                       );
-                       name = rastertopwg;
-                       productName = rastertopwg;
-                       productReference = 7258EAE2134594C4009286F1 /* rastertopwg */;
-                       productType = "com.apple.product-type.tool";
+               72BEA8D619AFA8A00085F0F3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72CF95E618A19134000FCAE4 /* ippfind */;
+                       targetProxy = 72BEA8D519AFA8A00085F0F3 /* PBXContainerItemProxy */;
                };
-               726AD6F6135E88F0002C930D /* ippserver */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 726AD6FE135E88F1002C930D /* Build configuration list for PBXNativeTarget "ippserver" */;
-                       buildPhases = (
-                               726AD6F3135E88F0002C930D /* Sources */,
-                               726AD6F4135E88F0002C930D /* Frameworks */,
-                               726AD6F5135E88F0002C930D /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               726AD706135E8AC5002C930D /* PBXTargetDependency */,
-                       );
-                       name = ippserver;
-                       productName = ippserver;
-                       productReference = 726AD6F7135E88F0002C930D /* ippserver */;
-                       productType = "com.apple.product-type.tool";
+               72BEA8D819AFA8BB0085F0F3 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups_static */;
+                       targetProxy = 72BEA8D719AFA8BB0085F0F3 /* PBXContainerItemProxy */;
                };
-               72CF95E618A19134000FCAE4 /* ippfind */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 72CF95EE18A19134000FCAE4 /* Build configuration list for PBXNativeTarget "ippfind" */;
-                       buildPhases = (
-                               72CF95E918A19134000FCAE4 /* Sources */,
-                               72CF95EB18A19134000FCAE4 /* Frameworks */,
-                               72CF95ED18A19134000FCAE4 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               72CF95E718A19134000FCAE4 /* PBXTargetDependency */,
-                       );
-                       name = ippfind;
-                       productName = ipptool;
-                       productReference = 72CF95F118A19134000FCAE4 /* ipptool copy */;
-                       productType = "com.apple.product-type.tool";
+               72CF95E718A19134000FCAE4 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 72CF95E818A19134000FCAE4 /* PBXContainerItemProxy */;
                };
-               72F75A511336F950004BB496 /* cupstestppd */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 72F75A581336F951004BB496 /* Build configuration list for PBXNativeTarget "cupstestppd" */;
-                       buildPhases = (
-                               72F75A4E1336F950004BB496 /* Sources */,
-                               72F75A4F1336F950004BB496 /* Frameworks */,
-                               72F75A501336F950004BB496 /* CopyFiles */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               276683E41337B2BA000D33D0 /* PBXTargetDependency */,
-                               276683E11337B299000D33D0 /* PBXTargetDependency */,
-                       );
-                       name = cupstestppd;
-                       productName = cupstestppd;
-                       productReference = 72F75A521336F950004BB496 /* cupstestppd */;
-                       productType = "com.apple.product-type.tool";
+               72F75A661336FA30004BB496 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72220EAD1333047D00FCA411 /* libcups */;
+                       targetProxy = 72F75A651336FA30004BB496 /* PBXContainerItemProxy */;
                };
-               72F75A601336F9A3004BB496 /* libcupsimage */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 72F75A621336F9A3004BB496 /* Build configuration list for PBXNativeTarget "libcupsimage" */;
-                       buildPhases = (
-                               72F75A5D1336F9A3004BB496 /* Sources */,
-                               72F75A5E1336F9A3004BB496 /* Frameworks */,
-                               72F75A5F1336F9A3004BB496 /* Headers */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                               72F75A661336FA30004BB496 /* PBXTargetDependency */,
-                       );
-                       name = libcupsimage;
-                       productName = libcupsimage;
-                       productReference = 72F75A611336F9A3004BB496 /* libcupsimage.dylib */;
-                       productType = "com.apple.product-type.library.dynamic";
+               72F75A711336FACD004BB496 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
+                       targetProxy = 72F75A701336FACD004BB496 /* PBXContainerItemProxy */;
                };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-               72BF96371333042100B1EAD7 /* Project object */ = {
-                       isa = PBXProject;
-                       attributes = {
-                               LastUpgradeCheck = 0600;
-                               ORGANIZATIONNAME = "Apple Inc.";
-                               TargetAttributes = {
-                                       27A0347A1A8BDB1200650675 = {
-                                               CreatedOnToolsVersion = 6.1.1;
-                                       };
-                               };
-                       };
-                       buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for PBXProject "CUPS" */;
-                       compatibilityVersion = "Xcode 3.2";
-                       developmentRegion = English;
-                       hasScannedForEncodings = 0;
-                       knownRegions = (
-                               en,
-                       );
-                       mainGroup = 72BF96351333042100B1EAD7;
-                       productRefGroup = 72220EAF1333047D00FCA411 /* Products */;
-                       projectDirPath = "";
-                       projectRoot = "";
-                       targets = (
-                               274FF5DE13332D3000317ECB /* All */,
-                               273BF6D91333B6260022CAAB /* Tests */,
-                               72220EAD1333047D00FCA411 /* libcups */,
-                               274FF6891333B1C400317ECB /* libcups_static */,
-                               72F75A601336F9A3004BB496 /* libcupsimage */,
-                               72220FAB13330B2200FCA411 /* libcupsmime */,
-                               274FF5ED133330C800317ECB /* libcupsppdc */,
-                               276684031337FA1D000D33D0 /* cupsaddsmb */,
-                               2766835B1337A9B6000D33D0 /* cupsctl */,
-                               72220F5A13330A5A00FCA411 /* cupsd */,
-                               274FF5CB13332B1F00317ECB /* cups-driverd */,
-                               274FF6281333333600317ECB /* cups-deviced */,
-                               274FF63D1333358B00317ECB /* cups-exec */,
-                               274FF64E133339C400317ECB /* cups-lpd */,
-                               274FF67713333B2F00317ECB /* cupsfilter */,
-                               72F75A511336F950004BB496 /* cupstestppd */,
-                               724379461333FEA9009631B9 /* dnssd */,
-                               724378FC1333E43E009631B9 /* ipp */,
-                               72CF95E618A19134000FCAE4 /* ippfind */,
-                               274EE25B1A03EDCA003213D1 /* ippinfra */,
-                               274EE26C1A03EDCB003213D1 /* ippproxy */,
-                               726AD6F6135E88F0002C930D /* ippserver */,
-                               276683EF1337F78E000D33D0 /* ipptool */,
-                               27A0347A1A8BDB1200650675 /* lpadmin */,
-                               724379171333E532009631B9 /* lpd */,
-                               2766836F1337AC79000D33D0 /* ppdc */,
-                               2766837C1337AC8C000D33D0 /* ppdhtml */,
-                               276683891337AC97000D33D0 /* ppdi */,
-                               276683961337ACA2000D33D0 /* ppdmerge */,
-                               276683A31337ACAB000D33D0 /* ppdpo */,
-                               7258EAE1134594C4009286F1 /* rastertopwg */,
-                               720DD6C11358FD5F0064AA82 /* snmp */,
-                               7243792F1333FB85009631B9 /* socket */,
-                               273BF6BC1333B5000022CAAB /* testcups */,
-                               2767FC4619266A0D000F61D3 /* testdest */,
-                               278C58CA136B640300836530 /* testhttp */,
-                               270CCDA6135E3C9E00007BE2 /* testmime */,
-                               7243795A1333FF1D009631B9 /* usb */,
-                       );
+               72F75A731336FACD004BB496 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 72F75A511336F950004BB496 /* cupstestppd */;
+                       targetProxy = 72F75A721336FACD004BB496 /* PBXContainerItemProxy */;
                };
-/* End PBXProject section */
+/* End PBXTargetDependency section */
 
-/* Begin PBXSourcesBuildPhase section */
-               270CCDA3135E3C9E00007BE2 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               270CCDBC135E3D3E00007BE2 /* testmime.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+/* Begin XCBuildConfiguration section */
+               270696581CADF3E200FFE5FB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CODE_SIGN_IDENTITY = "iPhone Developer";
+                               "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               PROVISIONING_PROFILE = "";
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
+                               SDKROOT = iphoneos;
+                               SKIP_INSTALL = YES;
+                               STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static;
+                               SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
+                       };
+                       name = Debug;
                };
-               273BF6B91333B5000022CAAB /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               273BF6C71333B5370022CAAB /* testcups.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               270696591CADF3E200FFE5FB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CODE_SIGN_IDENTITY = "iPhone Developer";
+                               "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               PROVISIONING_PROFILE = "";
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
+                               SDKROOT = iphoneos;
+                               SKIP_INSTALL = YES;
+                               STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static;
+                               SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
+                       };
+                       name = Release;
                };
-               274EE25E1A03EDCA003213D1 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274EE27E1A03EE0B003213D1 /* ippinfra.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               270CCDAD135E3C9E00007BE2 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274EE26F1A03EDCB003213D1 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274EE2801A03EE41003213D1 /* ippproxy.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               270CCDAE135E3C9E00007BE2 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF5C813332B1F00317ECB /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF5D913332CC700317ECB /* cups-driverd.cxx in Sources */,
-                               274FF5DA13332CC700317ECB /* util.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               270D02221D707E0200EA9403 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF5EA133330C800317ECB /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF60A1333315100317ECB /* ppdc-array.cxx in Sources */,
-                               274FF60B1333315100317ECB /* ppdc-attr.cxx in Sources */,
-                               274FF60C1333315100317ECB /* ppdc-catalog.cxx in Sources */,
-                               274FF60D1333315100317ECB /* ppdc-choice.cxx in Sources */,
-                               274FF60E1333315100317ECB /* ppdc-constraint.cxx in Sources */,
-                               274FF60F1333315100317ECB /* ppdc-driver.cxx in Sources */,
-                               274FF6101333315100317ECB /* ppdc-file.cxx in Sources */,
-                               274FF6111333315100317ECB /* ppdc-filter.cxx in Sources */,
-                               274FF6121333315100317ECB /* ppdc-font.cxx in Sources */,
-                               274FF6131333315100317ECB /* ppdc-group.cxx in Sources */,
-                               274FF6141333315100317ECB /* ppdc-import.cxx in Sources */,
-                               274FF6151333315100317ECB /* ppdc-mediasize.cxx in Sources */,
-                               274FF6161333315100317ECB /* ppdc-message.cxx in Sources */,
-                               274FF6171333315100317ECB /* ppdc-option.cxx in Sources */,
-                               274FF6191333315100317ECB /* ppdc-profile.cxx in Sources */,
-                               274FF61A1333315100317ECB /* ppdc-shared.cxx in Sources */,
-                               274FF61B1333315100317ECB /* ppdc-source.cxx in Sources */,
-                               274FF61C1333315100317ECB /* ppdc-string.cxx in Sources */,
-                               274FF61D1333315100317ECB /* ppdc-variable.cxx in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               270D02231D707E0200EA9403 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF6251333333600317ECB /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF6361333344400317ECB /* cups-deviced.c in Sources */,
-                               274FF6371333345900317ECB /* util.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271284EA1CC1261900E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF63A1333358B00317ECB /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF64A1333398D00317ECB /* cups-exec.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271284EB1CC1261900E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF64B133339C400317ECB /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF65C133339FC00317ECB /* cups-lpd.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271284F71CC1264B00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF67413333B2F00317ECB /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF68813333B6E00317ECB /* cupsfilter.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271284F81CC1264B00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF68A1333B1C400317ECB /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               274FF68B1333B1C400317ECB /* adminutil.c in Sources */,
-                               274FF68C1333B1C400317ECB /* array.c in Sources */,
-                               274FF68D1333B1C400317ECB /* attr.c in Sources */,
-                               274FF68E1333B1C400317ECB /* auth.c in Sources */,
-                               274FF68F1333B1C400317ECB /* backchannel.c in Sources */,
-                               274FF6901333B1C400317ECB /* backend.c in Sources */,
-                               274FF6911333B1C400317ECB /* conflicts.c in Sources */,
-                               274FF6921333B1C400317ECB /* custom.c in Sources */,
-                               274FF6931333B1C400317ECB /* debug.c in Sources */,
-                               274FF6941333B1C400317ECB /* dest.c in Sources */,
-                               274FF6951333B1C400317ECB /* dir.c in Sources */,
-                               274FF6961333B1C400317ECB /* emit.c in Sources */,
-                               274FF6971333B1C400317ECB /* encode.c in Sources */,
-                               274FF6981333B1C400317ECB /* file.c in Sources */,
-                               274FF6991333B1C400317ECB /* getdevices.c in Sources */,
-                               274FF69A1333B1C400317ECB /* getifaddrs.c in Sources */,
-                               274FF69B1333B1C400317ECB /* getputfile.c in Sources */,
-                               274FF69C1333B1C400317ECB /* globals.c in Sources */,
-                               274FF69D1333B1C400317ECB /* http-addr.c in Sources */,
-                               274FF69E1333B1C400317ECB /* http-addrlist.c in Sources */,
-                               274FF69F1333B1C400317ECB /* http-support.c in Sources */,
-                               274FF6A01333B1C400317ECB /* http.c in Sources */,
-                               2767FC7419268F0C000F61D3 /* dest-options.c in Sources */,
-                               274FF6A11333B1C400317ECB /* ipp-support.c in Sources */,
-                               274FF6A21333B1C400317ECB /* ipp.c in Sources */,
-                               274FF6A31333B1C400317ECB /* langprintf.c in Sources */,
-                               274FF6A41333B1C400317ECB /* language.c in Sources */,
-                               274FF6A51333B1C400317ECB /* localize.c in Sources */,
-                               274FF6A61333B1C400317ECB /* mark.c in Sources */,
-                               274FF6A71333B1C400317ECB /* md5.c in Sources */,
-                               274FF6A81333B1C400317ECB /* md5passwd.c in Sources */,
-                               274FF6A91333B1C400317ECB /* notify.c in Sources */,
-                               274FF6AA1333B1C400317ECB /* options.c in Sources */,
-                               727AD5B819100A58009F6862 /* tls.c in Sources */,
-                               274FF6AB1333B1C400317ECB /* page.c in Sources */,
-                               274FF6AC1333B1C400317ECB /* ppd-cache.c in Sources */,
-                               2767FC7219268F06000F61D3 /* dest-job.c in Sources */,
-                               274FF6AD1333B1C400317ECB /* ppd.c in Sources */,
-                               274FF6AE1333B1C400317ECB /* pwg-media.c in Sources */,
-                               2767FC7319268F09000F61D3 /* dest-localization.c in Sources */,
-                               274FF6AF1333B1C400317ECB /* request.c in Sources */,
-                               274FF6B01333B1C400317ECB /* sidechannel.c in Sources */,
-                               274FF6B11333B1C400317ECB /* snmp.c in Sources */,
-                               274FF6B21333B1C400317ECB /* snprintf.c in Sources */,
-                               274FF6B31333B1C400317ECB /* string.c in Sources */,
-                               274FF6B41333B1C400317ECB /* tempfile.c in Sources */,
-                               274FF6B51333B1C400317ECB /* thread.c in Sources */,
-                               274FF6B61333B1C400317ECB /* transcode.c in Sources */,
-                               274FF6B71333B1C400317ECB /* usersys.c in Sources */,
-                               274FF6B81333B1C400317ECB /* util.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285041CC1265D00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683581337A9B6000D33D0 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683691337AA00000D33D0 /* cupsctl.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285051CC1265D00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               2766836C1337AC79000D33D0 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683CD1337B201000D33D0 /* ppdc.cxx in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285111CC1267A00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683791337AC8C000D33D0 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683CF1337B20D000D33D0 /* ppdhtml.cxx in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285121CC1267A00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683861337AC97000D33D0 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683D11337B21A000D33D0 /* ppdi.cxx in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712851E1CC1269700E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683931337ACA2000D33D0 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683D31337B228000D33D0 /* ppdmerge.cxx in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712851F1CC1269700E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683A01337ACAB000D33D0 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683D51337B237000D33D0 /* ppdpo.cxx in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712852B1CC126AA00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683EC1337F78E000D33D0 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276683FA1337F7A9000D33D0 /* ipptool.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712852C1CC126AA00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276684001337FA1D000D33D0 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               276684111337FA7C000D33D0 /* cupsaddsmb.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285381CC1270B00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               2767FC4919266A0D000F61D3 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               2767FC5219266A36000F61D3 /* testdest.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285391CC1270B00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               278C58C7136B640300836530 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               278C58E3136B647200836530 /* testhttp.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285451CC1271E00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               27A034771A8BDB1200650675 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               27A034821A8BDC3A00650675 /* lpadmin.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285461CC1271E00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               720DD6BE1358FD5F0064AA82 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               720DD6D413590AB90064AA82 /* ieee1284.c in Sources */,
-                               720DD6D31358FDDE0064AA82 /* snmp.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285521CC1272D00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               72220EAA1333047D00FCA411 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72220EB61333052D00FCA411 /* adminutil.c in Sources */,
-                               72220EC51333056300FCA411 /* array.c in Sources */,
-                               72220EC71333056300FCA411 /* attr.c in Sources */,
-                               727AD5B719100A58009F6862 /* tls.c in Sources */,
-                               72220EC81333056300FCA411 /* auth.c in Sources */,
-                               72220EC91333056300FCA411 /* backchannel.c in Sources */,
-                               72220ECA1333056300FCA411 /* backend.c in Sources */,
-                               72220ECC1333056300FCA411 /* conflicts.c in Sources */,
-                               72220ECF1333056300FCA411 /* custom.c in Sources */,
-                               72220F0B133305BB00FCA411 /* debug.c in Sources */,
-                               72220F0C133305BB00FCA411 /* dest.c in Sources */,
-                               72220F0D133305BB00FCA411 /* dir.c in Sources */,
-                               72220F0F133305BB00FCA411 /* emit.c in Sources */,
-                               72220F10133305BB00FCA411 /* encode.c in Sources */,
-                               72220F12133305BB00FCA411 /* file.c in Sources */,
-                               72220F14133305BB00FCA411 /* getdevices.c in Sources */,
-                               72220F15133305BB00FCA411 /* getifaddrs.c in Sources */,
-                               72220F16133305BB00FCA411 /* getputfile.c in Sources */,
-                               72220F17133305BB00FCA411 /* globals.c in Sources */,
-                               72220F18133305BB00FCA411 /* http-addr.c in Sources */,
-                               72220F19133305BB00FCA411 /* http-addrlist.c in Sources */,
-                               72220F1B133305BB00FCA411 /* http-support.c in Sources */,
-                               72220F1C133305BB00FCA411 /* http.c in Sources */,
-                               72CF95E518A13543000FCAE4 /* dest-options.c in Sources */,
-                               72220F1F133305BB00FCA411 /* ipp-support.c in Sources */,
-                               72220F20133305BB00FCA411 /* ipp.c in Sources */,
-                               72220F22133305BB00FCA411 /* langprintf.c in Sources */,
-                               72220F24133305BB00FCA411 /* language.c in Sources */,
-                               72220F26133305BB00FCA411 /* localize.c in Sources */,
-                               72220F27133305BB00FCA411 /* mark.c in Sources */,
-                               72220F29133305BB00FCA411 /* md5.c in Sources */,
-                               72220F2A133305BB00FCA411 /* md5passwd.c in Sources */,
-                               72220F2B133305BB00FCA411 /* notify.c in Sources */,
-                               72220F2C133305BB00FCA411 /* options.c in Sources */,
-                               72220F2D133305BB00FCA411 /* page.c in Sources */,
-                               72220F2E133305BB00FCA411 /* ppd-cache.c in Sources */,
-                               72220F30133305BB00FCA411 /* ppd.c in Sources */,
-                               72220F32133305BB00FCA411 /* pwg-media.c in Sources */,
-                               72220F35133305BB00FCA411 /* request.c in Sources */,
-                               72220F36133305BB00FCA411 /* sidechannel.c in Sources */,
-                               72220F39133305BB00FCA411 /* snmp.c in Sources */,
-                               72220F3A133305BB00FCA411 /* snprintf.c in Sources */,
-                               72220F3C133305BB00FCA411 /* string.c in Sources */,
-                               72220F3D133305BB00FCA411 /* tempfile.c in Sources */,
-                               72CF95E418A13543000FCAE4 /* dest-localization.c in Sources */,
-                               72220F3F133305BB00FCA411 /* thread.c in Sources */,
-                               72220F40133305BB00FCA411 /* transcode.c in Sources */,
-                               72220F42133305BB00FCA411 /* usersys.c in Sources */,
-                               72220F43133305BB00FCA411 /* util.c in Sources */,
-                               72CF95E318A13543000FCAE4 /* dest-job.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285531CC1272D00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               72220F5713330A5A00FCA411 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72220F9013330B0C00FCA411 /* auth.c in Sources */,
-                               72220F9113330B0C00FCA411 /* banners.c in Sources */,
-                               72220F9213330B0C00FCA411 /* cert.c in Sources */,
-                               72220F9313330B0C00FCA411 /* classes.c in Sources */,
-                               72220F9413330B0C00FCA411 /* client.c in Sources */,
-                               72220F9513330B0C00FCA411 /* conf.c in Sources */,
-                               72220F9613330B0C00FCA411 /* dirsvc.c in Sources */,
-                               72220F9713330B0C00FCA411 /* env.c in Sources */,
-                               72220F9813330B0C00FCA411 /* ipp.c in Sources */,
-                               72220F9913330B0C00FCA411 /* job.c in Sources */,
-                               72220F9A13330B0C00FCA411 /* listen.c in Sources */,
-                               72220F9B13330B0C00FCA411 /* log.c in Sources */,
-                               72220F9C13330B0C00FCA411 /* main.c in Sources */,
-                               72220F9D13330B0C00FCA411 /* network.c in Sources */,
-                               72220F9E13330B0C00FCA411 /* policy.c in Sources */,
-                               72220F9F13330B0C00FCA411 /* printers.c in Sources */,
-                               72220FA013330B0C00FCA411 /* process.c in Sources */,
-                               72220FA113330B0C00FCA411 /* quotas.c in Sources */,
-                               72220FA313330B0C00FCA411 /* select.c in Sources */,
-                               72220FA413330B0C00FCA411 /* server.c in Sources */,
-                               72220FA513330B0C00FCA411 /* statbuf.c in Sources */,
-                               72220FA613330B0C00FCA411 /* subscriptions.c in Sources */,
-                               72220FA713330B0C00FCA411 /* sysman.c in Sources */,
-                               72C16CB9137B195D007E4BF4 /* file.c in Sources */,
-                               72D53A3815B4929D003F877F /* colorman.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712855F1CC1274300E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               72220FA813330B2200FCA411 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72220FB613330BCE00FCA411 /* filter.c in Sources */,
-                               72220FB713330BCE00FCA411 /* mime.c in Sources */,
-                               72220FB913330BCE00FCA411 /* type.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285601CC1274300E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               724378F91333E43E009631B9 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               7243790D1333E4E3009631B9 /* ipp.c in Sources */,
-                               7243790E1333E4E3009631B9 /* network.c in Sources */,
-                               7243790F1333E4E3009631B9 /* snmp-supplies.c in Sources */,
-                               724379131333E516009631B9 /* runloop.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712856C1CC1275200E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               724379141333E532009631B9 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               724379221333E928009631B9 /* network.c in Sources */,
-                               724379231333E928009631B9 /* runloop.c in Sources */,
-                               724379241333E928009631B9 /* snmp-supplies.c in Sources */,
-                               724379291333E952009631B9 /* lpd.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712856D1CC1275200E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               7243792C1333FB85009631B9 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               724379401333FD4B009631B9 /* network.c in Sources */,
-                               724379411333FD4B009631B9 /* runloop.c in Sources */,
-                               724379421333FD4B009631B9 /* snmp-supplies.c in Sources */,
-                               7243793D1333FD19009631B9 /* socket.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285791CC1276400E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
+               };
+               2712857A1CC1276400E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               724379431333FEA9009631B9 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               724379511333FEBB009631B9 /* dnssd.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712859E1CC12D1300E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = "/usr/libexec/cups/cgi-bin";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               724379571333FF1D009631B9 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               724379C71333FFC7009631B9 /* usb.c in Sources */,
-                               724379CB1334000E009631B9 /* ieee1284.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               2712859F1CC12D1300E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = "/usr/libexec/cups/cgi-bin";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               7258EADE134594C4009286F1 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               7258EAED134594EB009286F1 /* rastertopwg.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285AD1CC12D3A00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = "/usr/libexec/cups/cgi-bin";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               726AD6F3135E88F0002C930D /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               726AD702135E8A90002C930D /* ippserver.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285AE1CC12D3A00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = "/usr/libexec/cups/cgi-bin";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               72CF95E918A19134000FCAE4 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72CF95F318A19165000FCAE4 /* ippfind.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285BB1CC12D4E00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = "/usr/libexec/cups/cgi-bin";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               72F75A4E1336F950004BB496 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72F75A5C1336F988004BB496 /* cupstestppd.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285BC1CC12D4E00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = "/usr/libexec/cups/cgi-bin";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               72F75A5D1336F9A3004BB496 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               72F75A6C1336FA8A004BB496 /* error.c in Sources */,
-                               72F75A6D1336FA8A004BB496 /* interpret.c in Sources */,
-                               72F75A6E1336FA8A004BB496 /* raster.c in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
+               271285C91CC12D5E00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = "/usr/libexec/cups/cgi-bin";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
-               270CCDB2135E3CDE00007BE2 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 270CCDA6135E3C9E00007BE2 /* testmime */;
-                       targetProxy = 270CCDB1135E3CDE00007BE2 /* PBXContainerItemProxy */;
+               271285CA1CC12D5E00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = "/usr/libexec/cups/cgi-bin";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               270CCDB6135E3CF700007BE2 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220FAB13330B2200FCA411 /* libcupsmime */;
-                       targetProxy = 270CCDB5135E3CF700007BE2 /* PBXContainerItemProxy */;
+               271285D61CC12DBF00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               270CCDB8135E3CFD00007BE2 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6891333B1C400317ECB /* libcups_static */;
-                       targetProxy = 270CCDB7135E3CFD00007BE2 /* PBXContainerItemProxy */;
+               271285D71CC12DBF00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               273BF6C91333B5410022CAAB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6891333B1C400317ECB /* libcups_static */;
-                       targetProxy = 273BF6C81333B5410022CAAB /* PBXContainerItemProxy */;
+               271285E31CC12DDF00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               273BF6DE1333B6370022CAAB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 273BF6BC1333B5000022CAAB /* testcups */;
-                       targetProxy = 273BF6DD1333B6370022CAAB /* PBXContainerItemProxy */;
+               271285E41CC12DDF00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274EE25C1A03EDCA003213D1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6891333B1C400317ECB /* libcups_static */;
-                       targetProxy = 274EE25D1A03EDCA003213D1 /* PBXContainerItemProxy */;
+               271285F01CC12E2D00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274EE26D1A03EDCB003213D1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6891333B1C400317ECB /* libcups_static */;
-                       targetProxy = 274EE26E1A03EDCB003213D1 /* PBXContainerItemProxy */;
+               271285F11CC12E2D00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274EE2821A03EEE0003213D1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274EE25B1A03EDCA003213D1 /* ippinfra */;
-                       targetProxy = 274EE2811A03EEE0003213D1 /* PBXContainerItemProxy */;
+               271285FE1CC12EEB00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274EE2841A03EEE0003213D1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274EE26C1A03EDCB003213D1 /* ippproxy */;
-                       targetProxy = 274EE2831A03EEE0003213D1 /* PBXContainerItemProxy */;
+               271285FF1CC12EEB00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274EE2861A03EEEE003213D1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274EE25B1A03EDCA003213D1 /* ippinfra */;
-                       targetProxy = 274EE2851A03EEEE003213D1 /* PBXContainerItemProxy */;
+               271286111CC12F0B00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274EE2881A03EEEE003213D1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274EE26C1A03EDCB003213D1 /* ippproxy */;
-                       targetProxy = 274EE2871A03EEEE003213D1 /* PBXContainerItemProxy */;
+               271286121CC12F0B00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF5DC13332CF900317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 274FF5DB13332CF900317ECB /* PBXContainerItemProxy */;
+               271286211CC12F1A00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF5E313332D4300317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 274FF5E213332D4300317ECB /* PBXContainerItemProxy */;
+               271286221CC12F1A00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/filter;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF5E513332D4300317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220FAB13330B2200FCA411 /* libcupsmime */;
-                       targetProxy = 274FF5E413332D4300317ECB /* PBXContainerItemProxy */;
+               271286651CC1309000E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF5E713332D4300317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220F5A13330A5A00FCA411 /* cupsd */;
-                       targetProxy = 274FF5E613332D4300317ECB /* PBXContainerItemProxy */;
+               271286661CC1309000E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF5E913332D4300317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF5CB13332B1F00317ECB /* cups-driverd */;
-                       targetProxy = 274FF5E813332D4300317ECB /* PBXContainerItemProxy */;
+               2712867B1CC1310E00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF5F3133330FD00317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 274FF5F2133330FD00317ECB /* PBXContainerItemProxy */;
+               2712867C1CC1310E00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF6201333316200317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
-                       targetProxy = 274FF61F1333316200317ECB /* PBXContainerItemProxy */;
+               271286941CC13DC000E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF622133331D300317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
-                       targetProxy = 274FF621133331D300317ECB /* PBXContainerItemProxy */;
+               271286951CC13DC000E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF6341333335200317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 274FF6331333335200317ECB /* PBXContainerItemProxy */;
+               271286A51CC13DF100E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF6391333348400317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6281333333600317ECB /* cups-deviced */;
-                       targetProxy = 274FF6381333348400317ECB /* PBXContainerItemProxy */;
+               271286A61CC13DF100E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF648133335A300317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF63D1333358B00317ECB /* cups-exec */;
-                       targetProxy = 274FF647133335A300317ECB /* PBXContainerItemProxy */;
+               271286B61CC13DFF00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF65A133339D900317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 274FF659133339D900317ECB /* PBXContainerItemProxy */;
+               271286B71CC13DFF00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF65E13333A3400317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF64E133339C400317ECB /* cups-lpd */;
-                       targetProxy = 274FF65D13333A3400317ECB /* PBXContainerItemProxy */;
+               271286C71CC13E2100E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/monitor;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF68213333B3C00317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 274FF68113333B3C00317ECB /* PBXContainerItemProxy */;
+               271286C81CC13E2100E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/monitor;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               274FF68413333B3C00317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220FAB13330B2200FCA411 /* libcupsmime */;
-                       targetProxy = 274FF68313333B3C00317ECB /* PBXContainerItemProxy */;
+               271286D71CC13E5B00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/monitor;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               274FF6E21333B33F00317ECB /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF67713333B2F00317ECB /* cupsfilter */;
-                       targetProxy = 274FF6E11333B33F00317ECB /* PBXContainerItemProxy */;
+               271286D81CC13E5B00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/monitor;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683661337A9D6000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 276683651337A9D6000D33D0 /* PBXContainerItemProxy */;
+               271286F11CC13F2000E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/notifier;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               2766836B1337AA25000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 2766835B1337A9B6000D33D0 /* cupsctl */;
-                       targetProxy = 2766836A1337AA25000D33D0 /* PBXContainerItemProxy */;
+               271286F21CC13F2000E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/notifier;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683AE1337ACF9000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 276683AD1337ACF9000D33D0 /* PBXContainerItemProxy */;
+               271287011CC13F3F00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/notifier;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683B01337ACF9000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
-                       targetProxy = 276683AF1337ACF9000D33D0 /* PBXContainerItemProxy */;
+               271287021CC13F3F00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/notifier;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683B41337AD18000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 276683B31337AD18000D33D0 /* PBXContainerItemProxy */;
+               271287161CC13FAB00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683B61337AD18000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
-                       targetProxy = 276683B51337AD18000D33D0 /* PBXContainerItemProxy */;
+               271287171CC13FAB00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683BC1337AE49000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 276683BB1337AE49000D33D0 /* PBXContainerItemProxy */;
+               2712872A1CC140BE00E517C7 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683BE1337AE49000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
-                       targetProxy = 276683BD1337AE49000D33D0 /* PBXContainerItemProxy */;
+               2712872B1CC140BE00E517C7 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683C01337B1AD000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 276683BF1337B1AD000D33D0 /* PBXContainerItemProxy */;
+               273BF6C41333B5000022CAAB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683C21337B1AD000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
-                       targetProxy = 276683C11337B1AD000D33D0 /* PBXContainerItemProxy */;
+               273BF6C51333B5000022CAAB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683C61337B1BC000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 276683C51337B1BC000D33D0 /* PBXContainerItemProxy */;
+               273BF6DB1333B6270022CAAB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683C81337B1BC000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF5ED133330C800317ECB /* libcupsppdc */;
-                       targetProxy = 276683C71337B1BC000D33D0 /* PBXContainerItemProxy */;
+               273BF6DC1333B6270022CAAB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683D71337B24A000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 2766836F1337AC79000D33D0 /* ppdc */;
-                       targetProxy = 276683D61337B24A000D33D0 /* PBXContainerItemProxy */;
+               274FF5D313332B1F00317ECB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/daemon;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683D91337B24A000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 2766837C1337AC8C000D33D0 /* ppdhtml */;
-                       targetProxy = 276683D81337B24A000D33D0 /* PBXContainerItemProxy */;
+               274FF5D413332B1F00317ECB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/daemon;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683DB1337B24A000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 276683891337AC97000D33D0 /* ppdi */;
-                       targetProxy = 276683DA1337B24A000D33D0 /* PBXContainerItemProxy */;
+               274FF5E013332D3100317ECB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
+                       };
+                       name = Debug;
                };
-               276683DD1337B24A000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 276683961337ACA2000D33D0 /* ppdmerge */;
-                       targetProxy = 276683DC1337B24A000D33D0 /* PBXContainerItemProxy */;
+               274FF5E113332D3100317ECB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
+                       };
+                       name = Release;
                };
-               276683DF1337B24A000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 276683A31337ACAB000D33D0 /* ppdpo */;
-                       targetProxy = 276683DE1337B24A000D33D0 /* PBXContainerItemProxy */;
+               274FF5F0133330C800317ECB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
+                       };
+                       name = Debug;
+               };
+               274FF5F1133330C800317ECB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
+                       };
+                       name = Release;
                };
-               276683E11337B299000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 276683E01337B299000D33D0 /* PBXContainerItemProxy */;
+               274FF6301333333600317ECB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/daemon;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683E41337B2BA000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
-                       targetProxy = 276683E31337B2BA000D33D0 /* PBXContainerItemProxy */;
+               274FF6311333333600317ECB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/daemon;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               276683FC1337F7B3000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 276683FB1337F7B3000D33D0 /* PBXContainerItemProxy */;
+               274FF6451333358C00317ECB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/daemon;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276683FF1337F7C5000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 276683EF1337F78E000D33D0 /* ipptool */;
-                       targetProxy = 276683FE1337F7C5000D33D0 /* PBXContainerItemProxy */;
+               274FF6461333358C00317ECB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/daemon;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               2766840E1337FA31000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 2766840D1337FA31000D33D0 /* PBXContainerItemProxy */;
+               274FF656133339C400317ECB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/daemon;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               276684131337FA8D000D33D0 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 276684031337FA1D000D33D0 /* cupsaddsmb */;
-                       targetProxy = 276684121337FA8D000D33D0 /* PBXContainerItemProxy */;
+               274FF657133339C400317ECB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/daemon;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               2767FC4719266A0D000F61D3 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6891333B1C400317ECB /* libcups_static */;
-                       targetProxy = 2767FC4819266A0D000F61D3 /* PBXContainerItemProxy */;
+               274FF67F13333B2F00317ECB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               2767FC5419267469000F61D3 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 276683EF1337F78E000D33D0 /* ipptool */;
-                       targetProxy = 2767FC5319267469000F61D3 /* PBXContainerItemProxy */;
+               274FF68013333B2F00317ECB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               2767FC5619267469000F61D3 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 2767FC4619266A0D000F61D3 /* testdest */;
-                       targetProxy = 2767FC5519267469000F61D3 /* PBXContainerItemProxy */;
+               274FF6DE1333B1C400317ECB /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/local/lib;
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
+                               PRODUCT_NAME = libcups_static;
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
+                               STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static;
+                       };
+                       name = Debug;
                };
-               278C58D6136B641D00836530 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 278C58CA136B640300836530 /* testhttp */;
-                       targetProxy = 278C58D5136B641D00836530 /* PBXContainerItemProxy */;
+               274FF6DF1333B1C400317ECB /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/local/lib;
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
+                               PRODUCT_NAME = libcups_static;
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
+                               STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static;
+                       };
+                       name = Release;
                };
-               278C58D8136B642F00836530 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6891333B1C400317ECB /* libcups_static */;
-                       targetProxy = 278C58D7136B642F00836530 /* PBXContainerItemProxy */;
+               276683631337A9B6000D33D0 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               27A034841A8BDC4A00650675 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 27A034831A8BDC4A00650675 /* PBXContainerItemProxy */;
+               276683641337A9B6000D33D0 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               27A034871A8BDC6900650675 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 27A0347A1A8BDB1200650675 /* lpadmin */;
-                       targetProxy = 27A034861A8BDC6900650675 /* PBXContainerItemProxy */;
+               276683771337AC79000D33D0 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               720DD6CF1358FD790064AA82 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 720DD6CE1358FD790064AA82 /* PBXContainerItemProxy */;
+               276683781337AC79000D33D0 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               720DD6D11358FDBE0064AA82 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 720DD6C11358FD5F0064AA82 /* snmp */;
-                       targetProxy = 720DD6D01358FDBE0064AA82 /* PBXContainerItemProxy */;
+               276683841337AC8C000D33D0 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               72220F6513330A6500FCA411 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 72220F6413330A6500FCA411 /* PBXContainerItemProxy */;
+               276683851337AC8C000D33D0 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               72220FBC13330C0500FCA411 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 72220FBB13330C0500FCA411 /* PBXContainerItemProxy */;
+               276683911337AC97000D33D0 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               72220FBE13330C0B00FCA411 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220FAB13330B2200FCA411 /* libcupsmime */;
-                       targetProxy = 72220FBD13330C0B00FCA411 /* PBXContainerItemProxy */;
+               276683921337AC97000D33D0 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               724379071333E49B009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 724379061333E49B009631B9 /* PBXContainerItemProxy */;
+               2766839E1337ACA2000D33D0 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               724379111333E4EA009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 724378FC1333E43E009631B9 /* ipp */;
-                       targetProxy = 724379101333E4EA009631B9 /* PBXContainerItemProxy */;
+               2766839F1337ACA2000D33D0 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               724379261333E932009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 724379251333E932009631B9 /* PBXContainerItemProxy */;
+               276683AB1337ACAB000D33D0 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               7243792B1333E962009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 724379171333E532009631B9 /* lpd */;
-                       targetProxy = 7243792A1333E962009631B9 /* PBXContainerItemProxy */;
+               276683AC1337ACAB000D33D0 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               7243793A1333FB95009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 724379391333FB95009631B9 /* PBXContainerItemProxy */;
+               276683F71337F78F000D33D0 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               7243793F1333FD23009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 7243792F1333FB85009631B9 /* socket */;
-                       targetProxy = 7243793E1333FD23009631B9 /* PBXContainerItemProxy */;
+               276683F81337F78F000D33D0 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               724379531333FECE009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 724379461333FEA9009631B9 /* dnssd */;
-                       targetProxy = 724379521333FECE009631B9 /* PBXContainerItemProxy */;
+               2766840B1337FA1E000D33D0 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               724379551333FEFE009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 724379541333FEFE009631B9 /* PBXContainerItemProxy */;
+               2766840C1337FA1E000D33D0 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               724379651333FF2E009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 724379641333FF2E009631B9 /* PBXContainerItemProxy */;
+               2767FC4E19266A0D000F61D3 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = testdest;
+                       };
+                       name = Debug;
                };
-               724379C31333FF7D009631B9 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 7243795A1333FF1D009631B9 /* usb */;
-                       targetProxy = 724379C21333FF7D009631B9 /* PBXContainerItemProxy */;
+               2767FC4F19266A0D000F61D3 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = testdest;
+                       };
+                       name = Release;
                };
-               7258EAEF13459ADA009286F1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 7258EAE1134594C4009286F1 /* rastertopwg */;
-                       targetProxy = 7258EAEE13459ADA009286F1 /* PBXContainerItemProxy */;
+               278C58D1136B640300836530 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               7258EAF113459B67009286F1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 7258EAF013459B67009286F1 /* PBXContainerItemProxy */;
+               278C58D2136B640300836530 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               7258EAF313459B67009286F1 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
-                       targetProxy = 7258EAF213459B67009286F1 /* PBXContainerItemProxy */;
+               27A0347F1A8BDB1300650675 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               COPY_PHASE_STRIP = NO;
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_PREPROCESSOR_DEFINITIONS = (
+                                       "DEBUG=1",
+                                       "$(inherited)",
+                               );
+                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               INSTALL_PATH = /usr/sbin;
+                               MACOSX_DEPLOYMENT_TARGET = 10.10;
+                               MTL_ENABLE_DEBUG_INFO = YES;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
+                       };
+                       name = Debug;
                };
-               726AD704135E8AA1002C930D /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 726AD6F6135E88F0002C930D /* ippserver */;
-                       targetProxy = 726AD703135E8AA1002C930D /* PBXContainerItemProxy */;
+               27A034801A8BDB1300650675 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ALWAYS_SEARCH_USER_PATHS = NO;
+                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+                               CLANG_CXX_LIBRARY = "libc++";
+                               CLANG_ENABLE_MODULES = YES;
+                               CLANG_ENABLE_OBJC_ARC = YES;
+                               CLANG_WARN_BOOL_CONVERSION = YES;
+                               CLANG_WARN_CONSTANT_CONVERSION = YES;
+                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+                               CLANG_WARN_EMPTY_BODY = YES;
+                               CLANG_WARN_INT_CONVERSION = YES;
+                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+                               CLANG_WARN_UNREACHABLE_CODE = YES;
+                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+                               COPY_PHASE_STRIP = YES;
+                               ENABLE_NS_ASSERTIONS = NO;
+                               ENABLE_STRICT_OBJC_MSGSEND = YES;
+                               GCC_C_LANGUAGE_STANDARD = gnu99;
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+                               GCC_WARN_UNDECLARED_SELECTOR = YES;
+                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+                               INSTALL_PATH = /usr/sbin;
+                               MACOSX_DEPLOYMENT_TARGET = 10.10;
+                               MTL_ENABLE_DEBUG_INFO = NO;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               SDKROOT = macosx;
+                       };
+                       name = Release;
                };
-               726AD706135E8AC5002C930D /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6891333B1C400317ECB /* libcups_static */;
-                       targetProxy = 726AD705135E8AC5002C930D /* PBXContainerItemProxy */;
+               720DD6C91358FD5F0064AA82 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               72BEA8D419AFA89C0085F0F3 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 726AD6F6135E88F0002C930D /* ippserver */;
-                       targetProxy = 72BEA8D319AFA89C0085F0F3 /* PBXContainerItemProxy */;
+               720DD6CA1358FD5F0064AA82 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               72BEA8D619AFA8A00085F0F3 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72CF95E618A19134000FCAE4 /* ippfind */;
-                       targetProxy = 72BEA8D519AFA8A00085F0F3 /* PBXContainerItemProxy */;
+               72220EB01333047D00FCA411 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
+                       };
+                       name = Debug;
                };
-               72BEA8D819AFA8BB0085F0F3 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 274FF6891333B1C400317ECB /* libcups_static */;
-                       targetProxy = 72BEA8D719AFA8BB0085F0F3 /* PBXContainerItemProxy */;
+               72220EB11333047D00FCA411 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
+                       };
+                       name = Release;
                };
-               72CF95E718A19134000FCAE4 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 72CF95E818A19134000FCAE4 /* PBXContainerItemProxy */;
+               72220F6213330A5A00FCA411 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-               72F75A661336FA30004BB496 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72220EAD1333047D00FCA411 /* libcups */;
-                       targetProxy = 72F75A651336FA30004BB496 /* PBXContainerItemProxy */;
+               72220F6313330A5A00FCA411 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/sbin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               72F75A711336FACD004BB496 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72F75A601336F9A3004BB496 /* libcupsimage */;
-                       targetProxy = 72F75A701336FACD004BB496 /* PBXContainerItemProxy */;
+               72220FAE13330B2300FCA411 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
+               };
+               72220FAF13330B2300FCA411 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
                };
-               72F75A731336FACD004BB496 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 72F75A511336F950004BB496 /* cupstestppd */;
-                       targetProxy = 72F75A721336FACD004BB496 /* PBXContainerItemProxy */;
+               724379041333E43E009631B9 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_MODE_FLAG = "u+rwX,go-rwX";
+                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
                };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
-               270CCDAD135E3C9E00007BE2 /* Debug */ = {
+               724379051333E43E009631B9 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_MODE_FLAG = "u+rwX,go-rwX";
+                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               7243791F1333E532009631B9 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/backend;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               270CCDAE135E3C9E00007BE2 /* Release */ = {
+               724379201333E532009631B9 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/backend;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               273BF6C41333B5000022CAAB /* Debug */ = {
+               724379371333FB85009631B9 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/backend;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               273BF6C51333B5000022CAAB /* Release */ = {
+               724379381333FB85009631B9 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/backend;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               273BF6DB1333B6270022CAAB /* Debug */ = {
+               7243794E1333FEA9009631B9 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/backend;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               273BF6DC1333B6270022CAAB /* Release */ = {
+               7243794F1333FEA9009631B9 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               INSTALL_PATH = /usr/libexec/cups/backend;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               274EE2691A03EDCA003213D1 /* Debug */ = {
+               724379621333FF1D009631B9 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               PRODUCT_NAME = "ippserver copy";
+                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               274EE26A1A03EDCA003213D1 /* Release */ = {
+               724379631333FF1D009631B9 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               PRODUCT_NAME = "ippserver copy";
+                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               274EE27A1A03EDCB003213D1 /* Debug */ = {
+               724FA5331CC0370C0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               PRODUCT_NAME = "ippserver copy copy";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               274EE27B1A03EDCB003213D1 /* Release */ = {
+               724FA5341CC0370C0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               PRODUCT_NAME = "ippserver copy copy";
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               274FF5D313332B1F00317ECB /* Debug */ = {
+               724FA5461CC037370092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/daemon;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               274FF5D413332B1F00317ECB /* Release */ = {
+               724FA5471CC037370092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/daemon;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               274FF5E013332D3100317ECB /* Debug */ = {
+               724FA5591CC037500092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               SDKROOT = macosx;
                        };
                        name = Debug;
                };
-               274FF5E113332D3100317ECB /* Release */ = {
+               724FA55A1CC037500092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               SDKROOT = macosx;
                        };
                        name = Release;
                };
-               274FF5F0133330C800317ECB /* Debug */ = {
+               724FA56C1CC037670092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/lib;
-                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
                        };
                        name = Debug;
                };
-               274FF5F1133330C800317ECB /* Release */ = {
+               724FA56D1CC037670092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/lib;
-                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
                        };
                        name = Release;
                };
-               274FF6301333333600317ECB /* Debug */ = {
+               724FA57F1CC037810092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/daemon;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               274FF6311333333600317ECB /* Release */ = {
+               724FA5801CC037810092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/daemon;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               274FF6451333358C00317ECB /* Debug */ = {
+               724FA5921CC037980092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/daemon;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               274FF6461333358C00317ECB /* Release */ = {
+               724FA5931CC037980092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/daemon;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               274FF656133339C400317ECB /* Debug */ = {
+               724FA5A51CC037AA0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/daemon;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               274FF657133339C400317ECB /* Release */ = {
+               724FA5A61CC037AA0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/daemon;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               274FF67F13333B2F00317ECB /* Debug */ = {
+               724FA5B81CC037C60092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/sbin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               274FF68013333B2F00317ECB /* Release */ = {
+               724FA5B91CC037C60092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/sbin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               274FF6DE1333B1C400317ECB /* Debug */ = {
+               724FA5CB1CC037D90092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_EXTENSION = a;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/local/lib;
-                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
-                               PRODUCT_NAME = libcups_static;
-                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
-                               STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               274FF6DF1333B1C400317ECB /* Release */ = {
+               724FA5CC1CC037D90092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_EXTENSION = a;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/local/lib;
-                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
-                               PRODUCT_NAME = libcups_static;
-                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
-                               STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = static;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               276683631337A9B6000D33D0 /* Debug */ = {
+               724FA5DF1CC037F00092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/sbin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               276683641337A9B6000D33D0 /* Release */ = {
+               724FA5E01CC037F00092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/sbin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               276683771337AC79000D33D0 /* Debug */ = {
+               724FA5F31CC038040092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               276683781337AC79000D33D0 /* Release */ = {
+               724FA5F41CC038040092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               276683841337AC8C000D33D0 /* Debug */ = {
+               724FA6071CC038190092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               276683851337AC8C000D33D0 /* Release */ = {
+               724FA6081CC038190092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               276683911337AC97000D33D0 /* Debug */ = {
+               724FA61B1CC0382B0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               276683921337AC97000D33D0 /* Release */ = {
+               724FA61C1CC0382B0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               2766839E1337ACA2000D33D0 /* Debug */ = {
+               724FA62F1CC038410092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               2766839F1337ACA2000D33D0 /* Release */ = {
+               724FA6301CC038410092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               276683AB1337ACAB000D33D0 /* Debug */ = {
+               724FA6431CC038560092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               276683AC1337ACAB000D33D0 /* Release */ = {
+               724FA6441CC038560092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               276683F71337F78F000D33D0 /* Debug */ = {
+               724FA6571CC0386E0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               276683F81337F78F000D33D0 /* Release */ = {
+               724FA6581CC0386E0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/bin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               2766840B1337FA1E000D33D0 /* Debug */ = {
+               724FA66E1CC038A50092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/sbin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               2766840C1337FA1E000D33D0 /* Release */ = {
+               724FA66F1CC038A50092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/sbin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               2767FC4E19266A0D000F61D3 /* Debug */ = {
+               724FA6811CC038BD0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               PRODUCT_NAME = testdest;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               2767FC4F19266A0D000F61D3 /* Release */ = {
+               724FA6821CC038BD0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               PRODUCT_NAME = testdest;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               278C58D1136B640300836530 /* Debug */ = {
+               724FA6951CC038D90092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               278C58D2136B640300836530 /* Release */ = {
+               724FA6961CC038D90092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               27A0347F1A8BDB1300650675 /* Debug */ = {
+               724FA6A81CC039200092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ALWAYS_SEARCH_USER_PATHS = NO;
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
-                               CLANG_ENABLE_MODULES = YES;
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               CLANG_WARN_BOOL_CONVERSION = YES;
-                               CLANG_WARN_CONSTANT_CONVERSION = YES;
-                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-                               CLANG_WARN_EMPTY_BODY = YES;
-                               CLANG_WARN_INT_CONVERSION = YES;
-                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-                               CLANG_WARN_UNREACHABLE_CODE = YES;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-                               COPY_PHASE_STRIP = NO;
-                               ENABLE_STRICT_OBJC_MSGSEND = YES;
-                               GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_DYNAMIC_NO_PIC = NO;
-                               GCC_OPTIMIZATION_LEVEL = 0;
-                               GCC_PREPROCESSOR_DEFINITIONS = (
-                                       "DEBUG=1",
-                                       "$(inherited)",
-                               );
-                               GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-                               GCC_WARN_UNDECLARED_SELECTOR = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-                               INSTALL_PATH = /usr/sbin;
-                               MACOSX_DEPLOYMENT_TARGET = 10.10;
-                               MTL_ENABLE_DEBUG_INFO = YES;
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               SDKROOT = macosx;
                        };
                        name = Debug;
                };
-               27A034801A8BDB1300650675 /* Release */ = {
+               724FA6A91CC039200092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               ALWAYS_SEARCH_USER_PATHS = NO;
-                               CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
-                               CLANG_CXX_LIBRARY = "libc++";
-                               CLANG_ENABLE_MODULES = YES;
-                               CLANG_ENABLE_OBJC_ARC = YES;
-                               CLANG_WARN_BOOL_CONVERSION = YES;
-                               CLANG_WARN_CONSTANT_CONVERSION = YES;
-                               CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
-                               CLANG_WARN_EMPTY_BODY = YES;
-                               CLANG_WARN_INT_CONVERSION = YES;
-                               CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
-                               CLANG_WARN_UNREACHABLE_CODE = YES;
-                               CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
-                               COPY_PHASE_STRIP = YES;
-                               ENABLE_NS_ASSERTIONS = NO;
-                               ENABLE_STRICT_OBJC_MSGSEND = YES;
-                               GCC_C_LANGUAGE_STANDARD = gnu99;
-                               GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
-                               GCC_WARN_UNDECLARED_SELECTOR = YES;
-                               GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
-                               INSTALL_PATH = /usr/sbin;
-                               MACOSX_DEPLOYMENT_TARGET = 10.10;
-                               MTL_ENABLE_DEBUG_INFO = NO;
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               SDKROOT = macosx;
                        };
                        name = Release;
                };
-               720DD6C91358FD5F0064AA82 /* Debug */ = {
+               724FA6BB1CC0393E0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               720DD6CA1358FD5F0064AA82 /* Release */ = {
+               724FA6BC1CC0393E0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               72220EB01333047D00FCA411 /* Debug */ = {
+               724FA6CF1CC0395A0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/lib;
-                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
                        };
                        name = Debug;
                };
-               72220EB11333047D00FCA411 /* Release */ = {
+               724FA6D01CC0395A0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/lib;
-                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                                PRODUCT_NAME = "$(TARGET_NAME)";
-                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
                        };
                        name = Release;
                };
-               72220F6213330A5A00FCA411 /* Debug */ = {
+               724FA6E81CC039DE0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/sbin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               72220F6313330A5A00FCA411 /* Release */ = {
+               724FA6E91CC039DE0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/sbin;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               72220FAE13330B2300FCA411 /* Debug */ = {
+               724FA6FD1CC03A210092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/lib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               72220FAF13330B2300FCA411 /* Release */ = {
+               724FA6FE1CC03A210092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/lib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               724379041333E43E009631B9 /* Debug */ = {
+               724FA70D1CC03A490092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_MODE_FLAG = "u+rwX,go-rwX";
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               MACH_O_TYPE = staticlib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               724379051333E43E009631B9 /* Release */ = {
+               724FA70E1CC03A490092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_MODE_FLAG = "u+rwX,go-rwX";
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               MACH_O_TYPE = staticlib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               7243791F1333E532009631B9 /* Debug */ = {
+               724FA71D1CC03A990092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               MACH_O_TYPE = staticlib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               724379201333E532009631B9 /* Release */ = {
+               724FA71E1CC03A990092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               MACH_O_TYPE = staticlib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               724379371333FB85009631B9 /* Debug */ = {
+               724FA73E1CC03AAF0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               MACH_O_TYPE = staticlib;
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                                PRODUCT_NAME = "$(TARGET_NAME)";
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
                        };
                        name = Debug;
                };
-               724379381333FB85009631B9 /* Release */ = {
+               724FA73F1CC03AAF0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               MACH_O_TYPE = staticlib;
+                               PRIVATE_HEADERS_FOLDER_PATH = /usr/local/include/cups;
                                PRODUCT_NAME = "$(TARGET_NAME)";
+                               PUBLIC_HEADERS_FOLDER_PATH = /usr/include/cups;
                        };
                        name = Release;
                };
-               7243794E1333FEA9009631B9 /* Debug */ = {
+               724FA74D1CC03ACC0092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               7243794F1333FEA9009631B9 /* Release */ = {
+               724FA74E1CC03ACC0092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                };
-               724379621333FF1D009631B9 /* Debug */ = {
+               724FA7691CC03AF60092477B /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               MACH_O_TYPE = staticlib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
                };
-               724379631333FF1D009631B9 /* Release */ = {
+               724FA76A1CC03AF60092477B /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
-                               INSTALL_PATH = /usr/libexec/cups/backend;
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_EXTENSION = a;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               MACH_O_TYPE = staticlib;
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
                72BF963C1333042100B1EAD7 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               ASSETCATALOG_COMPRESSION = lossless;
                                CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
                                CLANG_WARN_ENUM_CONVERSION = YES;
                                CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
                72BF963D1333042100B1EAD7 /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               ASSETCATALOG_COMPRESSION = "respect-asset-catalog";
                                CLANG_ANALYZER_SECURITY_INSECUREAPI_STRCPY = YES;
                                CLANG_WARN_ENUM_CONVERSION = YES;
                                CLANG_WARN_IMPLICIT_SIGN_CONVERSION = YES;
                        };
                        name = Debug;
                };
-               72CF95F018A19134000FCAE4 /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               INSTALL_PATH = /usr/bin;
-                               PRODUCT_NAME = "ipptool copy";
-                       };
-                       name = Release;
+               72CF95F018A19134000FCAE4 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "ipptool copy";
+                       };
+                       name = Release;
+               };
+               72F75A591336F951004BB496 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
+               };
+               72F75A5A1336F951004BB496 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               INSTALL_PATH = /usr/bin;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+               72F75A631336F9A3004BB496 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
+               };
+               72F75A641336F9A3004BB496 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COMBINE_HIDPI_IMAGES = YES;
+                               EXECUTABLE_PREFIX = "";
+                               INSTALL_PATH = /usr/lib;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+               270696571CADF3E200FFE5FB /* Build configuration list for PBXNativeTarget "libcups_ios" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               270696581CADF3E200FFE5FB /* Debug */,
+                               270696591CADF3E200FFE5FB /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               270CCDAF135E3C9E00007BE2 /* Build configuration list for PBXNativeTarget "testmime" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               270CCDAD135E3C9E00007BE2 /* Debug */,
+                               270CCDAE135E3C9E00007BE2 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               270D02211D707E0200EA9403 /* Build configuration list for PBXNativeTarget "testcreds" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               270D02221D707E0200EA9403 /* Debug */,
+                               270D02231D707E0200EA9403 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271284E91CC1261900E517C7 /* Build configuration list for PBXNativeTarget "cancel" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271284EA1CC1261900E517C7 /* Debug */,
+                               271284EB1CC1261900E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271284F61CC1264B00E517C7 /* Build configuration list for PBXNativeTarget "cupsaccept" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271284F71CC1264B00E517C7 /* Debug */,
+                               271284F81CC1264B00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285031CC1265D00E517C7 /* Build configuration list for PBXNativeTarget "cupstestdsc" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285041CC1265D00E517C7 /* Debug */,
+                               271285051CC1265D00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285101CC1267A00E517C7 /* Build configuration list for PBXNativeTarget "lp" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285111CC1267A00E517C7 /* Debug */,
+                               271285121CC1267A00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               2712851D1CC1269700E517C7 /* Build configuration list for PBXNativeTarget "lpc" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2712851E1CC1269700E517C7 /* Debug */,
+                               2712851F1CC1269700E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               2712852A1CC126AA00E517C7 /* Build configuration list for PBXNativeTarget "lpinfo" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2712852B1CC126AA00E517C7 /* Debug */,
+                               2712852C1CC126AA00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285371CC1270B00E517C7 /* Build configuration list for PBXNativeTarget "lpmove" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285381CC1270B00E517C7 /* Debug */,
+                               271285391CC1270B00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285441CC1271E00E517C7 /* Build configuration list for PBXNativeTarget "lpoptions" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285451CC1271E00E517C7 /* Debug */,
+                               271285461CC1271E00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285511CC1272D00E517C7 /* Build configuration list for PBXNativeTarget "lpq" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285521CC1272D00E517C7 /* Debug */,
+                               271285531CC1272D00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               2712855E1CC1274300E517C7 /* Build configuration list for PBXNativeTarget "lpr" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2712855F1CC1274300E517C7 /* Debug */,
+                               271285601CC1274300E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               2712856B1CC1275200E517C7 /* Build configuration list for PBXNativeTarget "lprm" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2712856C1CC1275200E517C7 /* Debug */,
+                               2712856D1CC1275200E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285781CC1276400E517C7 /* Build configuration list for PBXNativeTarget "lpstat" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285791CC1276400E517C7 /* Debug */,
+                               2712857A1CC1276400E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               2712859D1CC12D1300E517C7 /* Build configuration list for PBXNativeTarget "admin.cgi" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2712859E1CC12D1300E517C7 /* Debug */,
+                               2712859F1CC12D1300E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285AC1CC12D3A00E517C7 /* Build configuration list for PBXNativeTarget "classes.cgi" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285AD1CC12D3A00E517C7 /* Debug */,
+                               271285AE1CC12D3A00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285BA1CC12D4E00E517C7 /* Build configuration list for PBXNativeTarget "jobs.cgi" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285BB1CC12D4E00E517C7 /* Debug */,
+                               271285BC1CC12D4E00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285C81CC12D5E00E517C7 /* Build configuration list for PBXNativeTarget "printers.cgi" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285C91CC12D5E00E517C7 /* Debug */,
+                               271285CA1CC12D5E00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285D51CC12DBF00E517C7 /* Build configuration list for PBXNativeTarget "commandtops" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285D61CC12DBF00E517C7 /* Debug */,
+                               271285D71CC12DBF00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285E21CC12DDF00E517C7 /* Build configuration list for PBXNativeTarget "gziptoany" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285E31CC12DDF00E517C7 /* Debug */,
+                               271285E41CC12DDF00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285EF1CC12E2D00E517C7 /* Build configuration list for PBXNativeTarget "pstops" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285F01CC12E2D00E517C7 /* Debug */,
+                               271285F11CC12E2D00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271285FD1CC12EEB00E517C7 /* Build configuration list for PBXNativeTarget "rastertoepson" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271285FE1CC12EEB00E517C7 /* Debug */,
+                               271285FF1CC12EEB00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271286101CC12F0B00E517C7 /* Build configuration list for PBXNativeTarget "rastertohp" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286111CC12F0B00E517C7 /* Debug */,
+                               271286121CC12F0B00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271286201CC12F1A00E517C7 /* Build configuration list for PBXNativeTarget "rastertolabel" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286211CC12F1A00E517C7 /* Debug */,
+                               271286221CC12F1A00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271286641CC1309000E517C7 /* Build configuration list for PBXNativeTarget "tlscheck" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286651CC1309000E517C7 /* Debug */,
+                               271286661CC1309000E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               2712867A1CC1310E00E517C7 /* Build configuration list for PBXNativeTarget "rasterbench" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2712867B1CC1310E00E517C7 /* Debug */,
+                               2712867C1CC1310E00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271286931CC13DC000E517C7 /* Build configuration list for PBXNativeTarget "checkpo" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286941CC13DC000E517C7 /* Debug */,
+                               271286951CC13DC000E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               271286A41CC13DF100E517C7 /* Build configuration list for PBXNativeTarget "po2strings" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286A51CC13DF100E517C7 /* Debug */,
+                               271286A61CC13DF100E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
                };
-               72F75A591336F951004BB496 /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               INSTALL_PATH = /usr/bin;
-                               PRODUCT_NAME = "$(TARGET_NAME)";
-                       };
-                       name = Debug;
+               271286B51CC13DFF00E517C7 /* Build configuration list for PBXNativeTarget "strings2po" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286B61CC13DFF00E517C7 /* Debug */,
+                               271286B71CC13DFF00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
                };
-               72F75A5A1336F951004BB496 /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               INSTALL_PATH = /usr/bin;
-                               PRODUCT_NAME = "$(TARGET_NAME)";
-                       };
-                       name = Release;
+               271286C61CC13E2100E517C7 /* Build configuration list for PBXNativeTarget "bcp" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286C71CC13E2100E517C7 /* Debug */,
+                               271286C81CC13E2100E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
                };
-               72F75A631336F9A3004BB496 /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/lib;
-                               PRODUCT_NAME = "$(TARGET_NAME)";
-                       };
-                       name = Debug;
+               271286D61CC13E5B00E517C7 /* Build configuration list for PBXNativeTarget "tbcp" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286D71CC13E5B00E517C7 /* Debug */,
+                               271286D81CC13E5B00E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
                };
-               72F75A641336F9A3004BB496 /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       buildSettings = {
-                               COMBINE_HIDPI_IMAGES = YES;
-                               EXECUTABLE_PREFIX = "";
-                               INSTALL_PATH = /usr/lib;
-                               PRODUCT_NAME = "$(TARGET_NAME)";
-                       };
-                       name = Release;
+               271286F01CC13F2000E517C7 /* Build configuration list for PBXNativeTarget "mailto" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               271286F11CC13F2000E517C7 /* Debug */,
+                               271286F21CC13F2000E517C7 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
                };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-               270CCDAF135E3C9E00007BE2 /* Build configuration list for PBXNativeTarget "testmime" */ = {
+               271287001CC13F3F00E517C7 /* Build configuration list for PBXNativeTarget "rss" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               270CCDAD135E3C9E00007BE2 /* Debug */,
-                               270CCDAE135E3C9E00007BE2 /* Release */,
+                               271287011CC13F3F00E517C7 /* Debug */,
+                               271287021CC13F3F00E517C7 /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
-               273BF6C31333B5000022CAAB /* Build configuration list for PBXNativeTarget "testcups" */ = {
+               271287151CC13FAB00E517C7 /* Build configuration list for PBXNativeTarget "mantohtml" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               273BF6C41333B5000022CAAB /* Debug */,
-                               273BF6C51333B5000022CAAB /* Release */,
+                               271287161CC13FAB00E517C7 /* Debug */,
+                               271287171CC13FAB00E517C7 /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
-               273BF6DA1333B6270022CAAB /* Build configuration list for PBXAggregateTarget "Tests" */ = {
+               271287291CC140BE00E517C7 /* Build configuration list for PBXNativeTarget "genstrings" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               273BF6DB1333B6270022CAAB /* Debug */,
-                               273BF6DC1333B6270022CAAB /* Release */,
+                               2712872A1CC140BE00E517C7 /* Debug */,
+                               2712872B1CC140BE00E517C7 /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
-               274EE2681A03EDCA003213D1 /* Build configuration list for PBXNativeTarget "ippinfra" */ = {
+               273BF6C31333B5000022CAAB /* Build configuration list for PBXNativeTarget "testcups" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               274EE2691A03EDCA003213D1 /* Debug */,
-                               274EE26A1A03EDCA003213D1 /* Release */,
+                               273BF6C41333B5000022CAAB /* Debug */,
+                               273BF6C51333B5000022CAAB /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
-               274EE2791A03EDCB003213D1 /* Build configuration list for PBXNativeTarget "ippproxy" */ = {
+               273BF6DA1333B6270022CAAB /* Build configuration list for PBXAggregateTarget "Tests" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
-                               274EE27A1A03EDCB003213D1 /* Debug */,
-                               274EE27B1A03EDCB003213D1 /* Release */,
+                               273BF6DB1333B6270022CAAB /* Debug */,
+                               273BF6DC1333B6270022CAAB /* Release */,
                        );
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
+               724FA5321CC0370C0092477B /* Build configuration list for PBXNativeTarget "testadmin" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5331CC0370C0092477B /* Debug */,
+                               724FA5341CC0370C0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA5451CC037370092477B /* Build configuration list for PBXNativeTarget "testarray" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5461CC037370092477B /* Debug */,
+                               724FA5471CC037370092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA5581CC037500092477B /* Build configuration list for PBXNativeTarget "testcache" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5591CC037500092477B /* Debug */,
+                               724FA55A1CC037500092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA56B1CC037670092477B /* Build configuration list for PBXNativeTarget "testconflicts" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA56C1CC037670092477B /* Debug */,
+                               724FA56D1CC037670092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA57E1CC037810092477B /* Build configuration list for PBXNativeTarget "testfile" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA57F1CC037810092477B /* Debug */,
+                               724FA5801CC037810092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA5911CC037980092477B /* Build configuration list for PBXNativeTarget "testi18n" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5921CC037980092477B /* Debug */,
+                               724FA5931CC037980092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA5A41CC037AA0092477B /* Build configuration list for PBXNativeTarget "testipp" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5A51CC037AA0092477B /* Debug */,
+                               724FA5A61CC037AA0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA5B71CC037C60092477B /* Build configuration list for PBXNativeTarget "testlang" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5B81CC037C60092477B /* Debug */,
+                               724FA5B91CC037C60092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA5CA1CC037D90092477B /* Build configuration list for PBXNativeTarget "testlpd" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5CB1CC037D90092477B /* Debug */,
+                               724FA5CC1CC037D90092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA5DE1CC037F00092477B /* Build configuration list for PBXNativeTarget "testoptions" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5DF1CC037F00092477B /* Debug */,
+                               724FA5E01CC037F00092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA5F21CC038040092477B /* Build configuration list for PBXNativeTarget "testppd" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA5F31CC038040092477B /* Debug */,
+                               724FA5F41CC038040092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6061CC038190092477B /* Build configuration list for PBXNativeTarget "testpwg" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6071CC038190092477B /* Debug */,
+                               724FA6081CC038190092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA61A1CC0382B0092477B /* Build configuration list for PBXNativeTarget "testraster" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA61B1CC0382B0092477B /* Debug */,
+                               724FA61C1CC0382B0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA62E1CC038410092477B /* Build configuration list for PBXNativeTarget "testsnmp" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA62F1CC038410092477B /* Debug */,
+                               724FA6301CC038410092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6421CC038560092477B /* Build configuration list for PBXNativeTarget "testspeed" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6431CC038560092477B /* Debug */,
+                               724FA6441CC038560092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6561CC0386E0092477B /* Build configuration list for PBXNativeTarget "testsub" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6571CC0386E0092477B /* Debug */,
+                               724FA6581CC0386E0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA66D1CC038A50092477B /* Build configuration list for PBXNativeTarget "test1284" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA66E1CC038A50092477B /* Debug */,
+                               724FA66F1CC038A50092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6801CC038BD0092477B /* Build configuration list for PBXNativeTarget "testbackend" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6811CC038BD0092477B /* Debug */,
+                               724FA6821CC038BD0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6941CC038D90092477B /* Build configuration list for PBXNativeTarget "testsupplies" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6951CC038D90092477B /* Debug */,
+                               724FA6961CC038D90092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6A71CC039200092477B /* Build configuration list for PBXNativeTarget "testcgi" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6A81CC039200092477B /* Debug */,
+                               724FA6A91CC039200092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6BA1CC0393E0092477B /* Build configuration list for PBXNativeTarget "testhi" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6BB1CC0393E0092477B /* Debug */,
+                               724FA6BC1CC0393E0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6CE1CC0395A0092477B /* Build configuration list for PBXNativeTarget "testtemplate" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6CF1CC0395A0092477B /* Debug */,
+                               724FA6D01CC0395A0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6E71CC039DE0092477B /* Build configuration list for PBXNativeTarget "testnotify" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6E81CC039DE0092477B /* Debug */,
+                               724FA6E91CC039DE0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA6FC1CC03A210092477B /* Build configuration list for PBXNativeTarget "testcatalog" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA6FD1CC03A210092477B /* Debug */,
+                               724FA6FE1CC03A210092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA70C1CC03A490092477B /* Build configuration list for PBXNativeTarget "libcupsimage_static" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA70D1CC03A490092477B /* Debug */,
+                               724FA70E1CC03A490092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA71C1CC03A990092477B /* Build configuration list for PBXNativeTarget "libcupsmime_static" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA71D1CC03A990092477B /* Debug */,
+                               724FA71E1CC03A990092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA73D1CC03AAF0092477B /* Build configuration list for PBXNativeTarget "libcupsppdc_static" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA73E1CC03AAF0092477B /* Debug */,
+                               724FA73F1CC03AAF0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA74C1CC03ACC0092477B /* Build configuration list for PBXNativeTarget "libcupscgi" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA74D1CC03ACC0092477B /* Debug */,
+                               724FA74E1CC03ACC0092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               724FA7681CC03AF60092477B /* Build configuration list for PBXNativeTarget "libcupscgi_static" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               724FA7691CC03AF60092477B /* Debug */,
+                               724FA76A1CC03AF60092477B /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
                7258EAE9134594C4009286F1 /* Build configuration list for PBXNativeTarget "rastertopwg" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
diff --git a/xcode/README.txt b/xcode/README.txt
new file mode 100644 (file)
index 0000000..44009c0
--- /dev/null
@@ -0,0 +1,5 @@
+README - CUPS on macOS/iOS - 2016-08-08
+---------------------------------------
+
+This directory contains an Xcode project for building CUPS for macOS and the
+CUPS library for iOS.
index 5baa667..54117ac 100644 (file)
@@ -1,9 +1,7 @@
 /*
- * "$Id: config.h 12998 2015-12-02 15:09:04Z msweet $"
- *
  * Configuration file for CUPS and Xcode.
  *
- * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2007-2016 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
 #define _CUPS_CONFIG_H_
 
 #include <AvailabilityMacros.h>
+#include <TargetConditionals.h>
+
 
 /*
  * Version of software...
  */
 
-#define CUPS_SVERSION "CUPS v2.1.2"
-#define CUPS_MINIMAL "CUPS/2.1.2"
+#define CUPS_SVERSION "CUPS v2.2"
+#define CUPS_MINIMAL "CUPS/2.2"
 
 
 /*
  * Do we have PAM stuff?
  */
 
-#ifndef HAVE_LIBPAM
-#define HAVE_LIBPAM 1
-#endif /* !HAVE_LIBPAM */
-
+#if TARGET_OS_OSX
+#  define HAVE_LIBPAM 1
 /* #undef HAVE_PAM_PAM_APPL_H */
-#define HAVE_PAM_SET_ITEM 1
-#define HAVE_PAM_SETCRED 1
+#  define HAVE_PAM_SET_ITEM 1
+#  define HAVE_PAM_SETCRED 1
+#endif /* TARGET_OS_OSX */
 
 
 /*
  * What Security framework headers do we have?
  */
 
-#define HAVE_AUTHORIZATION_H 1
+#if !TARGET_OS_IOS
+#  define HAVE_AUTHORIZATION_H 1
+#endif /* !TARGET_OS_IOS */
+
 /* #undef HAVE_SECBASEPRIV_H */
 #define HAVE_SECCERTIFICATE_H 1
 /* #undef HAVE_SECIDENTITYSEARCHPRIV_H */
  * Do we have the cssmErrorString function?
  */
 
-#define HAVE_CSSMERRORSTRING 1
+#if !TARGET_OS_IOS
+#  define HAVE_CSSMERRORSTRING 1
+#endif /* !TARGET_OS_IOS */
 
 
 /*
  * Do we have the SecGenerateSelfSignedCertificate function?
  */
 
-/* #undef HAVE_SECGENERATESELFSIGNEDCERTIFICATE */
+#if TARGET_OS_IOS
+#  define HAVE_SECGENERATESELFSIGNEDCERTIFICATE 1
+#endif /* TARGET_OS_IOS */
 
 
 /*
  * Do we have the SecKeychainOpen function?
  */
 
-#define HAVE_SECKEYCHAINOPEN 1
+#if !TARGET_OS_IOS
+#  define HAVE_SECKEYCHAINOPEN 1
+#endif /* !TARGET_OS_IOS */
 
 
 /*
  * Do we have (a working) SSLSetEnabledCiphers function?
  */
 
-#ifdef AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER
-#  define HAVE_SSLSETENABLEDCIPHERS 1
-#endif /* AVAILABLE_MAC_OS_X_VERSION_10_11_AND_LATER */
+#define HAVE_SSLSETENABLEDCIPHERS 1
 
 
 /*
 
 
 /*
+ * Do we have on-demand support (launchd/systemd/upstart)?
+ */
+
+#define HAVE_ONDEMAND 1
+
+
+/*
  * Do we have launchd support?
  */
 
 #define HAVE_LAUNCH_H 1
 #define HAVE_LAUNCHD 1
-#define HAVE_LAUNCH_ACTIVATE_SOCKET 1
 
 
 /*
- * Various scripting languages...
+ * Do we have systemd support?
  */
 
-#define HAVE_JAVA 1
-#define CUPS_JAVA "/usr/bin/java"
-#define HAVE_PERL 1
-#define CUPS_PERL "/usr/bin/perl"
-#define HAVE_PHP 1
-#define CUPS_PHP "/usr/bin/php"
-#define HAVE_PYTHON 1
-#define CUPS_PYTHON "/usr/bin/python"
+/* #undef HAVE_SYSTEMD */
 
 
 /*
- * Location of the poppler/Xpdf pdftops program...
+ * Do we have upstart support?
  */
 
-/* #undef HAVE_PDFTOPS */
-/* #undef HAVE_PDFTOPS_WITH_ORIGPAGESIZES */
-#define CUPS_PDFTOPS   "/usr/bin/pdftops"
+/* #undef HAVE_UPSTART */
 
 
 /*
- * Location of the Ghostscript gs program...
+ * Various scripting languages...
  */
 
-/* #undef HAVE_GHOSTSCRIPT */
-/* #undef HAVE_GHOSTSCRIPT_PS2WRITE */
-#define CUPS_GHOSTSCRIPT "/usr/bin/gs"
+#if !TARGET_OS_IOS
+#  define HAVE_JAVA 1
+#  define CUPS_JAVA "/usr/bin/java"
+#  define HAVE_PERL 1
+#  define CUPS_PERL "/usr/bin/perl"
+#  define HAVE_PHP 1
+#  define CUPS_PHP "/usr/bin/php"
+#  define HAVE_PYTHON 1
+#  define CUPS_PYTHON "/usr/bin/python"
+#endif /* !TARGET_OS_IOS */
 
 
 /*
  * Do we have ApplicationServices public headers?
  */
 
-#define HAVE_APPLICATIONSERVICES_H 1
+#if !TARGET_OS_IOS
+#  define HAVE_APPLICATIONSERVICES_H 1
+#endif /* !TARGET_OS_IOS */
 
 
 /*
  * Do we have the SCDynamicStoreCopyComputerName function?
  */
 
-#define HAVE_SCDYNAMICSTORECOPYCOMPUTERNAME 1
+#if !TARGET_OS_IOS
+#  define HAVE_SCDYNAMICSTORECOPYCOMPUTERNAME 1
+#endif /* !TARGET_OS_IOS */
 
 
 /*
- * Do we have OS X 10.4's mbr_XXX functions?
+ * Do we have the getgrouplist() function?
+ */
+
+#define HAVE_GETGROUPLIST 1
+
+
+/*
+ * Do we have macOS 10.4's mbr_XXX functions?
  */
 
 #define HAVE_MEMBERSHIP_H 1
  * Do we have the GSSAPI support library (for Kerberos support)?
  */
 
-#define HAVE_GSS_ACQUIRE_CRED_EX_F 1
-#define HAVE_GSS_C_NT_HOSTBASED_SERVICE 1
-#define HAVE_GSS_GSSAPI_H 1
+#if !TARGET_OS_IOS
+#  define HAVE_GSS_ACQUIRE_CRED_EX_F 1
+#  define HAVE_GSS_C_NT_HOSTBASED_SERVICE 1
+#  define HAVE_GSS_GSSAPI_H 1
 /* #undef HAVE_GSS_GSSAPI_SPI_H */
-#define HAVE_GSSAPI 1
+#  define HAVE_GSSAPI 1
 /* #undef HAVE_GSSAPI_GSSAPI_H */
 /* #undef HAVE_GSSAPI_H */
+#endif /* !TARGET_OS_IOS */
 
 
 /*
 
 
 /*
- * Location of OS X localization bundle, if any.
+ * Location of macOS localization bundle, if any.
  */
 
-#define CUPS_BUNDLEDIR "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A"
+#if !TARGET_OS_IOS
+#  define CUPS_BUNDLEDIR "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A"
+#endif /* !TARGET_OS_IOS */
 
 
 /*
@@ -736,7 +761,3 @@ static __inline int _cups_abs(int i) { return (i < 0 ? -i : i); }
 #endif /* !HAVE_ABS && !abs */
 
 #endif /* !_CUPS_CONFIG_H_ */
-
-/*
- * End of "$Id: config.h 12998 2015-12-02 15:09:04Z msweet $".
- */